The most important thing that leads to good architecture is good planning. You need to know where you are going in order to get there.
The best way to move fast and make good architectural decisions is to have early brainstorming conversations in the team on roadmap and where it may go.
If the engineering team gets a feel for the product direction, they can build it to allow flexibility as needed and a solid foundation (where an architect helps).
Here are questions for planning stages to make better decisions:
Where do you see this product going in 3–5 years?
How much throw away work are we creating to just get a first version to market? Is this OK?
Is the team on board with the likelihood of reworking key areas of the product if the first version takes off to make it more stable for high customer adoption?
What specific decisions are we making now that would severely limit the flexibility to change or extend the product at a later stage?
Are there any areas of the product where we can allow for fast paced iteration as an option (usually at the UI layer) while keeping the foundation of the product steady and stable?
From an engineering standpoint, are there areas that will likely be replaced in the future? Can these be separated from the core infrastructure to allow for cleaner replacement?
With foresight, planning and open conversation on product direction, teams make good early decisions that set foundation and direction. Moving fast is important. Getting somewhere is the objective.
Except from Mark Beare



















