You Don’t Need Scrum
I love iterative work. In life, with any new endeavor, you will always iterate. Whether trying a new hobby, being handy around the house, or tackle a new feature in a piece of software, it is natural to learn by doing.
In business we hear about Agile methodologies all the time, everyone wants to systematize iterative development and be able to have some progress reporting certainty. And the most popular version of Agile is Scrum.
I’m not a big fan of the Scrum. It often adds overhead and waste. There are three key reasons I think that Scrum, as it is most often implemented, fails to address the needs of software development:
- Adherence to ceremonies and paperwork shows a lack of flexibility and adds unavoidable overhead to every cycle.
- Scrum cannot take into account the unknowns of iterative development. To attempt to tame unknowns it asks the doers to time-box unknowns into fixed chunks. This encourages doing as little as possible to avoid possible consequences of being unable to finish work.
- Lack of ownership by the team. The myriad of external inputs and the focus on reporting incentivizes team members to blame the process for missed deadlines or poorly understood requirements.
Software development is a process of taking unknowns and turning them into known problems, then solving those. The final implementation can often be estimated quite well, and is the least of the time required to produce the product. The initial discovery is inherently a messy creative process that Scrum attempts to tame, but ultimately simply neuters.