Software "Factory Technology" (Part 1)

Software "Factory Technology" (Part 1)

"Hackers are also creators, just like painters, architects, and writers"
-Paul Graham, founder of Silicon Valley entrepreneurship, founder of YC, author of "Hackers and Painters"

There is no doubt that in the era of ICT convergence and intelligence, apart from the evolution of computer architecture and chip technology in the computing industry, the most exciting thing is that the world has entered the "software age". The hacker mentioned by Paul here is a typical software craftsman, craftsman.

When discussing software, everyone still uses industrial-age thinking or academic terminology to discuss it. The software is simply discussed as an industry or science, making it a cliché to improve the software level of an enterprise on a large scale. The "difficulties" that don't know what to do.

Software engineering seems to be the universal answer, and the company has also initiated large-scale change projects to improve software engineering capabilities, and is willing to pay a huge price for it. But there is no doubt that anyone who has a deep understanding of and has been engaged in software development knows, or people in the industry know that software engineering has reached a dead end, and has stagnated as a discipline for many years. Simple methodologies, processes, and project management can no longer produce many valuable results in the software field. Extreme programming and agile development that have been slightly popular in the past few years have not brought much change to the industry. Many of the cloud native technologies that everyone is passionate about, the details are also to help developers how to make project files, package, mirror environment and test, release, etc. In the eyes of many programmers, software engineering has become a negative term, because software engineering seems to represent a pronoun of "allowing people who can't program to make high-quality programs together."

Since the methodology does not work, then call for "heroes." Nowadays, many topics of software discussion will end up eventually, and some talented or very good architects are needed. This is intuitively the most convincing. There are more or less such "legendaries" in various legends throughout the IT industry, including Google's "Jeff Dean". But unfortunately, after the mouth addiction, you have to ask, how to cultivate such people and how to find them? There is a consensus, and it seems that it cannot be cultivated, and it is hard to find. The problems are thrown to HR, and there is no solution. A genius is hard to come by, and his personality and requirements for the environment are difficult to meet. What's more, if some big companies have such a genius, then you shouldn’t be optimistic about him, so how can you easily make him in the talent market? It’s "Hanging" on it.

Relying on methodology is not enough, and relying on HR recruitment can not quench the near thirst, and there is no guarantee that the genius will be discovered and the discovery can grow here. I want to improve the abilities of programmers on a large scale, but I also found that simple training, classes, even exams, and certification are not very effective methods, because these methods are very effective for traditional manufacturing workers, but they are indeed creative and difficult to measure for software. In terms of production efficiency, it is really difficult.

With the observation and experience of the open source community in recent years, it has become more and more felt that software is a magical industry, and its law is an industry between large-scale manufacturing and early hand workshops. He requires practitioners It is also comprehensive. These people must have the collaboration of workers and the individual contributions and abilities of craftsmen-like "craftsmen". At the same time, it is very difficult to copy. Relying only on the process, the system, even the methodology, and everything that can be written on paper cannot be copied. Similar to the previous CMM certification, it cannot be copied on an effective scale. Here, let’s call it "factory" ability or "technology". .

The corresponding technologies can be called "laboratory" technologies, such as pharmaceuticals, chemistry, and electronic equipment. As long as scientists have tested and verified in the laboratory, they can use the large-scale manufacturing and industrial management ideas of some enterprises that have developed in the past. Scale up improves its quality, cost or efficiency. Of course, the clinical verification phase of pharmaceuticals is also slightly more complicated, and it needs to be verified by large-scale "double-blind random" experiments found in statistics. But these are hard to compare with the difficulty of copying and verifying software factories. Therefore, in the strict sense, software is neither science nor engineering, but an “art”. However, in the ICT industry and the era of information and intelligence, there is a large-scale and replicable demand for such craftsmen. This is the current situation. The crux of all software management problems.
Insert picture description here

Fortunately, in the near future, there is a work that can be used as a good analogy to explain. This is Tesla's "super factory" in Shanghai, which can vividly interpret the concept of "factory technology" given by the author here. How to manufacture Tesla, it should be said that the technology has long been mature, and how to manufacture Tesla's "super factory" in the United States has also been verified and practiced long ago. So the question is, is it easy to build a Shanghai Telsa "super factory"? Will it be easy to replicate this "super factory" elsewhere in the world. The answer is of course no. This can be seen from the excitement and dance of Elon Musk's factory building ceremony in Shanghai. The characteristics of such "factory technology" can be seen. Of course, when Musk was in California's first "super factory" and slept in the company for several months, we can also understand this.

There is such an industry, it seems that all aspects are not the most difficult. The technology, individual personnel skills, methods, etc. are all mature. It is not difficult to make the results in a small house or laboratory. The difficulty lies in the scale. With hundreds or thousands of people working together on a large-scale collaboration in a factory or office area of ​​thousands of square meters, how to make products stably, continuously and credibly is “difficult”. The industrial "LCD panel technology", Telsa's "Super Factory" and the ICT chip industry are also examples of this. Well, I personally think that the ability of software engineering should also be raised to the level of "factory technology".
Insert picture description here

It is not difficult to find one or two people to study the algorithm, and it is not difficult to find a dozen people to develop a verified version. Occasionally, it is not difficult for a suitable small team (with such a group of people who can collaborate) to make several products for a period of time. How to develop, maintain, and iteratively and innovatively develop large-scale software continuously and stably is even more difficult. A few large software companies such as Microsoft have such capabilities. And companies hoping to have such capabilities simply "dig people" or recruit "engineers" are just misunderstandings. Because the core of "factory technology" is a comprehensive "system" technology that integrates people, environment, collaboration, methods, and unspeakable skills. Simply improving from a single point is suspected of "begging for fish by fate", and it is easy to go astray. These are definitely not a substitute for programming guides in certain programming languages. The "Knowledge" and Know How here may be the blogs of hundreds of engineers, or they may be posts in the technical forums of the project team or the company. There is the "experience" that exists in the engineer's brain. However, the skills or experience of a single person cannot be superimposed on the experience of hundreds or thousands of people working together, and can be creatively "played" in solving more customer needs. It is not only a state but also a "process".

The "factory technology" of software is more difficult than the above-mentioned LCD panels. The "gene" of the company that many people are now discussing is also a feature of software factory technology. That is to say, there are often more complex "factors" such as company culture, founder or management orientation, etc. in the characteristics of the above-mentioned factory technology. Then there is no way. To be honest, there is really no good "panacea". The only thing that can be seen is that the "free software culture" that has been in place since the beginning of the software is more reflective of the laws and nature of the software industry. The “open source culture” and “open source community” that have evolved from this is a kind of “magma” or “mudslides” flowing underground that has been implicitly associated with the booming ICT industry. The openness, collaboration and innovation of the open source software community, as well as self-organization and flattening may be the best way to help companies build and scale up their software engineering capabilities, and build a "factory technology" with core software competitiveness that is difficult to replicate and learn.
Insert picture description here

Therefore, this article jumps out of the open source software community as a cultural or industrial means to look at the open source community. It may be a "software factory technology" that is more in line with the current or future open innovation and large-scale collaboration. How to focus on the skills of these people? Promotion and growth, while paying attention to the effectiveness of the things these people do together, how can it not simply separate people and things (products), and not "metaphysically" simply summarize them as human resources or process quality.

How to better manage such "factory technology" even determines the competitiveness and leadership of an enterprise in the ICT industry.

Further discussion will be in the next part.

Guess you like

Origin blog.csdn.net/rxdboy77/article/details/112578061