🕸 How Systems are Born and Why They Work 🕸
At the beginning of my career, I was interested in: "how and why did MVC, MVVM, DDD, Clean Architecture, and other architectural patterns appear? And most importantly, why do they work?"
Later, as I moved into entrepreneurship, I started to wonder: why do these specific rules for building a company, dividing responsibilities, defining products, business processes, and so on work?
I found the answer, and the coolest thing is that it applies to absolutely any system: medicine, science, discipline, anything that can be defined as a "methodology", etc.
A system is a set of variations of concepts/objects/actions/etc. that has been repeated and tested in similar situations many times, from which variations that achieve the goal in more than 90% of cases have been extracted.
Therefore, if you correctly weigh the requirements and conditions, choose a ready-made system that fits them, and start following its rules, there is a high chance that it will be at least "acceptable".
Not "ideal", but you will be able to solve tasks.
And so, until the tasks are completed or it's time to choose and use a new system under changed conditions.
So, a startup starts with a general Kanban and an MVC framework monolith on the backend, and over time grows into a set of holocratic circles, each with its own management and development methodology, and a bunch of distributed microservices written using DDD.
And the lesson here is:
If you really want to "completely come up with your own system" (management, business, application architecture, etc.), first, give yourself a good kick in the teeth and try to find and implement (with modifications) an existing system, and if you still feel a strong urge, stronger than the pain in your jaw, then hit yourself again, and only then start inventing something of your own.
But most likely, you will find that a suitable system for your conditions already exists (you are 99% not unique), it just needs to be slightly adjusted to fit your situation.
#architecture #проектирование