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…

One way to spot a lack of professionalism is missing unit tests in a project. It is frightening how many dev teams do not write any tests and rely only on manual testing. In the following paragraphs, I will try to convince you about the importance of writing unit tests. What are unit tests? Unit tests are the smallest tests you can write. They tend to test different parts of your code (mainly single methods). Unit tests should be very fast so that you can run them often. It is important to stress that they do not test how different…

Two reasons provoked this article – my previous article and a recent Twitter post asking, “How do you learn new technologies?”. In the next paragraphs, I will try to explain how I see learning should happen. Please have in mind that what I suggest is not for total beginners currently learning basics as “if statements” and variables. Young developer with great ideas And not that great ones. When you are inexperienced, everything is new to you. Everything is exciting, and you want to try everything. It is a lot easier to jump on the hype train for something new. Always…

Developer’s path is littered with many difficulties, but believe me, tutorial hell is something that really can ruin your progression and even career. Things are not the same as ten years ago. Now we have tutorials, video tutorials, courses, coding bootcamps literally behind any corner. That, of course, is great, but also it is challenging for beginners. It is challenging in a way that an inexperienced developer who does not have a lot of confidence jumps from tutorial to tutorial seeking something that he will never get – real-business case experience. He will always think that he is not ready…

Optimizing SQL queries can be done in many ways, but the current case that I am going to show you is a little bit different. Last week my direct manager asked me to see why a list of data loads very slow. Also, if it was possible, to optimize it. The data set consisted of around 1000 rows. The load time for all rows was about 7 seconds. Even though each row was an elaborate business entity, that did not justify the load time. As every sane developer could see, there was something wrong. We are using Entity Framework, so…

Often we developers are represented as introverts with a big ego. And, most of the time, that representation is accurate. We prefer to lock ourselves in a dark room with a massive amount of coffee and create complex and beautiful systems. That makes us happy but also boosts our ego. Haven’t you felt like a god after completing a challenging task after 12 hours workday? I bet you have. We all have. Being a god (I hope you got the irony here 😊) with not so developed social skills sometimes causes problems in our relationships at work. One such a…

Microservice Patterns is definitely one of the best books on the topic. In addition to the foundations in building microservice architecture, Chris Richardson provides many specific examples. The author also draws attention to topics that are not mandatory in developing this type of architecture but would be useful in specific cases – Domain-Driven Design, Event Sourcing, and CQRS. The examples given are entirely Java-oriented (Java code, as well as libraries for Java). However, this should stop anyone working with another language and platform. The main ideas are well presented and can be implemented with almost any technology stack. The last…