Look around. Think about how your organization gets things done. Is it the most efficient process possible? Doubtful. Is there room for improvement? Always. Are some parts of the process wasteful? Almost certainly.
There are many ways to improve efficiency, and many agile processes tackle the problem head-on. However, there’s always waste – in this case, anything that doesn’t add any value to the product as it would be conceived by its customer.
Part of that waste includes doing work that, upon further reflection, wasn’t needed after all, or which had to be torn out because the requirements changed. That’s why, in order to eliminate waste, you should defer decisions as long as possible – decide something when you have to decide it, and no sooner.
Once you’ve decided what to build (or you’re pretty clear on what the customer wants you to build), build it as quickly as possible. In most cases, the sooner you build it, the sooner the customer (or your business) begins realizing the benefits. Not only that, of course, but the sooner you deliver version 1.0, the sooner your team can send an invoice (if applicable) and then begin working on version 1.1 or version 2.0.
What I’ve described here are some of the principles of lean software development. There are other aspects of lean, but to me the principle of improving efficiency by eliminating waste is essential, and can be broadly applied to every development methodology, from a waterfall-style architecture-first system to the most agile teams. (It’s hard to reconcile architecture-first with decide-as-late-as-possible, but trust me, it can be done.)
If what I’ve described above sounds intriguing, let me refer you to two resources.
The first is “Lean Software Development: An Agile Toolkit,” by Mary and Tom Poppendieck. This Addison-Wesley book, published in 2003, is the best introduction and guide that I’ve encountered.
The second resource is an upcoming SD Times Virtual Conference, in our “Leaders of Agile” series. Kent Beck, Aslam Khan, Henrick Kniberg and I will discuss how to “Improve App-Dev Productivity and Efficiently with Lean Software Development.” It’s Wednesday, Jul. 20, at 1:00pm Eastern, 10:00am Pacific. Please join us!