Focus on creating a basic end-to-end implementation of a system as quickly as possible.

Software Engineering is a process of exploration.
We start with an Outcome.
Often we think we know how to get there.

But this isn’t our first rodeo…
… we know there will be surprises along the way.

→ We need to find the surprises as soon as possible.

Identify the most essential function that the system must perform.
The minimum viable pathway through the system.

Build this core functionality from start to finish.
Focus on creating something that works.
Once this basic end-to-end functionality is established you’ve found a path…
… and have discovered any surprises along the way.

From here you can:

  • Iterate forward from the initial implementation

  • Take the learnings, and figure out how the implementation could be done better.

In both cases, continue to iterate till you find a solution you are happy with and provides confidence in meeting the Outcome.