What is break the project down in system design?
Answers
Answer:
Don't go alone. Try to involve your team-mates as much as possible.
Travel lightweight.
Democracy, but not too much. Sometimes, it's not about what satisfies the biggest number of people, but what hurts the least number of people.
Keep what (needs to be done) and how (it is done) separate.
Learn about Scrum ("what"), XP (Extreme Programming, "how"), Kanban ("how much"), Lean ("what not") and DevOps ("with whom").
Lean also is about flow: For overall efficiency, flow efficiency is usually more important than individual efficiency.
Learn about Software Craftsmanship, Clean Code and Pragmatic Programming.
Good architecture is about maximizing the number of decisions not taken.
Scrum / XP / Lean / Agile is about maximizing the amount of work not done: YAGNI.
The Primary Value of Software is that you can easily change it. That it does what it should do is important but that's only its Secondary Value.
Prefer an iterative and incremental approach, use time boxes for almost everything, especially meetings, make Parkinson's Law your friend because Hofstadter's Law applies.
Balance team structure with an understanding of Conway's Law and Tuckman's Stages of Team Development.
Programming is a quaternity, it is science, engineering, art and craft all at the same time, and those need to be in balance.
Just because Scrum / XP / XYZ is good for someone (including me) doesn't necessarily mean it's good for you / suits your environment. Don't blindly follow the hype, understand it first.
Inspect and Adapt! (Scrum Mantra)
Avoid Duplication - Once and only Once! (XP Mantra) aka DRY - Don't Repeat Yourself aka SPOT - Single Point of Truth