The extension and maintenance of a system requires a good software structure. Due to the complex nature of software development, the system structure whose architecture and design have been planned and the system structure that is developed may differ from each other. This inconsistency may result in the use of anti-patterns as a solution to the emerging problems, which contrarily causes greater problems. This article will present 10 commonly used anti-patterns in Software Engineering.

1. First things first: What is “Anti-Pattern“?

Anti-patterns are also called “bad practices”, “dark patterns”, or “pitfalls”. The anti-pattern concept has been widely used since Bell Labs programmer Andrew Koenig mentioned it in…


In this blog post, I will provide a brief overview of Monolithic and Microservice architectures and focus on 11 reasons why you should prefer using Microservice architecture.

Monolith vs. Microservices

Monolithic Architecture

According to ITS, a monolithic architecture is defined as;

Monolithic architecture is the traditional unified model for the design of a software program. A monolithic application is an application in which the user interface, business rules, and data access code are combined into a single executable program and deployed on one platform. It operates independently from other applications, performing every step of the process needed to complete the entire business function. It does…


Facade Design Pattern in PHP

Facade Design Pattern is one of the structural design patterns in Software Engineering. Provides a simplified, higher-level interface to a subsystem. Clients can talk to the facade rather than individual classes in the subsystem.

What is the Facade Design Pattern?

Gang of Four (GOF) defines it as:

Provide a unified interface to a set of interfaces in a subsystem. Facade Pattern defines a higher-level interface that makes the subsystem easier to use.

Suppose we have an application with a set of operations to send a message to a Notification Server, like connecting, authenticating, sending, and disconnecting.

So we will need to perform these operations whenever we…


Observer Design Pattern is one of the behavioral design patterns in Software Engineering. The observer design pattern is useful when you are concerned with the state of an object and want to be notified of any changes. In the observer pattern, the object that monitors the state of another object is called the Observer, and the tracked object is called the Subject.

What is the Observer Design Pattern?

Gang of Four (GOF) defines it as:

Define a one-to-many dependency between objects so that when one object changes state, all its dependents are notified and updated automatically.

Subject includes a list of observers to notify any changes…

Barış Çimen

PhDc, Senior Software Engineer

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store