How to Navigate Uncertainty in Software Development
Software projects usually go like this:
- You never know everything upfront
- But… you still have to start
- You figure things out along the way
It’s quite like any real time strategy game with fog of war, like Starcraft. You can only see so far. The map unveals as you go along…
Usually this is even harder, because:
- You don’t know the distance
- The clients change positions
- There is terrain
The team only aims so far
Then you make first steps. Or, you can say “Sprints”.
Problem: if your sprint takes too long, you can go too far into the wrong direction.
After every sprint you need course correction
Slowly you approach the goal. Frequent demos help see the target clearly. Having a good product owner helps.
Without it, projects can quickly go sideways: due to misaligned expectations between the client and the development team. This phenomenon, which we call “The Fog of War,” can lead to disastrous consequences if left unchecked.
Sometimes the clients change their mind
If the client changes their mind too often, it’ll take longer.
The client often assumes a clear path to the desired product, while the developer navigates through uncertainty, often taking unexpected turns. When these perspectives clash, the project can quickly derail.
What if you go into the wrong direction?
Refactoring? Or rewrite?
To avoid this fate, it’s essential to provide opportunities for client feedback and course correction throughout the development process. Embracing small, frequent releases allows for continuous alignment between the client’s vision and the developer’s implementation.
Side note: after I made this content, my friend Swizec just sent me an email:
Software development is like kicking a can, Read it here: swizec.com
It’s the same idea, but more encouraging than forging into unknown territory. I guess it depends on how positive minded you are.
In the worst-case scenario, developers may stray too far from the path, requiring major rework. This leads to the dreaded “Refactor Dilemma”: Is it better to start over or try to salvage the existing work?
Think of Your Project Like a Road Trip
To ensure project success, it’s essential to treat your project like a road trip:
- The Journey Matters: Every step of the way needs to be cleared and refined.
- Regular Checkpoints: Ensure you’re on the right track with frequent feedback.
- Reach Your Destination: Together, you can build the product you envisioned.
Let’s learn from each other’s experiences and find ways to navigate the fog of war together. check out my full video here.