One note: as a programmer, I usually hate software factories, but many times the problem itself is inherently rational and does not change its development trajectory based on my preferences.
So once programmers talk about issues related to their preferences, they must reject personal likes and dislikes in particular. Otherwise, they will be farther and farther away from the truth, with only one emotion.
I personally observe that the software factory is generally in this position: the business manager is always expected to realize it at the pressure of cost, while the programmer group is always sneer at it.
Why is the software factory so attractive at the business level?
This is not hard to understand. If the software can be operated in the factory mode, the replacement of the programmer will be infinitely enhanced, so that the cost of software development can be greatly reduced.
Looking at the impact of manufacturing in China over the past two decades, we can understand the massive lethality of this cheap labor force.
Business-level topics can be infinitely rich, but what you can never get rid of is the eternal interests that you have to fight.
Outsourcing, the appearance of all these things by external staff seems to be accidental, but it is ultimately a profit-driven.
For the same reason, many people will never forget the software factory.
However, the direction of the software factory is really wrong. This kind of mistake is not about whether or not the language is on the water, but about the low input-output ratio of the software factory model. The same result will be the loss of benefits, rather than the opposite.
The characteristics of a factory are that the same things are produced in bulk according to the established process, which usually results in economies of scale.
Software development creates things at one time by defining concepts and logic. At this time, it is characterized by diseconomy of scale ).
This is supported by a lot of engineering data.
This means that innovation cannot be combined with the characteristics of the factory, but is more similar to the validation process of a process.
When reluctant to import factory models for software development, many people will try to split (design) and do (coding ).
The problem here is that in software development, what you want to do and what you want to do can't be done cleanly. You want to agree on what you want to do, but in the process of doing it, you must deepen your thinking.
For brand-new development, whether it is demand analysis or architecture design, it is difficult to get rid of the iterative features. At this time, all personnel are required to participate and actively communicate.
The dictatorship will block this information loop and thus reduce efficiency.
We can use a very simple formula for some derivation:
Productivity: productiscale = Scale/MM unit: KSLOC/MM
Scale represents the Scale of the final software product. We use code lines to measure the Scale.
MM is the person-month spent developing this software product.
At the same time, Scale = Coding Speed * Coding MM.
Coding Speed refers to the Speed (not productivity) for a programmer to write code, while Coding MM refers to the time for all programmers to code.
By combining these two simple formulas, the formula for productivity is changed:
Productivity = Coding Speed * CodingMM/Total MM unit: KSLOC/MM
If we assume that Coding Speed is the time for a programmer to write the least Bug and the best quality code, it is obvious that productivity is mainly related to the programmer's ability and Coding time.
In contrast to the software factory model, the coding speed is low, and the communication time is high. Therefore, the productivity is low.
By the way, Mr. Lee Kai-fu's company is called the innovation factory. This is very interesting. In essence, the focus on innovation is definitely not a factory, and the mission of the factory is not mainly innovation.
This is a name that is full of contradictions, but does not know where it comes from.