
What is abstraction
Developers use the word "abstraction" regularly, yet there is limited understanding of what it means. It's not writing an abstract class or method.
Abstraction is one of the most important techniques for achieving decoupling.Developers use the word "abstraction" regularly, yet there is limited understanding of what it means. It's not writing an abstract class or method.
Abstraction is one of the most important techniques for achieving decoupling.There are many ways to create a Modulith, and I will introduce you to one of them. The important parts that we will discuss are: Application layer, Business modules, Facades / Repositories, Event bus/broker, CQ Router and Utilities.
The monolithic style has a bad reputation, but it is useful for smaller applications. The problem is not the monolith itself, but rather how it is written.
Why choose a monolith over a distributed architecture, such as microservices?
Commercial software development is more than just „write the code we tell you to write“. Creating software that can be sustained for years while adapting to changing markets and developing business models requires an understanding of evolutionary architectural approaches.
Architecture cannot be designed to remain the same when circumstances change. While there is no such thing as architecture that can withstand years of development, there are ways to design architecture that can handle changes.
Personally, I prefer leadership to management. You want the people on your team to think for themselves and eventually become a self-managing. However, they need a leader to guide them.
Leadership means possessing the skills, decisiveness, and values that inspire others to follow.
What is your company optimized for? Is it optimized for middle management and bureaucracy? If so, delivering value will suffer.
What organizational constraints are limiting your productivity? Focusing your organizational structure on the value your company creates will make your people, customers, and CFO happy.
There's a difference between designing an MVP, software that you'll develop for three months and hand over to the customer, and software that you use internally or a software project that you want to maintain for years and sell to customers.
Developing software to find a market fit is different from developing software that already has 10,000 customers.
Understanding these differences is essential for success and requires strategic thinking and specific changes in development stages.