I’ve been reflecting for a while about what is the key success factors of creating great products. What is the key enabler? How do we eliminate waste of time? How do we avoid sour surprises late in this creative process? How can we make it as fun as possible?
I’ve arrived at a concept. A flow. It’s based on what I’ve seen in the successful projects I’ve been part of and is now the way I work. This is not a “new lean” or “new agile”. It’s not a new software development paradigm. I do think it has a place in the creative flow for both individuals and teams, and it works great with agile:
- Prototype until you know what you’re building
- Lay a solid foundation
- Build something awesome
1. The Prototype Phase
The prototype phase is all about creative freedom. Whether it’s about how to solve a customer case or how to build your next startup product this is where you try it out without getting caught up in technicalities and time-wasters. Use tools you’re familiar with, this is key.
If something takes time — drop it for now or simplify it. The goal is to give whatever you’re creating a good run-through, so that you understand what you’re building and know what challenges lie ahead.
You should be able to demo this, at least internally. After this you should have a much better view of how advanced your project is and how long it will take.
2. The Foundation Phase
The foundation phase is all about setting up a solid foundation that you can build quickly on. This involves choosing the right tools for the job, setting up infrastructure and processes that ensure that you and your team can cram out as much quality stuff in as short period of time as possible. If you’re into TDD this is where you start TDDing.
Focus on DevOps, architecture and make decisions that based on your experience from the prototype phase will work. It might involve throwing everything from the prototype phase away, in fact you should probably consider doing just that.
3. The Build Phase
The build phase is where you and your team are able to put out as much quality features as possible in as short period of time as possible. If a new feature requires more creative freedom — move back to the first phase before ironing out the infrastructure for that feature. If you see time wasted on infrastructure or tests — or a drop in quality; take another look at the foundation phase and see what adjustments you can do to boost productivity and quality.
Basically the first two phases is just about making the build phase as efficient and fun as possible. The build phase is where you’ll put in most time so make sure the first two makes it as smooth as possible.
To be continued..
This is an introductory post. I will dig deeper into this process the following weeks. Some of the subjects I plan to write about are:
- Key players in each phase
- Software tips and techniques to assist this flow
- I might throw in a few case studies from actual projects