By Chris Durand CTO, Bridge360
Want a guaranteed way to reduce your spend on software development? Do less. Really. Testing too expensive? Test less! Development too expensive? Develop less! Does this sound too good to be true? The good news is that most teams can benefit tremendously from this approach. The trick is to identify what to do less of.
I’ve been enjoying Jeff Sutherland’s new book Scrum: The Art of Doing Twice the Work in Half the Time. Jeff was one of the creators of scrum back in the 1990s and he does a great job of making a case for using scrum in all industries. It’s an easy read and highly recommended.
Regarding waste, Jeff estimated that in the hundreds of clients he has worked with over the years, 85% of the work being done was waste. I took an informal poll of people at an Agile Austin function and the general response was “only 85%”. Wow. If you could figure out how to only do the 15% that actually mattered, what could you do with the other 85% of your work time? Build a new product for your company? Take that training that is in your performance appraisal but you never seem to have time to take? Learn a foreign language? Take time off with your family? Volunteer at a local hospital or animal shelter? The possibilities are endless.
Here are some examples of waste in software organizations:
- Everyone is busy but nothing seems to actually be getting done. People go to meetings, maybe write a few documents, but at the end of the day, there is no working software.
- Endless back-and-forth about bugs. You’ve seen them. Epic page after page of developers and testers arguing about a bug in the comments section of your defect management system. How much customer value does that deliver? Maybe your developer, tester, and business representative should sit down together and figure out what actually needs to be done.
- Doing manual tests that a computer could easily do for you via test automation, or testing the same thing in multiple overlapping places (e.g. testing something both in a unit test and also in an integration test). Test things in one place, and automate it so you don’t have to do it again manually. Leverage the techniques in Agile Testing and design your test automation to be cheap to maintain.
- Developing a bunch of features but not deploying them immediately. Months later when you go to deploy them they have to be rewritten because the system has changed in the meantime or the market has moved on. Either way, there is waste.
- Features get developed with poor initial requirements, so you end up rebuilding the feature a few times to finally get it right. What if you had gotten the requirements correct up front? What if you had solicited feedback earlier from the customer to confirm that you were on the right track instead of delivering a lot of finished code that didn’t meet the customer need?
I’ve personally seen these and many more wasteful activities over and over.
So how do we identify and eliminate waste? Here are five methods:
- Try a lean process framework like kanban or scrum. These frameworks are designed to minimize waste and drive organizational change to improve efficiency, improve transparency, and deliver customer value frequently. If you are already doing scrum or kanban, be sure you are doing it right. Just because you have daily stand up meetings doesn’t mean you are doing scrum. Do things “by the book” until you really know what you are doing. Track metrics (velocity for scrum, cycle time for kanban) and use them to understand your process, drive improvements, and eliminate unnecessary work.
- Establish a culture of continuous improvement. Make it your personal goal to eliminate waste in your organization. You can’t fix everything, but there is always something that can be done better. Imagine how much better things would be if you fixed just one small thing each day or each week. What if everyone on your team did the same?
- Do a monthly meeting to reflect on how you have been doing things and why, and what you might do differently going forward. Whether this is a sprint retrospective in scrum or an informal root cause analysis session of defects reported in the last month, make the time. If you don’t make a conscious effort to make improvements, you’ll keep making the same mistakes you have been making. And post your improvements on the wall so you don’t forget to actually do them.
- Get an executive sponsor to help you eliminate waste. There is someone high up in your organization that hates waste as much as you do. Are you that executive? Tell your team to identify and eliminate waste and report back to you on what they have accomplished and what they need your help eliminating.
- You can learn a lot from reading. Whether it is a book about agile software development, unit testing, or project management, some smart, experienced people have written books about what you do and how you can do your job better. Learn from their example and apply it to what you do every day. I personally shoot for reading at least one work-related book per month.
By the way, fixing this stuff is hard. Waste happens for a reason. Usually it’s because systems are set up in a certain way that made sense at one time or another but no longer make sense. You can’t fix big problems overnight, but there are probably many small problems you can fix next week. And fixing small problems leads to fixing bigger problems. So get cracking, you have a lot of work to not do!