Waste in the Process
The process is a method of doing things from the company level that everyone, each role, and each team must follow, in order to avoid the influence of subjective factors. The process is generally formulated from the perspective of management, so that all work can be controlled. But for every team, every role, every person, this must imply that there is something unsuitable for these people working on the front line. In accordance with the principle of continuous improvement, each team should always define areas for improvement so that the process can keep pace with the times.
We should start from the two dimensions of breadth and depth to reduce waste and turn cold words into actionable guidelines.
Shorten the Process
The development process of a distributed development project I once participated in had 19 steps, and each step required people in related roles to meet and then went to the next step. We believed there was a huge waste in several processes, since investing a lot of time could only produce limited value, and sometimes no value was yielded, only leaving a record in the system. As for the users perform recording, who also do not know the context, they w'ere making a record for its own sake. In addition to this, many milestones needed all people together to work, which caused waste objectively.
Feedback is a core content in modern engineering practice. In order to improve efficiency, reducing the length of the feedback loop has always been the goal pursued by the team. If we examine these processes based on basic values, we can find that many workflows do not add much value.
In a team, especially in a distributed team, it is generally the testers and customer team members who provide feedback. They usually look at the problem with a scrutiny in their work. This is the resource we need to use. At the same time, we must encourage feedback from the entire team. This is the foundation of continuous improvement.
Many agile practices are essentially the guarantee of the feedback process.
■ At the IPM, developers and testers provide feedback to business analysts, so as to improve the content of the requirements from the perspective of technology implementation and quality assurance.
■ When developers start an desk check, testers and business analysts provide feedback to developers; and they shall try to find some problems before move it to test phase, so that developers can correct them in time and reduce rework.
■ During a showcase, the customer team gives feedback to delivery team; and invite customer to experience the actual operations, so as to let them confirm whether their original thinking is implemented.
■ Developers provide feedback to each other at the code review.
Sometimes we need to use white box, test coverage, smoke testing and other tools to obtain feedback.
Speaking of which, we have to mention the principle of fail fast. For example, the code design needs to traverse a set of data, and we will should return immediately when an error occurs, instead of throwing this error after the traversal is completed.
Simplify Complex Process
I was in a project which the customer team had a process like this: When reporting bugs, screenshots of them are required for each step and uploaded to the bug management system. When we asked why. the customer representative said that their leader might read the report, and screenshots would make him easier to understand. I did doubt such explanation, since leaders usually do not care about such details which cost a lot of time every day. Was his leader aware of this? Later, we told this customer this way: We will attach with screenshots when necessary. If they require all screenshots are taken, each person will spend at least one hour on average to do screenshots and uploading each day, which is a very high cost. Finally, we reached an agreement that each bug was accompanied with only one major screenshot. This event had finally passed, and I have never heard of the customer’s leader ask about the details in this regard.
The complex process is synonymous with “more professional” in the eyes of many people, it is able to minimize the impact of human factors through strict control. In fact, simplicity is easier for technical teams to achieve success. Implementing simple solutions and simple processes can not only reduce the cost of management, but also liberate the creativity of the team.
An Important Way to Speed Up Progress
Time is the scarce and irreplaceable resource in the software development process, and its waste will directly affect the project progress. There are various wastes in the software development process, and rework is a common waste in this process. Avoiding rework not only helps speed up the development process, but also improves the quality of the software.
Some good practices in agile development, such as defining completed standards, pair programming, and test-driven development, can all help avoid rework.
■ Define the completion criteria, such as quality requirements and outputs so as to avoid rework. Properly handle some “last mile” matters in the process to reduce such anticlimax waste.
■ Pair programming and timely code review to prevent bugs from being discovered later and causing rework. Without code review, the worst part of the code represents the overall code quality level. After the code review, the code quality is theoretically determined by the most experienced person within the team. At the same time, it is very helpful for developers to learn from each other.
■ Test-driven development and requirements-driven development will clarify requirements as early as possible to avoid rework caused by the introduction of bugs due to incorrect understanding of requirements.
Over-Design is Also a Common Waste
Over-design refers to making too many predictions for possible future changes in the design stage, and making too many limitations in the design of these predictions. As the saying goes, plans are not as fast as changes. It’s a waste to prematurely deal with these changes that may not happen at all. Therefore, simple design is advocated in agile development. The so-called simple design is not zero design, but as simple as possible. In fact, there is no real design solution that can meet changes with constancy. If it exists, it must also be a simple solution. Because it is simple, it can be easily overturned and reinvented to adapt to changes.
It is very important for a team to formulate reasonable process rules. Usually, a manager spends too much time and energy on personnel management and task tracking, while team members waste time on trivial matters. Well-functioning processes can bring everyone together on the right path.
In addition to agility, lean theory also has some ideas to eliminate waste. The first is the waste of inventory. From the perspective of user value, the completed functions should be deployed and launched as soon as possible to help customers and get customer feedback. Therefore, if the functions that have been completed cannot go online for various reasons, it is a waste.
The speed at which the team responds to changes is very fast, and the lean team can adjust the requirements being developed at any time.
WAYS TO RESOLVE WASTE IN PROCESS
For the waste in the process, we need to establish the necessary feedback mechanism to identify these wastes in time. For some tasks that need to be done every day, we should strive to automate them to reduce repetitive manual work. Reducing the waiting time in the process can also improve our work efficiency. Some advanced technical practices, the establishment of a continuous integration environment, and the establishment of deployment pipelines also require serious consideration by the team.