Many companies have adopted or are considering adopting an agile software development approach using the principles of Scrum, Kanban, XP or Lean. Regrettably, their goal is often to reduce time-to-market but agile methods are not designed to reduce development time. These methods are focused on quality and aligning development teams with customers. If time-to-market is reduced, it’s considered to be a bonus.
If saving time is your primary goal, perhaps improving your current development process rather than replacing it with an agile one is a better approach. Have you ever heard of “Lean Production”? It’s a reference to a set of techniques used by manufacturers to minimize cost and maximize value. (See the side bar for a summary.)
You can apply these techniques to software development. Here’s how. Let’s walk through the ten rules of Lean Production as they would apply to managing typical software projects regardless of the underlying management methods.
1. Eliminate Waste – Assess every artifact that the development team generates or consumes. What information is captured and how it is saved? Flag redundant and unnecessary information with the goal of focusing on what really matters. If the team can operate without it, eliminate it!
2. Minimize Inventory – What inventory? Think of the information you collect and the artifacts you produce as inventory. Only save what’s useful and only save it once. Only produce what’s valuable and minimize its production cost.
3. Maximize Production Flow – Business information doesn’t age well. It needs to be made available and consumed as soon as possible. Don’t try to gather all the information you need before making any of it available to others. Pass information and software along as soon as it’s ready.
4. Pull Production from Customer Demand – Okay, but who is the customer? The “customer” may be an individual or corporate buyer. It could also be the sales department or the finance group or whoever needs the software. Allow them to control the flow of new features and functions. Let them pull the software according to their needs.
5. Meet Customer Requirements – Be sure you fully understand what expectations each target group has for the software. What features, workflows, rules and data elements do they need? Focus on what really matters and avoid loading down the software with bells and whistles.
6. Do It Right the First Time – Have the stakeholders, customers, developers and testers work together to minimize defects and rework. Get the software right the first time – before the customer sees the production release.
7. Empower Workers – Allow people to identify and/or fix problems when they spot them. Trace the problem back to the source of the error and take steps to prevent similar problems in the future.
8. Design for Rapid Changeover – Software upgrades and changes are ever present. Good system designs accommodate change by using configuration parameters wherever possible and by building modular components.
9. Partner with Suppliers – Your “suppliers” may be outside vendors or internal groups. Either way, work with them to get what you need, in the form you need it, at the time you need it. If the deliverables you’re receiving don’t meet your needs, make noise! Be heard! Put it in writing! They’ll listen.
10. Create a Continuous Improvement Culture – Keep exploring new ideas. Plan for changes to the current environment. Implement small changes regularly. Verify that changes work as intended. Then do it again. And again. Don’t ever stop.
An agile software development approach may help to implement these rules by enforcing some discipline. However, you need to start with a lean and agile mindset. If you can’t embrace at least seven or eight of the lean ideas above, you’ll be disappointed with any agile approach you adopt.