Meet Software Design
In plain terms: A plan for building software so that it’s easy to understand and change. You know it when you see it. You may not be able to explain why, but deep down there’s a nagging uneasiness:...

Source: DEV Community
In plain terms: A plan for building software so that it’s easy to understand and change. You know it when you see it. You may not be able to explain why, but deep down there’s a nagging uneasiness: it looks complicated, messy, and just downright hurts the soul. The worst part is when you realize you’re the one who wrote it — and even worse is when you have to work with it. Most of us have been there. If you haven’t, you probably haven’t written enough code yet, but keep going and you will. Here’s something almost every developer eventually discovers: every project starts off great. The codebase is small, everything makes sense, and adding features feels easy. Then, gradually, something changes. Each new feature takes a little longer than the last. A small change breaks something unrelated. You find yourself afraid to touch certain parts of the code. What started as something you were happy with becomes something you dread. Somewhere along the way, the code stopped working for you and s