Software development methodology is evolving very fast and every team has found version that works well in current context.
Software development methodology is going through continuous improvement.
The_Pragmatic_Programmer book talks about Trace bullet approach and as per that it comes down to feedback. The more quickly you get feedback, less change is required to hit the target.
I have used Tracer Bullet approach through out my career with good success.
I will share another approach or mindset of software development that can be used in some scenario to build better product and create value.
Explore or Discovery
Many time as team you have to find what is the next feature you should be building that will help in increasing adoption of product.
So i call this as Explore or Discover phase and this phase of development has very different goal and trade off. This phase means that you have to move fast, cut some corners to get feedback. This phase will not have enough tests, documentation, code quality is not good etc.
Important thing about this phase is you are actively collecting feedback on whether this is the next big idea your team will be investing.
In this phase you have to make sure you gain more than loose, so timebox discovery phase to keep track on resource that is consumed.
Outcome of successful discovery puts you in Growth phase and in many case this will be steep growth, but every unsuccessful outcome has lots of signal on next exploration.
You Build to learn in this phase and once you learned then move to next phase or start another discovery.
Growth Phase
This phase is outcome of successful discovery and now you have found the next feature that market or your target audience need.
Trade off for this phase is very different from Explore phase, you have to stabilized feature , do changes based on feedback so users who have shown interest in idea are still engaged. Users who got on-boarded work like your sponsor, so keep them in loop.
Interesting things about this phase is your team will be in war room type of situation, everyone is trying to get over huddles and get feature out.
Word of caution this phase very intense and demanding. This phase is the real "Sprint" phase not the agile sprint! putting extra hours has good returns.
Another thing to watch out is to be persistent in exploiting maximum of new feature but many time team drops the ball and go back to discovery phase.
I would say this phase also puts design pressure on team and you can refer to design-pressure-on-engineering-team post that talks about it.
Successful outcome of this phase is Expand phase. Team is exhausted after this phase but very motivated.
Expand Phase
Welcome to phase that requires building software in the way we learn in text book, this is the phase where engineering discipline are very important because solution has to be scalable, maintainable , reliable etc.
Now you can go to management and ask for more funds to get servers , expand team etc because this idea will generate some profit.
Don't build product like discovery phase in this stage otherwise you will become victim of your own success, below image should be good example of it.
Conclusion
All of these phases has very different constraint and trade off and it is very important to know that, expand phase can't be managed like explore phase or vise versa and i have also found that engineering disciplined are very very different in these phase, so you need team that is aligned with mindset. If you get your team wrong then it can really very challenging to execute phase.
It is fascinating to see that our industry keeps on evolving and new development methodology are found.
It is much more than Agile or scrum.
I want to end with quote
As engineering team we should do continuous exploration and exploration is not linear process.
Some of other post on software development that you might interesting
need-driven-software-development-using
broken-promise-of-agile
cargo-cult-innovation-center
I will be happy to learn about new ways of building software, so please share it!
If you like the post then you can follow me on twitter.
Software development methodology is going through continuous improvement.
The_Pragmatic_Programmer book talks about Trace bullet approach and as per that it comes down to feedback. The more quickly you get feedback, less change is required to hit the target.
I have used Tracer Bullet approach through out my career with good success.
I will share another approach or mindset of software development that can be used in some scenario to build better product and create value.
Explore or Discovery
Many time as team you have to find what is the next feature you should be building that will help in increasing adoption of product.
So i call this as Explore or Discover phase and this phase of development has very different goal and trade off. This phase means that you have to move fast, cut some corners to get feedback. This phase will not have enough tests, documentation, code quality is not good etc.
Important thing about this phase is you are actively collecting feedback on whether this is the next big idea your team will be investing.
In this phase you have to make sure you gain more than loose, so timebox discovery phase to keep track on resource that is consumed.
Outcome of successful discovery puts you in Growth phase and in many case this will be steep growth, but every unsuccessful outcome has lots of signal on next exploration.
You Build to learn in this phase and once you learned then move to next phase or start another discovery.
Growth Phase
This phase is outcome of successful discovery and now you have found the next feature that market or your target audience need.
Trade off for this phase is very different from Explore phase, you have to stabilized feature , do changes based on feedback so users who have shown interest in idea are still engaged. Users who got on-boarded work like your sponsor, so keep them in loop.
Interesting things about this phase is your team will be in war room type of situation, everyone is trying to get over huddles and get feature out.
Word of caution this phase very intense and demanding. This phase is the real "Sprint" phase not the agile sprint! putting extra hours has good returns.
Another thing to watch out is to be persistent in exploiting maximum of new feature but many time team drops the ball and go back to discovery phase.
I would say this phase also puts design pressure on team and you can refer to design-pressure-on-engineering-team post that talks about it.
Successful outcome of this phase is Expand phase. Team is exhausted after this phase but very motivated.
Expand Phase
Welcome to phase that requires building software in the way we learn in text book, this is the phase where engineering discipline are very important because solution has to be scalable, maintainable , reliable etc.
Now you can go to management and ask for more funds to get servers , expand team etc because this idea will generate some profit.
Don't build product like discovery phase in this stage otherwise you will become victim of your own success, below image should be good example of it.
Conclusion
All of these phases has very different constraint and trade off and it is very important to know that, expand phase can't be managed like explore phase or vise versa and i have also found that engineering disciplined are very very different in these phase, so you need team that is aligned with mindset. If you get your team wrong then it can really very challenging to execute phase.
It is fascinating to see that our industry keeps on evolving and new development methodology are found.
It is much more than Agile or scrum.
I want to end with quote
As engineering team we should do continuous exploration and exploration is not linear process.
Some of other post on software development that you might interesting
need-driven-software-development-using
broken-promise-of-agile
cargo-cult-innovation-center
I will be happy to learn about new ways of building software, so please share it!
If you like the post then you can follow me on twitter.