How can we get value from the project quickly?
What could we get away with not building to get to the goal?
Is there anything that can be split into multiple iterative releases?
What have we done in the problem space before?
Are we going to have to re-learn something that someone else has already spent a long time figuring out?
Who knows about the problem space? What do we need to ask them?
Have we built anything like this before?
Who else knows about this? What should we ask them?
What are the main domain concepts we're working with?
- Do we call them different things internally and externally?
- Do different groups call them different things?
What is our plan to make this accessible from the start?
- Are there any interaction patterns we haven't seen before which we'll need to make extra sure to make accessible?
Is our approach local or holistic? before starting the project, have we thought through where generalization is helpful?
Before we start, what refactoring do we need to do?
What code needs to be pulled out of existing pages/components?
What will be the biggest pain points in building this feature?
Are there any places where we'll be bottlenecked on having something upgraded?
Are there any places where we'll be bottlenecked on having two or more things unified?
Which part/story is going to take the longest? Second longest?
Are there any pieces where we'll want to/have to try out new technologies?
Are there any pieces where we'll be pushing our current technologies to their limits?
How could this fail?
Model the domain and interactions formally to try and find surprising unconsidered edge cases.
Does it make sense to sketch out any implicit state machines so we can all be on the same page about how information/capabilities change over time?
Have we accounted for service-boundary failures? e.g., adding killswitches and automatic backoffs. Have we documented these tools for use in emergency response?
What are our performance requirements?
Have we considered STRIDE?