Hacker News new | ask | show | jobs
by jakevoytko 5701 days ago
For reasonably sized projects, "Show the solution" is the most important step. It is the first time your wishlist meets real constraints. It's not as important as "release early and often," but all roads lead through your software architecture.

Draw your modules on a whiteboard, connect them, and specify the data that flows between the modules. A prototype may also work, but I've never tried. Convince yourself and the rest of your team that this covers all of your intended functionality. Redraw until it does. This shouldn't take long - if your work is small or well-specified, you may spend 10 minutes at the board. This exposes early misunderstandings between members of your team, acts as an Early Warning System for timesinks or fuzzy features, lets you partition early work, and lets you cheaply iterate on technical solutions.

If you don't do this, this will be done on an individual basis, and misunderstandings will be turned into code. Common mistakes, like merging modules that should be separated, will be harder to fix as the project goes on.