We start out by documenting which challenges a system faces. This keeps us focused on implementable solutions that solve real-world problems.
It takes steady communication to get from concept to usable code in the shortest time possible. We expose risks early, adjust quickly, and build flexible systems.
We study our results to understand performance. This makes sure our results solved the intended problems and informs future improvements.