2 May
2010
We have practiced agile in my current startup for 3.5 years we have gotten very good at executing quickly and under conditions of extreme change and uncertainty. Our product development team is considered an organizational success story of consistency and execution excellence... but is it to a fault? While we have done a great job of shifting with the needs of the market, while still maintaining consistent output and consistent improvement, I can't help but feel that a focus on execution (ie - releasing code) which is deeply ingrained in our culture is often detrimental to an objective of product market fit.
Yes - We talk to potential customers, actual customers, we carry out usability testing, and pre-testing of new features before then go into development when possible, but what got me thinking about this was a comment made last week: 'as we grow with more clients, we need to be more careful about how we iterate into new features to ensure they meet a minimum standard of feature readiness for usability'. This comment essentially implied that iterative development and usability is an either-or choice! But why? And then I thought about our culture of execution. For example - how we measure progress of product development in terms of points/features released. Could this be closing our minds to other mechanisms of 'release' and clouding the real goal of finding a way to validate a hypothesis with a customer? What we need is a cultural shift in thinking from a focus on execution to a focus on learning.
Take for instance the Agile scrum board with its focus on execution. In scrum, stories (features etc) don't get counted as done until they pass acceptance tests and the code is ready for release. Once the code is released the team is then on to the next batch hoping that this iteration is taking us down the right path and waiting for feedback while we move on to execute on other things.

Maybe there is a better way... recently I have heard discussions in the lean startup community on how the scrum kanban board could be modified to create a learning focus vs execution focus. It's the idea of adding another column to the kanban for customer validation with specific limits set on how many items can be sitting in that column. Working code is no longer the measure of success, but validated learnings about a change are. This intrigues me. Limits would not allow the team to take on new work until other items can be validated and cleared from the queue. It even has the potential to help ensure that certain things don't even get started until there is a valid mechanism on how it could be validated?
Yes - when something like this is proposed in a culture of execution the response will most likely be 'That will slow us down'? This type of comment is the root of the problem in an execution based culture. If the focus was on learning one would see that this will likely make you go faster.