Agile methodologies have been trending up and down (but mostly up) in the last two decades. Agile is no longer for software development only; creative teams “go agile” in businesses ranging from graphic design to semiconductor engineering. I had the opportunity to implement agile processes in various settings and learned that it works well if you keep one important principle in mind, one that is conspicuously missing from the Agile Manifesto.
My version of Agile emphasizes the importance of this rule above all others: Don’t waste time. The ultimate goal of implementing any business process is to increase efficiency in terms of time and resources. Considering a given team with fixed resources, time is the most significant variable you can control.
I believe in optimizing for the outcome, not for the process, and am skeptical about any prescribed processes. Agile is “for the people, by the people”. As such, the people (engineers, in most cases) should have the last word on how the process works:
- Sprints: how long should the sprints be? should they all have the same length and purpose? should they even be time-bounded?
- Estimations: how to estimate task sizes? points (and if so, how much is one point), hours, days, or no estimates at all?
- Meetings: how often should the team meet? what structure will meetings have, if any?
- Scrum master: are they necessary?
- Product owner: is he/she a product manager? an engineer? or maybe a QA person? The notion that only product managers represent the voice of the customer is overrated. Everybody can (and should) do it. Then again, business decisions – in this context – are for product managers to make.
At the end of the day, the goal is not to please the “agile gods” by following a rigid set of rules. The goal is to move faster and more efficiently, ultimately creating a more profitable product. This can’t be fulfilled by sticking to some “best practices” just because someone wrote a book or a blog post on the subject (including this one). It can only be done through a candid discussion with the team to hash out the options and find a methodology that works best for everyone. The process should then be optimized until no more inefficiency can be squeezed out of it, with one primary goal in mind: don’t waste time!