Clean Architecture, Clean Code, DDD, TDD... There are so many terms, and it's hard to understand why we need to learn them all. Compared to pure science or computer hardware, software engineering doesn't have a very long history, so why is there so much to know?
Moreover, new libraries, languages, frameworks, and methodologies are constantly emerging, and software engineering is developing and changing so rapidly that it seems impossible to keep up with everything.
When you consistently study development, it's easy to get absorbed in the beautiful aspects of software engineering—well-written code, elegant architecture, excellent performance—and forget what's more important. (What's important anyway?)
Let me ask a few questions.
Why learn architecture?
Because you can organize code according to low coupling and high cohesion principles, allowing you to respond flexibly to changes.
Can't I just write code however I want? Why do I need to follow all these rules?
You can write code however you want. There are moments when quick execution is much more important than elegant design. However, I think you need to be aware of the trade-offs of that choice. Going one step further, I believe the best way to make code maintainable is to not write code at all.
The Rise of the No-Code Movement - SitePoint
The No-Code Movement
Why should we write flexible code?
We write code to solve problems in the real world. In algorithm tests or textbook situations, the methods for solving problems are limited, but in reality, the problems we know can change, problem-solving priorities can be pushed back due to new situations, or we might find ways to solve problems without writing code at all. By writing flexible code, we can adapt well to and handle such changes. (Our time is all precious)
Ultimately, I think what we need to focus on is how to solve problems rather than how "beautifully" we write code. Code is just one of many ways to solve problems. Nevertheless, code solves many problems that modern people face. We can only make it easier, more maintainable, and faster to solve than other methods through the tool of code.
No matter what the problem is, it's always a people problem.
- Jerry Weinberg
Why do good developers care about business too?
One-line summary: Solving real-world problems (in business) is more important than the beauty of code!
I think there's no right answer in code, but there are wrong answers. We find wrong answers from the methods that senior (heavenly) developers used to solve problems, and we choose whether to apply them in a slightly more correct way, make them work(!), or find some compromise in between.
A clever person solves a problem. A wise person avoids it.
- Einstein
The architectures we learn and will learn focus on these problems and suggest ways to solve them more correctly from a software engineering perspective. (As everyone knows, when writing code, we often get absorbed in implementation or basic functionality implementation and miss what's actually important...)
The ubiquitous language that our Bob hyung teaches us
The conclusion is: let's learn architecture together in a fun way and help each other out ㅎㅎ
Useful Articles
About Code Readability - 1. Introduction and Principles - LINE ENGINEERING