Software Architecture
Remove the unknowns from your project
with a plan of action
Developing software without an architectural plan is like building a house without an architectural plan. It's impossible to coordinate and there's an endless amount of mistakes to fix.
What is the best server setup?
What is the best database solution?
What is the best language and frameworks to use?
How will CI/CD be implemented?
Where will developer notes / tickets / documentation be stored?
What are the logging standards?
Where will analytics be gathered?
How many days are spent in development?
How is QA handled?
How much time is spent in refactoring?
How is code review done?
How are pull requests handled?
How many meetings are required?
How do you handle unknowns (developers leaving, new client requirements, etc)?
How do you adjust for overworked / underworked developers?
What gets patched and what waits for the next release?
How will user feedback be gathered?
How will crashes / downtime be monitored and what is the plan of action when it happens?
What redundancy systems are in place to prevent crashes / downtime from affecting the user?
How is crash data collected?
What parts of the stack will be required to start developing and when should they be in place?
What placeholders / dummy data can be used so that development can run in parallel?
Who is responsible for what?
What are the development rules every developer must follow?
How will development stay coordinated?
What is the GIT branching strategy?
How is testing implemented?
How are analytics implemented?
What day will software be released?
How will releases be coordinated with marketing / sales / customer service?
Who signs off on the release?
How many alpha and beta testers are needed?
How will customer service tickets be handled?
How is scaling handled?
Who handles release notes?
How will distribution work?