Joke Collection Website - Joke collection - Excuse me, what is a silver bullet

Excuse me, what is a silver bullet

Introduction

(I wrote this article a year ago because I really didn't like the progress and innovation of software technology. For many years, some people in China have always been keen to shout that there is no silver bullet in the world, thinking that they have seen through the software technology (did they really understand the Myth of Man and Moon? ), I like to be cynical about the hard work of others. In the eyes of these people, "no silver bullet" and "software engineering uselessness" are linked. Since there is no silver bullet, software engineering can do nothing about the so-called "fundamental problem", then the gap between us and American software is not great, so we can continue to live a stable life with peace of mind. According to my research, Professor Bu did not give an accurate and scientific definition of "silver bullet". There are at least three different explanations for what is "silver bullet", and it is difficult for us to define what is a "single" technology-many things in the world can be decomposed. In my opinion, there are certainly silver bullets. There are 6 billion people in the world, and how many people can climb Mount Everest? Holding on to the concept of "no silver bullet", standing still and sticking to the old ways is just a kind of incompetence of some China software people (of course, the laggards). -June 3, 26)

No Silver Bullet, the most famous assertion in the world of software engineering, comes from Dr. Frederick Brooks, a pioneer, authority and veteran of the world of software engineering, who won the Turing Award in 1999 in the United States. How can it be wrong? Indeed, in the past two years, with the introduction, translation and publication of the Chinese version and photocopy of The Myth of Man and Moon in China, as well as the subsequent publicity and clamor, now "no silver bullet", a fashionable foreign product, has almost become a word of mouth all over the sky, and some people in the IT industry talk about it every day, "This is not a silver bullet, that is not a silver bullet", "OOAD is not a silver bullet, UML is not a silver bullet," In people's eyes, Brinell's theory of no silver bullet (NSB) seems to be an all-purpose essential oil and all-purpose ointment that can be carried around. Only when you can find a place and paste a dose can it work.

but is this really the case? What exactly is Brinell's silver bullet? Is there no silver bullet now, as everyone generally thinks? Why is there a silver bullet? Why is it said that Brinell's silver bullet has no practical significance? What is the real intention of Lao Bu? Please see the breakdown below.

Motivation

Recently, in a chat, I asked an inner circle friend about his views on the current situation and future development of domestic software engineering. He is an activist in this field. I thought I would hear his smug expression, but I didn't expect him to shake his head. I asked him what happened. He said that "software engineering has been stinked in China", so now he is engaged in activities outside, and he dare not speak out and dare not get involved with software engineering. What he said was completely out of my expectation, which really surprised me! Yes, the theory of uselessness and emptiness in software engineering has a long history in China. However, in the eyes of those of us who deal with software every day, software engineering is like a routine, completely a daily work and lifestyle, and it is really hard to imagine what software development would be like without software engineering.

after a period of observation, I gradually discovered such a harsh reality. I didn't expect that there are still so many people in China (at least reflected in some websites, media and forums that claim to be the most professional) who are confused about the importance and necessity of software engineering, and their understanding of "what is software engineering" is arbitrary and varied. I have repeatedly thought about all the reasons behind this phenomenon. Unfortunately, it seems that many people, after reading "The Myth of Man and Moon" (perhaps without a close look at it at all), think that Brooks holds a pessimistic view, and then deduce from his theory that "software engineering is not a silver bullet", think that software engineering is basically a useless myth, and preach that software engineering is a group of technocrats who are pursuing ethereal and nonexistent silver bullets, and software engineering has made no achievements in the past 3 years .. But I think they are fundamentally wrong.

After careful investigation and study, I found a surprising fact: there is nothing wrong with Brinell's NSB, and most of us who shouted "No Silver Bullet" were probably wrong. We didn't really understand Professor Brinell!

Brinell's silver bullet is not a panacea

First of all, it needs to be clear that silver bullet is not a synonym for panacea, which means that we can't casually use the word "silver bullet" as a panacea in sentences.

proof: reduction to absurdity is adopted.

assuming that "silver bullet" equals "panacea", then "OOAD is not a silver bullet, UML is not a silver bullet, use case is not a silver bullet, RUP is not a silver bullet, MDA is not a silver bullet, and software engineering is not a silver bullet" is of course correct, because there is no panacea in the world.

On second thought, the proposition that there is no panacea in the world should be an axiom, and it doesn't need to be proved again. Did Professor Bu write two important articles nine years apart and spend so much energy just to prove that there is no panacea in software engineering? Isn't that ridiculous? Obviously, there is a contradiction here, so the previous assumption cannot be established, indicating that the Brinell silver bullet has another meaning.

I guess most people who say "no silver bullet" don't really understand the meaning of silver bullet or the spirit of Lao Bu. They probably made mistakes: the first may be talking nonsense, and the second may be inadvertently ignoring and rejecting those truly valuable technologies and methods. Give an example of misuse of NSB (confusing silver bullet with panacea): "For many years, the technical community has been persistently looking for a' silver bullet' to solve all problems in the development process. These efforts are undoubtedly respectable, but the result is regrettable: despite the fact that such a silver bullet does not exist. Software engineering, which began in the late 196s, was once regarded as a panacea for all diseases. The author obviously didn't understand what a silver bullet is, so this passage became boring nonsense, which constituted an illusion and wrong premise for his subsequent argument that "there is a crisis in software engineering".

so, what exactly is a silver bullet?

what exactly is a "silver bullet"? Let's explore the famous Brinell prediction. On the question of whether there is a silver bullet, if we must be serious, it is probably not scientific to leave the original text and shout "no silver bullet" everywhere. My translation is:

"No single progress, whether in engineering technology or management technology, can independently promise to achieve an order of magnitude improvement in software productivity, reliability or simplicity within a decade."

By the way, calculate the average annual growth rate required by silver bullet technology:

According to the definition, there is (1+x )^1 = 1, so x ≈ .26

It can be seen that Brinell silver bullet actually requires our software development productivity to maintain an average annual growth rate of about 26% (or increase by 1 times in 1 years). When we discuss whether there is a silver bullet, of course, we can't leave this basic criterion.

The boredom of Brinell's silver bullet

In fact, pursuing Brinell's silver bullet has no practical significance for realistic software development. Why? There are at least three reasons:

1) For a specific software product or engineering project, what is the significance of blindly improving productivity regardless of others? One-sided improvement of productivity (or reliability and simplicity) is not our real purpose. It is meaningful for enterprises to pursue high productivity and/or high reliability and simplicity only when they guarantee quality, truly meet customer needs and make profits. Therefore, if a technology or a tool is not a silver bullet and cannot guarantee a 1-fold improvement, we cannot despise, reject or abandon it.

2) why is it necessary to stipulate that only a single technology can be used? As far as a specific software product or engineering project is concerned, as long as there are still defects in our organization, as long as all kinds of engineering technologies and management methods that are expected to improve better than before and can ensure overall success and achieve quality and business objectives, we should try bravely and decisively and use them comprehensively and flexibly. Moreover, it is very difficult to define a single technological progress. We often demand comprehensive overall growth, and the pursuit of a single silver bullet has no practical value.

3) why do you require 1 times in 1 years? When evaluating a technology, we usually consider whether it can be of practical help to this year's projects and products. The chief scientists of the world's top software companies generally consider strategic technology for at most 3-5 years, and it is of no practical engineering significance to talk about 1 times in 1 years. Furthermore, although a certain engineering technology and management method are effective, if the improvement it brings to the project does not reach 26%, such as only 2% or 1%, isn't it bad, should it be abandoned and ignored?

It can be seen that Lao Bu did take some tricks when making the conclusion of NSB, hoping that it will not be invalid for at least 1 years. However, what impact and significance does NSB have on our actual work? At least we can't take it for granted that whether something is a silver bullet or not is the standard to guide us to carry out practice, select and adopt a certain technology or tool.

So, why did Mr. Braun propose NSB? It shouldn't be groundless. According to my understanding and analysis, the reason may be this: in 1986, as an academic professor, he was dissatisfied with the excessive and untrue propaganda made by the CASE tool developers at that time, so he revealed that their tools had great limitations by NSB-they could not solve the fundamental problems of software engineering, and at the same time pointed out a bright way for us ("There is no royal road, But there is a road. "[1]), the silver bullet in his mind actually refers to those technologies that can solve fundamental problems in the future. Originally, Brinell's silver bullet was just a joke used to mock some foreign CASE tool developers, but it was used by a group of boring enthusiasts in our country to attack software engineering mindlessly!

uncover the truth-there are silver bullets

as a revolutionary core key technology, silver bullets exist widely in all walks of life. To be on the safe side, Lao Bu only looked forward to the software engineering NSB for 1 years. But it didn't happen then, which doesn't mean it won't happen in the future. Does the silver bullet of software engineering really never exist?

is it really difficult to achieve the annual growth of 26% required by the Brinell silver bullet? I think, for many IT organizations in China, it is not difficult to improve the efficiency or quality of a project by 3%, because there are still a lot of inefficient and even wrong parts in our work. I don't believe that whether in management or technology, our software engineering level is as high as that of advanced developed countries in the world, and there is no room for further growth of 3%.

In fact, Lao Bu has a silver bullet in his heart, or is looking forward to its appearance. He spent a lot of time analyzing the possibility of its existence. Specifically, it is to attach importance to business analysis, demand analysis and software design. The closer you are to understanding and solving problems, the better. He warned the IT community to distinguish between technologies to solve fundamental problems and secondary problems, and to pay more attention to and vigorously promote the research and development of the former. I think this is his true intention. Unfortunately, for various reasons, many people in China inexplicably forget the last half sentence, or pretend not to see it, or even use NSB to wrongly deny software engineering.

according to his analysis, some technologies, tools and methods at that time, such as high-level programming language, time-sharing technology and unified programming environment, could not be 1-fold silver bullets, because they only solved minor problems, but some of them were possible, potential and developing silver bullets. He has given us many tips, such as software reuse, requirements refinement and rapid prototyping, incremental development and excellent design, and considered some of them. If we carefully examine the development path of foreign software engineering in the past 2 years, we can find that silver bullets or quasi-silver bullets (is it meaningful to pursue 1% silver bullets? ) has appeared or will appear soon, and even has existed for some time. For example, software reuse is evidence of silver bullet: Motorola achieved a 1:1 productivity improvement by realizing 85% reuse in compiler projects [4]. An inventory planning and maintenance management system of General Motors Corporation, because the old PL/1 system was replaced by Smalltalk 8, the overall productivity improvement was 14:1[3]! It can be seen that object-oriented technology is indeed the core formula of silver bullet, or at least silver bullet.

Some people think that there can be no silver bullet because the "fundamental problem" of software engineering mentioned by Lao Bu can never be solved fundamentally, which is actually a wrong logic. Whether it can be solved or not and the efficiency of the solution are two different things. Is the "fundamental problem" mentioned by Professor Bu something like NP-complete problem? Of course not. Professor Bu's NSB is about the efficiency and effectiveness of the solution. Different from theoretical research, software engineering is a real business practice and scientific application, and the problems to be solved by software engineering should usually be solvable (guaranteed by the feasibility analysis of the project), otherwise it can't be called engineering. Let's think about so many super-difficult software projects, hundreds of millions of mobile phones roaming around the world (China has long been the largest mobile communication market in the world), 777 and 38 flying in the sky, Shenzhou 5, which makes China people proud and surprises the world (our space heroes have silver bullets in their hands), and the Spirit of landing on Mars. These are not all extremely complicated "fundamental problems" that people skillfully solve by using software engineering and system engineering. My friends, practice is the only criterion for testing truth. Don't stick to books any more, and take a good look at the world around us with our wise eyes. Whether there is a technology and/or management of silver bullets with n*1 magnification like hardware technology in software engineering is quite difficult to prove by pure scientific calculus and theoretical deduction. I'm afraid even Professor Bu can't do anything, and everything can only be told by facts and data in the end.

to tell the truth, we are probably not qualified to talk about silver bullets with the leaders of the world software industry. In the past 3 years, it has developed into a huge discipline in all aspects of software engineering. In the field of civil software, how many original things do we have, and how many of them have won the applause of the academic and industrial circles around the world? So far, China seems to have no master of object technology. Now, it seems that in the 21st century, we still need to continue to do the difficult enlightenment work of software engineering in a wider scope. Therefore, don't be fooled by the misleading theory that there is no silver bullet! If we ignore 3721, we regard all "new" technologies and "new" methods that we are unfamiliar with and have not mastered as fake bombs.