|
As mentioned in a previous blog post, waste elimination is usually the most obvious and least resistant way to improve value and flow in a product. So I’m just going to jump right into some of the waste factors that are usually easy to identify, evaluate, modify and sustain their solutions in software product development. Not going to cover all forms of waste, just the most common ones. Bugs and Defects. A bug, in simplist terms, is any behavior of the system that do not meet the expectations of the customer. Defects have a bit broader scope of who’s definitions cross into other forms of identifiable waste. A defect may not be a symptom of the product itself, but rather of the team, or communication patters, or materials transportation, or processing and production. Missing a deadline is a defect, but it is a defect of a larger entity than the product itself, same as missing information (most commonly found in requirements gathering, prioritization, feedback loops). Bugs cause rework. Rework is waste. Retest is waste. Every single bug and defect, no matter how large or small, has an impact on the overal production cost of a product, due to having to revisit ideas and code that have been addressed in a previous cycle. Movement of Artifacts and Materials in Excess (Transportation) Unnecessary movements are wasteful activities, and by unnecessary, I mean movements that do not add value. Routing is probably the largest culprit of excess transportation. Routing of materials is usually something that has room to be streamlined and improved and should be looked at promptly. Signature requirements, too many eyes involved, processes out of sync or sequence, lengthy lead times, report approvals, data replication techniques, poor configuration management, lengthy feedback loops; all of these are usually causing too many movements to be involved in order to achieve a goal and end up increase the cost of production. One thing not so obvious? Office layout. Yes, the layout of the facility in which teams work in very often causes excess movement of resources. Think about that one. Wait Waiting overlaps into excess movement a bit, but still has its own caveats. Feedback loops. This is where most software teams have room to improve in waiting. In manufacturing, its usually materials and inventory shortages that cause excess waiting. When you wait, you waste. That’s obvious and simple. Waiting pops up in so, so many ways in software development. Document generation and reviews, bugs and defects, resource shortage (not enough staff), somebody on vacation when collective code ownership is not practiced, no continuous integration, no unit tests, wrong kanban levels, manual and lengthy deployment scenarios, poor workflow… I could go on and on. Usually in software, like mentioned in the beginning of this paragraph, its feedback loops. And more common, is feedback from your own product, not the customer themselves. Feedback in the forms of unit tests, integration tests,...
|