Do the simplest thing that could possibly work
It’s surprising how far you can take this piece of advice. I genuinely think you can do this all the time. You can follow this approach for fixing bugs, for maintaining existing systems, and for architecting new ones. A lot of engineers design by trying to think of the “ideal” system: something well-factored, near-infinitely scalable, elegantly distributed, and so on. I think this is entirely the wrong way to go about software design. Instead, spend that time understanding the current system deeply, then do the simplest thing that could possibly work. System design requires competence with a lot of different tools: app servers, proxies, databases, caches, queues, and so on. As they gain familiarity with these tools, junior engineers naturally want to use them. It’s fun to construct systems out of many different components! And it feels very satisfying to draw boxes and arrows on a whiteboard - like you’re doing real engineering. However, as with many skills, real mastery often involves
When designing software systems, do the simplest thing that could possibly work. It’s surprising how far you can take this piece of advice. I genuinely think you can do this all the time . You can follow this approach for fixing bugs, for maintaining existing systems, and for architecting new ones. A lot of engineers design by trying to think of the “ideal” system: something well-factored, near-infinitely scalable, elegantly distributed, and so on. I think this is entirely the wrong way to go about software design. Instead, spend that time understanding the current system deeply, then do the s
Explore this link on the map →related reading
- Everything I know about good system designseangoedecke.com
- Nobody Gets Promoted for Simplicity – Terrible Softwareterriblesoftware.org
- Simple Made Easy - InfoQinfoq.com
- Software Architecture is Overrated, Clear and Simple Design is Underrated - The Pragmatic Engineerblog.pragmaticengineer.com
- Simplicity is An Advantage but Sadly Complexity Sells Bettereugeneyan.com
- The Programmer's Paradox: Systems Thinkingtheprogrammersparadox.blogspot.com
- Why Over-Engineering Happens | Yusuf Aytasyusufaytas.com
- In defense of simple architecturesdanluu.com
- Choose Boring Technologyboringtechnology.club
- Things I believe · GitHubgist.github.com
- 20 Things I've Learned in my 20 Years as a Software Engineer - Simple Threadsimplethread.com
- Notes on Distributed Systems for Young Bloods – Something Similarsomethingsimilar.com