People in the software development industry often like to use the production and manufacturing industries to compare the software development industry. Due to lack of familiarity with the production and manufacturing industries, we often draw incorrect conclusions based on assumptions and speculation. For this reason, this article focuses on the situation of the production and manufacturing industries and the software industry is similar to different instructions.
1. Working Cell
When it comes to the manufacturing industry, the first impression is usually the production line. However, production lines were already before the emergence of the software industry, and today's production and manufacturing industries are no longer the production lines of the past. In the past, the production industry used production lines. production lines divide production processes into various stages (Are you familiar with this ?), The product produced in each stage is input in the next stage.
The current method used by the production and manufacturing industries is working cell. Working cell divides production personnel into working groups, and each group is responsible for all the steps of the original production line. The main purpose of this operation is to avoid waiting for the entire production line due to an error in a certain part of the production line. If an error occurs in a team, the entire production line will not be stopped.
In the early days, the software industry also simulated the production line and divided the software production process into multiple processes: requirement Analysis, outline design, detailed design, coding, unit testing, integration testing, system testing .... like the production line method, if a delay occurs in a certain link, all subsequent links need to be delayed. This is why software production is always postponed. Like working cell, if iterative development is used during software production, there will be no delay in other stages due to the delay of a link, this is why agile development can "guarantee delivery.
2. cross functional team
Technical support is required to implement the working cell. Technicians have changed from a single-duty fitter to workers with multiple skills. Otherwise, they will not be able to operate various machines or perform various processing work. This kind of team of skilled workers is called cross functional team.
There is a way in the software development process: divide the software functions into various layers.
A common method: the UI Layer requires JavaScript to be completed by front-end engineers, the DB layer is completed by SQL experts, and the business layer is completed by Java engineers. So everyone is unfamiliar with the overall structure of the software. Because everyone only pays attention to their own part, each individual cares only about their own part during software development.CodeThe loss of the overall view, and even a common situation, is that the software development has been completed, and I still don't know what the software is. Another problem is that software developers do not have any skills after a project.
In the software development process, if cross functional team is also used, the situation will be different.
First, it takes time for each technology to improve each skill. Don't worry too much about the loss of development efficiency due to lack of in-depth understanding of a certain technology, because in the long term, the technical staff's technical improvement will greatly improve the development efficiency.
3. Stop the line
When a problem occurs in the production line, the worker reaches out and pulls the rope on the production line, and the production line stops immediately. Because high automation is adopted in the production line. The product is continuously produced. However, if the production line does not stop as soon as possible when there is a problem in the production line, it will not stop producing unqualified products. When the production line stops and the cause of the problem is cleared, the production line can continue to produce qualified products.
Why not software development? The quality of the software is unclear During the software development process until it is tested. This is like continuously producing unqualified parts on the production line. In the end, the quality control is handed over to the test stage.
How does Software Development establish the stop the line mechanism? Test first. When a problem occurs, do not check in the Code until the problem is completely resolved.
I will explain this in detail in "configuration management you don't know.
4.5 S
5s is an important part of the factory management method, and it is an important way to ensure product quality.
5 s are:
Sesiri (sorting)
Seiton (rectification)
Seiso (cleaning)
Seiketsu (clean)
Seitsuke (quality)
Many software companies are also implementing 5 s, and they require employees to organize their desktops to meet 5s requirements. However, software developers should perform their code libraries for 5 s. In many inexperienced projects, Software Configuration Management is messy. Code is everywhere (several versions or branches coexist), and documents are not classified. They are often not clearly located here and there, and spam files and spam code are left everywhere in the code, the check-in and check-out of code is arbitrary and permissions are allocated randomly. And so on. Although the desktop is very clean, such enterprises cannot say they have achieved 5 s.
What should be managed in the code library, how should it be managed, how should the branch and tag be used, and when should it be checked in, how can it be checked out. I will explain this in detail in "configuration management you don't know.
Finally, we recommend the Toyota Production method.