Note
- https://www.seangoedecke.com/the-simplest-thing-that-could-possibly-work/
- System design requires a lot of different tools: backend, frontend, database, cache, proxy, queue, etc. As they gain more familiarity with these tools, juniors naturally want to add them up. To them, it’s fun to construct systems out of many different components - feels satisfying to place lego blocks on a whiteboard - like they are doing real engineering.
- Have you ever thought something like “oh, I didn’t realize the problem was that easy” or “oh nice, you don’t actually have to do anything difficult”.
- The industry-standard Rails REST API is great software design, because it gives you exactly what you need for a CRUD app in the most boring way possible. I don’t think any of these are impressive software. But they’re impressive feats of design, because they do the simplest thing that could possibly work.
- Start with the absolute simplest thing, and then only extend it when you have new requirements that force you to.
- When you’re looking at a problem, the first few solutions that come to mind are unlikely the simplest one. Figuring out the simplest solution requires considering many different approaches.
- In other words, it requires doing engineering.
- What is “doing engineering” actually?
- Kim chỉ nam: Simple systems are stable.
- 2 ways to develop software:
- The first is to predict what your requirements might look like six months or a year from now, and then design the best system for that purpose.
- The second is to design the best system for current requirements.
Everything should be made as simple as possible, but not simpler. ~ Einstein
Done
DONE Review and refine questions (separate list/rank most-least) + refactor field
evidence65-70.
71-80.
81-90.
91-100.
- DONE Note lại book reviews