Every junior developer faces the design patterns, and it seems to be a hard understandable thing at first glance. But! I’ll explain to you further in this article what they are, and you’ll get it. By using design patterns, your software development process will be much easier (and less painful). So, let’s start. What is a pattern? To figure out easily what is the design patterns let’s define what pattern is generally. A pattern is a repeatable element in various life spheres. It can be a sort of color combination, a shape of some object, or a mechanism. According to…

Yesterday I had to explain to a friend (a junior developer) what OAuth (OAuth 2.0) is. As I saw, It is relatively hard for a developer with little experience to grasp the idea behind it. Most of the time, people don’t get the concept behind OAuth 2.0 and OpenID Connect just because they are poorly explained. So in this article, I will try to explain them in the simplest way possible. What is OAuth 2.0? OAuth is an authorization protocol. Please don’t mistake it with an authentication protocol. The sole purpose of OAuth 2.0 is to grant access to resources,…

Stress! The release date is coming. The client is changing the requirements at the last moment. QAs are reporting bugs. Everything breaks. You work long hours, and you still have a ton of work (but meanwhile, you have two meetings you must attend). Sounds familiar, right? So, how do we survive that and keep our sanity? I won’t preach to you how you should meditate, eat healthily, do sports, etc. Of course, these things are essential, but today I want to share my approach with you—my philosophical point of view. Just embrace the stress I know this sounds ludicrous but…

Software development is not about coding. Code is only the way we communicate our intentions to the scrap box under our desk. Software development is about thinking and finding simple solutions to complex problems. We all know this. But also very often we forget it. The wrongest thing you can do is to start coding right after you got a task. It is scary how many people do precisely that. Of course, I don’t mean simple tasks like adding an extra field to a form. In this article, I will share with you how I approach and plan my development…

The last time we talked about software architecture, I introduced you to Layered Architecture. Today we will start with Clean architecture (also called Onion or Ports and adapters architecture) and more specifically domain-driven design. Clean architecture as a concept is significantly more complex than layered architecture. So I decided to split the article into two parts. In today’s article, I will try to explain the idea behind Domain-driven design simply. What is Domain-driven design? We need to understand domain-driven design because it lies in the center of Clean architecture (figuratively and literally). Domain-driven design has its technicalities (that we are…

This one will be short. Yesterday, while I was browsing a programming forum, I came across a statement like this: “… and currently, I am creating some neat abstractions if I need something more in the future…”. This is so wrong! And let me tell you why. Overengineering Overengineering in software development means creating something that is not needed. Something that brings overhead to the development process and inefficiency to the end product. An elementary example of overengineering is if all your applications data can be saved in a 10 line XML file, but you use a SQL database. Predicting…

Layered architecture is the first architectural pattern that we are going to explore. If you haven’t read my article about software architecture, I suggest you do it before continuing with this one. What is a layered architecture? Simply put, the layered architecture pattern’s main idea is to group and isolate system concerns while defining strict communication direction between them. Each group of related modules/classes we call layer. Different layers are encapsulated and depend on each other through abstraction and well-defined interfaces. Layers in this architecture pattern are stacked. The request direction is from the upper layers to the lower layers.…

While writing my series of posts about software architecture, I want to share with you a great book about the topic. The book is Software Architecture in practice 3rd edition by Len Bass, Paul Clements, and Rick Kazman. The book explains the entire process of software architecture design. Some of the topics you will learn are: What is a software architecture, and why it is important;Contexts of software architecture;What are quality attributes, and how to specify them;How to model quality attributes;Designing, implementing, and documenting software architecture;Evaluation of software architecture;Management and economic analysis; The book has a very academic approach, so…

In this series of posts, I will introduce you to the most popular software architecture types. But before we delve into the most common variants, let us talk about software architecture itself. What is software architecture? It is tough to write simply for such a complex topic as software architecture but let me try my best. A software system is made up of individual elements. Elements could be databases, application servers, message brokers, load balancers, etc. Each element has its properties and characteristics. Between these elements, there are relationships. The way we structure these elements and their relationships, we call…

And it is bad I am just writing to say that there will not be an article this week. Some very nasty flu/COVID-19 got me :(. I have not been tested yet because I should wait in a queue for 3-4 hours for a test, but I have all the mild symptoms. I am currently isolated and following the doctors’ recommendations. What bothers me most is the extreme fatigue and muscle pain. I feel like I am hit by a train. Anyway. I plan my next articles to be about the different software architectures. A series of articles on what…