CAP theorem is a concept that computer scientist Eric A. Brewer coined during a distributed computing talk in 2000. That’s why it’s also known as Brewer’s theorem. It states that a distributed system cannot have more than two of the following guarantees. ConsistencyHigh availabilityPartition tolerance A proof was published two years later by two MIT professors Nancy Lynch and Seth Gilbert. The term distributed system refers to a network that stores data on many physical or virtual machines (nodes) simultaneously. All cloud applications run on distributed networks; thus, a developer needs to understand how it works. A developer with a…

HTTP is a term that you should be prepared to come across many times in your programming journey. When I was starting as a junior programmer, I didn’t let the abbreviations intimidate me. Even experienced people have to look up some acronyms because new abbreviated technologies emerge every day. The main reason why some newbie programmers never make it in the industry is that they don’t do their research well (or at all). You need to dig deeper than just the definition of these abbreviations. Start by looking at some background of how it started to understand it better. In…

Hello guys! Lately, I don’t have much time for writing, so that’s the reason you haven’t seen any new articles. But I promise this is going to change (drastically). Today I will share with you three steps to take to be a better developer. They are not easy or straightforward. They require time, commitment, and discipline. But if you want to be an excellent professional, you should walk the extra mile. So let’s go! Read the old books These days many developers come from software boot camps, coding academies, or self-taught learning from online resources and experimenting. Don’t get me…

I am often asked where to start if you are learning design patterns. A Strategy pattern is a perfect way to start. It is probably the most straightforward pattern. If I think about it in only a few words, I would say that it is about using composition rather than inheritance. But, let’s consider the basic logic of the Strategy pattern. This behavior is typical in everyday programming that we do not even think about using this design pattern. When we implement an interface, we are already using the strategy pattern. The basic idea is that we are defining an…

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…