A recent article
you are NOT a software engineer! she managed to make her order both in English and in Russian-speaking Internet. Whatever programmers were called, they were gardeners, scientists, drivers and farmers. Let's discuss all these metaphors and whether they are all true at all? But, it is under the cut ...
Thinking metaphorically about software development
A few years ago, I heard how
software engineering and
chemical technology were compared. In my opinion, the reason for this comparison was that software development is a very young discipline, like chemical technology, which appeared only a few centuries ago.
Metaphors used to be very widely used in our industry, in the second chapter, “Metaphors for better understanding software development,” Steve McConnell’s The
Perfect Code book examines in detail various metaphors. Here are some quotes from this chapter:
')
Many metaphors describing software development will confuse anyone. David Grice argues that writing software is a science (Gries, 1981). Donald Knut considers this art (Knuth, 998). Watt Humphrey says this is a process (Humphrey, 1989). F. J. Ploger and Kent Beck argue that software development is similar to driving, but they come to almost opposite conclusions (Plauger, 1993, Beck, 2000). Alistair Cockburn compares software development with a game (Cockburn, 2002), Eric Raymond with a bazaar (Raymond, 2000), Andy Hunt (Andy Hunt) and Dave Thomas (with the work of a gardener, Paul Heckel) with the filming of Snow White and seven dwarfs ”(Heckel, 1994). Fred Brooks mentions farming, hunting werewolves and dinosaurs stuck in a tar pit (Brooks, 1995). What are the best metaphors?
In addition to everything, Chris Yeitson in his post titled “
You are NOT a software engineer! ", Draws an analogy with gardening, making the following statement:
You simply cannot plant the same saplings as Facebook, Flickr and Twitter and expect them to take root, regardless of the quality of your gardeners or the climate of the organization.
The idea of ​​this metaphor is that each company is as a separate ecosystem, with its own climate and its own soil, but how applicable this metaphor is for civil engineers; does it mean that you cannot successfully build a dam or a dam or a bridge or a highway, because each of these structures has its own “ecosystem”? In the same way as in chemical engineering, the following products can have their own “ecosystems”: for the production of
penicillin by fermentation, the production of
sulfuric acid ,
oil refining or the extraction of
aluminum from
bauxite by means of
electrolysis ? It seems that you can come up with many different metaphors that fit anything. I admit honestly, I am not a fan of gardening and agricultural metaphors.
Another metaphor appeared in Chip Camden’s recent post “
Why programmers should learn the art of programming ”
A discussion of the theory of computation, for an average programmer sitting in a trench, is the same as discussing the chemical properties of nitrate while the shooting is going on: everything can be very correct and sensible, but not directly related to the problem facing it.
I do not want to be instructive or particularly witty, but it seems to me particularly ironic that for his metaphor, Chip chose the saltpeter, which is part of the
black powder , the outdated formula of gunpowder, which was replaced by
smokeless powder . In the late 1800s, an understanding of the problem of black powder, which is based on the chemical properties of nitrate, in some cases solved the outcome of the battle. Black powder produces thick white smoke, and in some battles, having smokeless powder, you could go unnoticed, but using black powder, you created a large, noticeable smoke signal that gave out your position. New technology provided benefits to keep you alive. And the smoke from the black powder created another problem, as when firing for a long time, a huge amount of smoke accumulated through which the shooter could no longer see the target. This phenomenon was given the name "fog of war."
I do not know how appropriate this chemical metaphor will be, but interesting parallels can still be traced. In the early days of the chemical industry, large industrial lead chambers, which were invented in the middle of the 18th century, were used to extract
sulfuric acid . This process was not well studied and was ineffective in that it required
expensive nitrates imported from Chile, which were partially oxidized and evaporated during transportation. Only 100 years later, scientists have found a way to recycle nitrates to increase production efficiency. Only then, at the end of the 19th century, chemical technology as a discipline was firmly established in college programs and a separate association was created.
Since then, the advanced sciences of chemistry and stoichiometry, in the same way as thermodynamics, have taken the most important steps in their development at about the same time. I simplify everything a little, but in the end, at this time, little understood processes that were discovered and debugged by trial and error became more studied and controlled and improved empirically by applying the laws of natural science and mathematics.
The next parallel lies in the
process of reusable use , namely that when you build a new plant for the production of sulfuric acid, you do not want to invent it from scratch every time. And in any discipline there are factors of chaos and ambiguity, including in thermodynamics and computer science. From the point of view of sociology, today software has no less influence on our lives than the chemical industry, because it is this keyboard that I look at and almost everything I can see are products of the chemical industry. But what negative consequences can these chemicals entail, and can these chemical industry problems be related to software development problems?
Now, however, there is quite a big difference between the chemical industry, the construction of bridges and software development. In common with the construction is the fact that people need to come together to create
something more that can not be done by one person. The similarity of software development and the chemical industry is that if you have already created and launched some product, you need to maintain it and make the necessary improvements while the product is working, and in some cases remove it from the line or create a new product in parallel, until the old version is still in production. Similarly, we could consider computer science and mathematics as closely related sciences with software development, just like chemistry, stoichiometry and thermodynamics are related to the chemical industry.
Agreeing with
Donald Knut , I believe that in software development there is a very important element of creativity, which, like the construction of bridges, allows us to bring together a group of people to create something beautiful. A possible analogy with software development is the construction of bridges, where we are still
not clearly aware of all the processes behind the construction process.
The question here is, can we create a discipline that studies software development and is not inferior in efficiency to other disciplines? If we use the metaphor of chemical production, then where are we now on the path of understanding the science itself and its introduction into the process? Based on such a comparison, we may be somewhere at the beginning or at the end of the 19th century, but I very much doubt that the time scale here is linear and most likely this development scale will be more like
an exhibitor . Or maybe software development is a separate entity, and our metaphors restrain our thinking and prevent us from objectively looking at reality?
The software development industry differs, practically, from any other technical industry known to us, given the huge number of people involved in software development around the world, and it seems that the threshold for entering this area of ​​activity may be lower than that of other engineering disciplines, and according to official degrees.
Answer: We are Developers!
Dmitry_Zhariy says:
Read this text in English!
Try to read the text of this article in English for the sake of improving your skills and goodness.
The following link leads to a parallel (bilingual; mixed, English and Russian) version of this article. Read the text in English and use the Russian translation below, if suddenly you lose the meaning of the English text.
[EN / RU] Q: Are we not engineers?