The Seven Wastes in Software Development by Graeme Muir
Contents
The cost of fixing defects and the impact of re-work on the bottom line. The complex nature of software development makes defects inevitable but there are many ways to reduce their frequency such as testing and code reviews. A defect in a safety critical system will incur a cost to fix, and it could also be potentially life-affecting.
The sibling to handoffs is called context switching. In context switching, a programmer is forced to jump from one project to another, but the process isn’t as simple as opening a different solution. It requires a change in mental state to return to the complex mapping a programmer often does in his or her head to create the environment, knowledge, and rhythm necessary to work on a project. Jeff Atwood has a great blog post on the myths of multitasking in which he examines context switching.
How to eliminate defects?
Sometimes we write code that works fine, but the code itself isn’t all that great. Functions are repeated in multiple places and the code gets cumbersome to manage. So we refactor with the DRY mentality in mind (don’t repeat yourself). A step that is extra processing that’s really difficult to eliminate is testing. Testing is an extra process that is done to ensure code works bug free and as expected – it’s a critical step to delivering good code; however, testing can be largely automated nowadays.
Learn what costs you money and resources as well as how to eliminate waste from your work processes. For software development, this relates to task switching. When one person is allocated to multiple projects or types of work, he/she is likely to be switching tasks several times throughout the day. For software development, overproduction relates to developing much more features than what customers really need or developing features that customers are not likely to need in near future. At a team level, one way to reduce context switching is to try and reduce the number of items that are being worked on at the same time.
For manufacturing systems, keeping inventory of parts or products, means more cost to keep the inventory, more effort to process the parts, and more probability of quality issues. For TPS, even 1 defect in a 1000 is an expensive defect. For manufacturing systems, every process must have quality built-in in a way that no defect is passed on to the next downstream process.
A simple “Mantra” to identify Scrum anti-patterns
This can be a huge waste in software development, this is represented by development work done but has not been released. Software is written so it can be used by its users, writing code costs time and money so if it is not being used then it is considered wasteful. In the original Lean vernacular, motion is the motion of workers while transport is the transport of product. Defects in software development are similar to defects in manufacturing, so this waste highly correlates with the original waste from manufacturing. Defects cause extra work at bad times, forcing the programmer to stop what he or she is currently working on, and causing lower quality on both the bug fix and the stopped work.
- Such activities can be testing, planning, reporting, etc.
- This is probably the easiest waste you can recognize.
- I am not saying that all defects can be removed but if the number of them is reduced and the detection of them occurs earlier then less developer time is wasted.
- If an item waiting on approval is low priority the team may be waiting for some time.
- In this example, the activity of adding cherries to the ice cream is a waste, as the customer really does not want to pay for the extra cherry.
Then continually improve by iterating on the waste elimination process. The seventh and final one on the list is defects. Defects are extra work put in to something that should have worked the first time around. Extra work is put in to fixing the defect without producing extra value. It could also mean extra work for the customer to work around the defect until the defect is fixed.
Brooks’ law applied to Software Project Management : Adding human resources to a late software project makes it later
This money would have been better left in the bank earning interest. Technologies slowly become out of date so if it was not released for a number of years there may be compatibility issues that need to be fixed. Look at the manufacturing process, strip out anything that does not add value to the customer, and you’ll arrive at a cheaper, faster way of building a car.
Interruptions could be due to many reasons such as lack of complete information on the task, hardware related dependencies etc. Make sure the tasks are detailed enough in the sprint planning meeting and identify any external dependencies upfront and raise them as impediments and let the scrum master work on them. Creating features that people do not use is wasteful, the most obvious is the cost and time spent on developers creating these features. However extra features make the application more complex with more lines of code than what is necessary.
We are a leading Agile & Scrum certification and consulting provider, established in 2013. We provide classroom and live virtual certification trainings for CSM, A-CSM, CSPO, A-CSPO, ICP-ACC and other project management certification training programs. Keep only how much you can eat, in your plate and leave the remaining open. This will help the other team members to pick the work based on their skill set and bandwidth. The solution to partially done work is to release your software earlier.
Always try to do “Value Stream Mapping” and see what is the value add time and what is non-value add time. This will give you an idea of what is your current process efficiency. Based on the current state of value stream map and by applying lean practices you can improve https://forexaggregator.com/ the cycle time and thereby reduce the delays. Also automate the test cases wherever possible so that it will reduce considerable amount of time when you have to run them recursively. The 7 forms of waste is a concept that is an integral part of Lean management.
This is not just about latency, optimizing for memory usage or startup times or any other non-functional requirement may hit a point where the gains aren’t of value to the customer. Features that are in some stage of the development process e.g development or testing. If you are not creating value in your product, Find Engineering mentors and mentoring consider whether your there are steps in your process that can be cut out to reduce waste. Discovering solutions to a problem is important, but so is remembering that solution to avoid having to relearn the solution at a later date. Defects are the most obvious waste, however many of them aren’t notices.
Waste #2: Extra Features
Some developers enjoy working on two things at the same time. Others have two things in progress because one of them is “blocked”. When you switch task, there is a small-time cost to close what you were doing and regain your thoughts in the new task, known as a context switch. The cost of these context switches accumulates over time and reduces the time available for delivery.
This specific example could also be considering extra processing and/or over production. If eliminating waste can lead to decrease in cost for car manufacturing, it can also be applied to software development to decrease the time and cost it takes to develop software. Waste are extra work put in without adding value to the process. Eliminating waste works well in manufacturing and can work just as well in software development. Having to wait on approvals, paperwork, mgmt decisions, waiting in meetings, and waiting for clarification from product managers all soak up engineers’ time and effort. Some companies are going to a constant release cycle and this has proven to be exceptionally good at providing value.
As much as 20% of a programmers time can be lost to context switching when a second project is added to his or her slate. By the time a third project is added, nearly half of his or her time is lost to context switching. Extra features could be something that customer never asked for but they were added to the release because an assumption was made that the customer might want the features.