TETHICS

Silver Bullets and Laser Guns: an Argument with Fred Brooks

Fred Brooks had a huge influence on me as a young adult—both as a software engineer and as a manager. But today, looking back at everything he said (and I believed)—it seems to me there’s another way. I can’t claim that it’s better, him being Fred Brooks and all; but I really think its foundations are more humanistic, and it’s more in-line with the future.

Dan Gittik

--

How I Agreed

The first book I read on management was Peopleware. Its premise was simple: managers should guide and enable their employees, who will do wonderful job just by virtue of being smart, wonderful people in an autonomous, wonderful environment. It was a horrible failure; more due to me and to the team being young and inexperienced than to Peopleware being wrong, but still—it made me naturally gravitate towards the opposite school of thought, where I discovered the Mythical Man-Month.

“Whereas Peopleware says managers should be like kindergarten teachers,” I would passionately explain, indulging myself with a dash of demagogy, “The Mythical Man Month says they’re surgeons. I mean, there’s a reason you were put in charge of the project—you know how to do it best, and the rest of the team is there to assist you in making it happen, not the other way around.”

This presumptuous approach played well with the already-entitled mindset of the hi-tech community I came from (“we get paid more than other people, so we must be smarter”). It took me many years to shake it off, because of how convenient this notion was: it meant I should insist on doing things my way, because “I’m smarter”. In actuality, it made me more cynical, less empathetic, and overly confident in my (equally arbitrary) values. Worst of all, it came wrapped in a lot of brilliant insights, presented by Brooks in his enchanting and erudite eloquence. I particularly liked the one about the Second-System Effect:

An architect’s first work is apt to be spare and clean. He knows he
doesn’t know what he’s doing, so he does it carefully and with
great restraint.
As he designs the first work, frill after frill and embellishment
after embellishment occur to him. These get stored away to he
used “next time.” Sooner or later the first system is finished, and
the architect, with firm, confidence and a demonstrated mastery of
that class of systems, is ready to build a second system.
This second is the most dangerous system a man ever designs.
When he does his third and later ones, his prior experiences will
confirm each other as to the general characteristics of such systems, and their differences will identify those parts of his experience that are particular and not generalizable.
The general tendency is to over-design the second system,
using all the ideas and frills that were cautiously sidetracked on
the first one. The result, as Ovid says, is a “big pile.”

Oh, how true it rang. And still is; I really believe it. But the underlying narrative of a top-down, prescriptive approach I’ve come to resent; and it unravelled years later, when I re-read an unrelated paper of his: No Silver Bullet.

Tectonic Shifts

In his essay, Brooks talks about “essential tasks, the fashioning of the complex conceptual structures that compose the abstract software entity, and accidental tasks, the representation of these abstract entities in programming languages and the mapping of these
onto machine languages within space and speed constraints.” He then establishes that “unless accidental tasks account for more than 9/10
of all programming effort, shrinking them will not give an order of magnitude improvement”. Finally, he concludes:

Not only are there no silver bullets now in view, the very nature of software makes it unlikely that there will be any — no inventions that will do for software productivity, reliability, and simplicity what electronics, transistors, large-scale integration did for computer hardware. We cannot expect ever to see two-fold gains every two years.

Let’s start with the simple fact that this is just plain wrong. The inventions of operating systems like Linux (and the Open Source movement), tools like git (and the concept of version control), languages like Python (and their respective ecosystems), paradigms like Cloud Computing and DevOps, and entire fields like Data Science and Machine Learning have all proved him wrong; they completely revolutionized computer science and how software is written, managed, and run. They effectively re-invented the way we think about problems.

And that’s where the dog lies buried—not in that Brooks couldn’t predict the future, because no-one can; but in that he simply extrapolated his present, which he understood phenomenally well, and preached it with great confidence. This, in turn, created a school of thought, where the students draw on the founder’s wisdom, preach it as their own—and, ultimately, fail themselves and others.

And it’s not a new idea: the Sapir-Whorf Hypothesis claims that the structure of a language affects its speakers cognition (like Newspeak in 1984), and while it’s not entirely true, there is some truth to it; the way we phrase the problem often affects the design of the solution, because even its terminology assumes a certain mindset, which isn’t necessarily the truest or most optimal. Taking a step back and re-imagining the whole thing often leads to completely amazing and absolutely trivial revelations.

Take Nicolaus Copernicus for example, from as early as the 15th century. In his day, people assumed the sun revolved around the earth, and in trying to capture the planetary motion arrived at formulae such as:

ea = 0
me = sin(t) + 0.37 * sin(t / 0.24)
ve = sin(t) + 0.71 * sin(t / 0.62)
su = sin(t)
ma = sin(t / 1.88) + 0.65 * sin(t)
ju = sin(t / 11.9) + 0.19 * sin(t)
sa = sin(t / 29.5) + 0.10 * sin(t)

These +s in the middle make it quite annoying to do any serious calculations with this, but Nick noticed that if you put the sun at the center, the math works out much nicer:

su = 0
me = 0.37 * sin(t / 0.24)
ve = 0.71 * sin(t / 0.62)
ea = sin(t)
ma = 1.52 * sin(t / 1.88)
ju = 5.21 * sin(t / 11.9)
sa = 9.26 * sin(t / 29.5)

And guess what—it turned out that the sun is, indeed, at the center. Luckily, they didn’t burn him at the stake, as was customary for coming up with new ideas back then. The funny thing is, it wasn’t even a new idea—just a new way of looking at an old idea. I really like Wittgenstein’s take on it:

“Tell me,” Wittgenstein’s asked a friend, “why do people always say, it was natural for man to assume that the sun went round the earth rather than that the earth was rotating?”
His friend replied, “Well, obviously because it just looks as though the Sun is going round the Earth.”
Wittgenstein replied, “Well, what would it have looked like if it had looked as though the Earth was rotating?”

To conclude, it feels to me like Brooks lived in a world of horses, with various horse-related optimizations like horseshoes and saddles; and he was imploring people to stop looking for better vehicles, and instead focus on developing the future: algorithms for route-finding, and the integration horses with the Global Positioning Systems and data-driven traffic prediction.

Luckily enough, some people were preoccupied with accidental tasks just enough that their frustration blossomed into innovation, and they ended up inventing the car. This changed mobility completely; and in doing so, reset the entire field insomuch that none of the previously-solved “accidentals” were relevant anymore. This rebooted the market (and the return on investment) for working on accidental tasks; in fact, this reboots the market every time there’s a paradigm shift, and suddenly new, better tooling is in great demand. The accidental task of operating the car changes from manual gear to automatic; the accidental task of charging it from fuel, to diesel, to electricity; and the accidental task of driving it from wheel-steered, to cruise-control, to autonomous driving; and the paradigm started shifting again, back to walkable 15-minute cities and bike lanes, and in the age of coronavirus—working from home and talking over Zoom, with AR telepresence looming in the future.

Brooks said there’s no silver bullet; but the fact is, there was—there were silver bullets aplenty, and they killed off the werewolves, and now we’re on to shooting laser guns at aliens; thinking by other methods; living by other values.

From Ivory Towers

What I dislike about this school of thought is how cynical and short-sighted it is. It’s developed by smart people, who understand the world—but that bit they understand makes them generalize and assume wisdom on other fields; and sometimes on other peoples, with other values and priorities.

And with such rhetoric, it’s natural for it to develop a following; but what a shame that it’s one of managers who think of themselves like surgeons, and problem-solvers that presume to come up with the right meta-analysis of software. This, truly and ignorantly, stunts progress, and steers people down wrong paths: it grows a generation that tries to treat new diseases with old medicine.

Did you ever wonder why houses have triangular roofs? It’s to break snow; the flakes roll over without accumulating and collapsing the roof. I live in sunny Tel Aviv, where it doesn’t snow; and here’s my neighborhood—

Neve Tzedek, Tel Aviv, Israel. It’s 25–40°C outside.

Because that’s how people are: they build triangular roofs, and they use inheritance instead of composition, and they tell you that some problem is solved, or that there are no silver bullets. And even if they’re brilliant, when they only disclose their output, instead of open-sourcing their thinking function—it’s only valid for so long. And when it’s no longer, there’s no way to repeat it for new inputs. We’re in computer science, for God’s sake; we should know that this is not how you use functions.

--

--

Dan Gittik

Lecturer at Tel Aviv university. Having worked in Military Intelligence, Google and Magic Leap, I’m passionate about the intersection of theory and practice.