The 8 Software Process Development Wastes

Wastes exist in many types and forms that hinder the business from operating in an optimum way. Waste management is one of the most effective ways to increase the productivity of any business while It is important to understand exactly what waste is and where it exists to eliminate it.

The waste can be defined as any action or step in a process that does not add value to the customer.

To identify these waste actions or steps, we need to understand how the business work to achieve its goals and objectives. Each business can be modeled through its services, products, capabilities, and skills that are important factors that shape the different business processes to provide those services or products and utilizing the business capabilities and skills. The process itself can add value or waste to the business.

Similarly, in software engineering processes this waste can affect the productivity of the team and the end results of the software development and delivery.

The purpose of this article is to highlight the different types of waste according to the seven industrial wastes originated in Japan, where waste is known as “muda.” “The seven wastes” is a tool to further categorize “muda” and was originally developed by Toyota’s Chief Engineer Taiichi Ohno as the core of the Toyota Production System, also known as Lean Manufacturing. This was the inspiration point to the Lean Software Development, while the waste management can be applied to any software process model.

Software processes differ between how they are managed and executed based on the process model, project context, team maturity, …etc.
The typical wastes found in manufacturing environments are quite similar to software engineering environments. For each waste, there is a strategy to reduce and eliminate its effect on a company, thereby improving overall performance, quality, and delivery.

The Seven wastes + 1

They are known as TIMWOOD, the additional one in the improper usage of the existing skills and talents

  • Transportation
  • Inventory
  • Motion
  • Waiting
  • Overproduction
  • Over processing
  • Defects/Rework
  • Not-Utilizing Talent
Types of wastes
Types of Wastes

We will discuss each waste, its cause, and how we can reduce this waste through the process.

Transportation

This type of waste in manufacturing is related to the movement of products from one place to another, for example, you need to move the raw material from storage or inventory to the production line, which takes time, effort, and cost which can make unnecessary delays.

We typically face the similar transportation waste in software industry in different phases of the process model, for example, planning and analysis phase, but mainly the information transportation, there are some transportation waste from place to place, or from person to person to meet different customers, requirements elicitation, presenting, discussions, meetings, and handoffs.

We can see that waste in handoffs, for example, Passing information from one team member to another or to another functional unit, which may cause different interpretations of information. For example, communicating customer requirements from a customer to the analyst, then an architect, and finally to a developer or a tester.

Solution

It may be not easy to eliminate all the waste of information transportation, but we can reduce it by

  • Using some tools, for example, online meetings and conference tools to do some reviews and meetings that may be effective to eliminate a good percentage of this waste.
  • Using tools for managing and sharing requirements and its traceability through the process with all the stakeholders can eliminate the waste of handoffs and miscommunication issues of the information.
  • Reduce the feedback loop time to ensure that the information has been delivered and understood correctly

Inventory

Inventory in the manufacturing is a result of overproduction of some process steps over other steps due to lack of synchronization between the steps, which causes material and product wait to be processed due to over workload and waiting times.

In software engineering, this can be called the activities that are partially done, for example, requirements analyzed but not developed, code not checked in, code not tested, test cases not executed, etc. This produces a huge impact on team productivity as it consumes the team time while it cannot be closed as a finished work.

Solution

I think the solution to reduce this waste by:

  • Prioritizing the work according to the business needs, iterative and incremental development
  • To make the feature, the business requirement, user story-centric across the different phases, not task-centric that it is done partially from a team and waiting for another team to continue.
  • Stop starting new development and start finishing the existing ones

Motion

It is mainly the excess movement and poor ergonomics of the working environment due to stretching, walking, lifting, and reaching, for example, leaving the workplace for any reason, or switching between tasks. It is mainly the motion of people, tools, and machines that are important to deliver the product of the service.

In the Software industry, this also does exist, for example, switching between projects or tasks, context switching, environment switching, working on more than one thing at a time, fixing a support issue while developing new features, etc.

According to different studies, It takes some time for any human to focus on a task, the switching time between the tasks will need time for the task owner to focus on the new one and involved in the task context. Moreover, open and start using the project environment and change the mental state to work on the new context.

Solution

Most effective way to reduce this waste by:

  • Focus on priorities
  • Focus on one customer, one project, or one product
  • Take notes before switching, breaking points, to-dos

Waiting

In manufacturing, whenever goods are not moving or being processed, the waste of waiting occurs. This makes the teams waiting for other teams to finish their tasks. This waiting time as well affects the productivity of the process.

Similarly, in the software engineering industry the waiting time is actually exist in many shapes, waiting the requirements to be analyzed, waiting for feature to be developed, waiting for someone to work on the feature to be tested, and so on. Also, it ended up with one or more team members are idle waiting for input from another activity or waiting for the customer to give a feedback or approval.

Solution

The solution to reduce this kind of waste can be achieved by

  • Mobilizing and availing the team based on relative task
  • Shorter sprints or iterations
  • Instant communication and shorter feedback loop
  • Direct customer engagement in all the phases
  • Defining constrains, policies, standards for work and handoffs
  • Using of tools to notify the team members that involved

Overproduction

Overproduction is to manufacture a product or a step of its manufacturing before it is required, it is caused by many reasons, for example, unstable schedule, large batch size, inaccurate information or demand.

In software engineering, this is mapped to gold plating the software by extra un-required and unnecessary features. Most of the time, the customers are requesting features that are never used or the developer volunteer to develop features that he/she may think it will add extra value for the customer but it is never wanted.

It is actually if it may add some value, but it makes the code more complex, harder to maintain, and can be a point of failure and derive extra requirements that out of the scope.

Solution

Most effective way to reduce this waste by:

  • Focus on priorities
  • Proper requirement management
  • Focus on what customer wants
  • Following a minimum viable product (MVP)

Over Processing

Over-processing is mainly by adding more steps that not required, for example, double validation, many approvals, double data entries, and using oversize machines and equipment.

We can see the over processing in the software process also through un-required documentation, many approvals for stakeholders, or extra management activities.

Sometimes, by making the same task more than time due to defects and poor development, and over-analyzing and designing. In some articles, it is mapped also for the relearning process of the team caused by task switching or working on an old project.

Solution

Most effective way to reduce this waste by:

  • Document what is need to be communicated
  • Use different tools for tracking the progress
  • Shorter feedback loops
  • Eliminate management overheads as much as possible
  • Put constrains for approval process

Defects & Rework

It is considered the most obvious of the seven wastes, although not always the easiest to detect before they reach your customers. Quality errors that cause defects invariably cost you far more than you expect, for example, defects on the product, incorrect data entry which may results to a failed delivery.

We can easily relate this to the software development process as the cost of the defect and rework became higher when it is detected on the production phase. Not only that, but it leads to other types of wastes, for example, switching the tasks time to fix the issues, delays in production, extra handoffs and motion.

Solution

This was can be reduced by:

  • Make it right from the first place
  • Understand the requirement correctly
  • continuous communication and feedbacks
  • Shorter iterations
  • Do not use waterfall
  • End to end testing cycle

Not-Utilizing Talent

Talent is the most critical part of the waste in process of the software development, imagine, for example, assigning a task for a team member that does not have the skill for a particular language, this team member will need some time to learn and participate in the project. This can lead to delay other members and produce waiting time.

This was only one example, but it can be in various shapes, for example, usage of the tool, familiarity of the selected SDLC, Business domain knowledge, productivity rate vs the time plan. the productivity rate within the team.

Solution

  • Continuous learning to fill the gap
  • Task shadowing for new team members
  • Assign team members that can achieve together
  • Discuss the plan with the team members

I hope this article was not one of the waste types, and please share your thoughts if you have any other activities that are considered as a waste.

Cite this article as: Mohamed Sami, (November 7, 2019). "The 8 Software Process Development Wastes," in Mohamed Sami - Personal blog. Retrieved November 19, 2019, from https://melsatar.blog/2019/11/07/the-8-software-process-development-wastes/.

Also published on Medium.

Advertisements
Summary
The 8 Software Process Development Wastes
Article Name
The 8 Software Process Development Wastes
Description
Wastes exist in many types and forms that hinder the business from operating in an optimum way. Waste management is one of the most effective ways to increase the productivity of any business while It is important to understand exactly what waste is and where it exists to eliminate it.
Author
Publisher Name
melsatar.blog
Publisher Logo

Let me know your thoughts