To survive in today’s competitive software-development market, organizations need to build their capabilities around delivering the best service within customer-stipulated time frames and costs. Increasing productivity – the rate of output per amount of input – is the factor most likely to give an organization an edge over others.
Many software-development organizations have realized the importance of improved productivity, but they often approach it from the wrong direction. Most spend time and energy coming up with definitions and metrics for measuring productivity, but few actually reach a point where they work on improvements. Instead of waiting for the perfect productivity definition, these companies should continue with existing measurements and turn their focus toward increasing output and decreasing input. This can be accomplished by applying Lean principles to the software-development process. By identifying and eliminating wastes and employing key drivers, productivity is bound to increase.
The Seven Wastes of Lean
Lean principles focus on reducing the lead time of any process and doing away with activities that do not add value, thus improving a company’s bottom line. Operating on Lean principles involves eliminating different kinds of waste associated with production. These wastes are organized into seven categories. Although the categories were originally designed for manufacturing situations, they can be adapted for a software-development environment, as shown in the table below.
Original Seven Wastes of Lean Manufacturing and Their Software-Development Equivalents | |
Manufacturing | Software Development |
Overproduction | Extra requirements |
Unnecessary inventory | Unnecessary or irrelevant information |
Extra processing | Extra process steps |
Unnecessary or excess motion | Excess effort |
Defects | Bugs |
Waiting | Waiting |
Transportation | Handoffs |
To gain an understanding of where these wastes exist in software development, it helps to examine each category individually:
- Overproduction: Not understanding the customer requirements correctly may result in the development of extra elements that the customer does not desire and probably will not pay for.
- Unnecessary inventory: Holding on to irrelevant information often makes finding the right information at the right time difficult. Improper document-naming conventions and inefficiency in the search engine of a company’s knowledge-management system adds to the problem.
- Extra processing: Excess review, redundant testing, unnecessary documentation and signoffs, and prolonged meeting hours take up important time.
- Unnecessary or excess motion: If programmers are overworked or must spend too much effort gathering information, they yield fewer results.
- Defects: Rework has a heavy negative impact on productivity. One bug in the system can eat up crucial effort as it permeates through different phases of the project life cycle because associates must engage in fixing bugs rather than what the customer is paying for. Ideally, artifacts and deliverables should be created right the first time.
- Waiting: Delays in sign-offs and waiting for information, artifacts or deliverables from previous steps can occur due to infrequent communication. Employee attrition also can impact severely the organization’s productivity because of the waiting time necessary for replacements to arrive, build efficiency and gel with the existing team. Often, minor issues such as an individual’s slow typing speed or an improper hardware configuration in the preceding process also result in waiting.
- Transportation: Any movement of the infrastructure throughout the product-development or project lifecycle impacts the pace and quality of what is delivered. Excessive handovers and takeovers of a product or its components may use up considerable time. Lags in the processes of moving components or modules to and from different groups for integration and handing off the product to testing teams slow productivity.
Key Drivers for Productivity
While it is important to identify the wastes in the software-development process, it is just as important to take the next step: instill the drivers that will reduce this waste. Making changes in the following eight areas will have a positive influence on productivity:
- Infrastructure and Environment: Ensuring that the necessary infrastructure and working environment is in place before the work begins is crucial, as is avoiding any movement of infrastructure while the development is in progress.
- Optimized process: Developers should use the value stream analysis to identify and eliminate non-value-added activities.
- Resource capability: Development companies must provide the required training to associates. The training should include functional, technical and soft skills.
- Agreement on requirements: It is extremely important to get a customer’s sign-off on requirements before commencing work. This helps in avoiding rework resulting from an incorrect understanding of requirements. Sign-offs should be obtained on the initial requirements, and on any changes thereafter or any assumptions made during the course of developing the software.
- Knowledge management: Every company should create a knowledge base with appropriate configurations. All reusable components should be a part of this knowledge-management system. Care should be taken that no non-required content is stored in the knowledge base.
- Reusability: Programmers and document authors should make it a habit to search the knowledge-management system before they create anything new. Benchmarking with others about their relevant best practices also helps keep people from reinventing the wheel.
- Automation: Managers should look into the scope and feasibility of automating manual processes.
- Resource utilization: Managers should monitor individuals to determine if resources are being overused or underused, and take necessary corrective or preventive action.
Moving Forward
Once the wastes are eliminated and the drivers are in place, development companies can address their productivity-measurement systems and ensure they are competent so that the subsequent decisions are fact-based and actions are justified. But by making this conscious effort to eliminate wastes and improve the drivers first, companies will see a significant leap in organizational productivity.