Skip navigation.

exploreopera

| Help

Sign up | Help

Software Development

Correcting The Future

No Silver Bullet Debunked (Shorter Version)

I want to write a shorter version of my previous article. What I really want to do is make it clearer and to the point. I believe I have accomplished that here.

We should start by saying that Brooks No Silver Bullet paper contains no proof. Also, costs in other fields often surpass software by several orders of magnitude. We don't need to build billion dollar fabrication plants. We don't need to build our software from scratch every time we release something. We don't need to take into account human lives when developing software. But for all these realities, we're supposed to believe that costs can't be brought down as in other fields. This is a joke. Pure and simple.

Here's a little cost trivia for those that believe in the No Silver Bullet theory. This quote can be found here as one of the question how many workers died in during construction of the Golden Gate Bridge.

Until February 17, 1937, there had been only one fatality, setting a new all-time record in a field where one man killed for every million dollars spent had been the norm. On February 17, ten more men lost their lives when a section of scaffold carrying twelve men fell through the safety net.


I'm going to quote one part again.

where one man killed for every million dollars spent had been the norm.


From this point on, anything that has to do with software is trite. My point is that we could start off with high costs and then bring them down. We don't need to. It's already dirt cheap to produce software compared to many other fields.

So all that's left is to say that it's so cheap in fact, that we cannot bring costs further down. This is also pure fantasy. Brooks has four points. These four points are his claims as to why software is more difficult than other fields and why there is no silver bullet. Let's quote him.

Let us consider the inherent properties of this irreducible essence of modern software systems: complexity, conformity, changeability, and invisibility.


One point, his last, is so easy to disprove, I can just link an example.

Argument 4: Invisibility

Software is invisible and unvisualizable.


Let me debunk this once and for all.

Take a look here.

That's the node editor in Blender. With a certain set of primitive components, you can build ANY software. Anything in existence. So I'm not talking about Blender the software, or how to build the node editor. I'm talking about building software within the node editor. It works. And people like using it. This point of Brooks' that software is invisible is dead wrong. It's false. And it should be done with once and for all. People used to say that we'd never use graphical GUI's because text was so much faster and took less memory. Brooks says the screen is too small. Tell that to the people that make Blender and Lightwave.

We've just debunked 25% of Brooks' argument. I hope this part was clear. I must also mention that what you've seen here with nodes is NOT a flowchart. It is data flow. It exists in the spatial dimension unlike flowcharts that exist in time. Software existing in the spatial dimension is something that Brooks incorrectly says is not inherent with software. That picture proves him wrong because that picture exists and works. So while Brooks argues that describing execution in a visual fashion does not work, this says NOTHING about data flow. He uses execution to make an argument for data flow. You can't do that. This is the kind of argument lawyers make.

3. Changeability

The software entity is constantly subject to pressures for change.


Somehow, we are supposed to believe that software changes more than things in other fields.

This point is so ridiculous, I cannot fathom how anyone could have thought of it.

Buildings do in fact get changed, but the high costs of change, understood by all, serve to dampen the whims of the changers.


Brooks' debunks himself. I shouldn't have to say anything about this, but here goes.

If there's something wrong with anything you build, you want to change it. It doesn't matter if it's hardware, software or whatever else. Just think about game cartridges back in the Nintendo days. You couldn't just send out a patch if you were one of these developers. They wanted to. But they couldn't. Even for faulty components. A callback doesn't happen often because of what Brooks says, it costs too much. But it's not because they don't want to send an update.

Over the years, software has been able to reduce costs of duplication and update by an unimaginable amount. Today, we have things such as free packaging and installation software. We have patch software. We also have automatic updates.

In all fields, new releases happen. So in all fields, there are costs associated with this. Only software can increase the amount of releases because costs have been brought down so much. But the development of these new releases must happen in all fields. So that cannot be Brooks' point. The hardware field doesn't stay idle in between releases.

Change is not a disadvantage. Neither is it an increased cost. It's a benefit and you will reduce costs and loss of sales if you can fix things quickly and easily. I hope this argument about change dies quickly and easily too.

2. Conformity.

This one makes me laugh. Brooks debunks himself here again.

These differ from interface to interface, and from time to time, not because of necessity but only because they were designed by different people, rather than by God.


If it has to do with people, then we can come up with better solutions, so this is an accidental complexity. He even says it's not a "necessity". I'm not sure why Brooks even bothered to write this section.

1. Complexity.

So software complexity is complexity. Not sure whether to laugh or cry at this point.

This part is annoying to debunk because there's a lot of unsubstantiated claims. But I'll give it a try. We need two quotes and a shot of rye for this one.

The complexity of software is an essential property, not an accidental one. Hence, descriptions of a software entity that abstract away its complexity often abstract away its essence.


First, he makes an assumption and then makes a conclusion based on this assumption. I have to dismiss this claim right here and right now. But for the sake of argument, let's see why the complexity of software is not essential. To do that, we must know what parts Brooks believes are essential to software. Luckily, he mentions this earlier on. Let's look at that.

The essence of a software entity is a construct of interlocking concepts: data sets, relationships among data items, algorithms, and invocations of functions.


I have no problem with data sets and relationships among them. But algorithms and invocation of functions are not essential to software. Look at the Blender example, there are no functions and no algorithms. Done.


All four points have been debunked clearly and concisely. Ironically, Brooks debunked two of his own points. I really hope that people put this paper to rest. And if I wrote this article in a somewhat mocking way, it's because this paper has been an evil joke on all of us. There is not one bit of proof in the No Silver Bullet paper. Not one. Even the anecdotal evidence is wrong. In many cases, he uses evidence for one thing to argue for something unrelated as he did with dataflow. The only thing he's perhaps done is argue against functions. I find it odd that the people who use functions are the very people who support the No Silver Bullet paper.

Profiler DataProject V: Conquering Types

Comments

avatar
Monkeyget writes:

Let me criticize your criticism (oops, here comes recursion, I hope you won't criticize my criticism or else we'll get a stack overflow :smile: ).

What you say is right but it's beside the point. What NSB is all about is NOT what you think it is!





Brooks is ONLY talking about internal development costs. He is NOT talking about the selling price of software, duplication cost, cost of hardware needed to run software or anything like that.

(The cost of the development of software is supposed to be directly tied to the time it takes to build it.)



The ONLY thing Brooks is this : there is not going to be a groundbreaking advance (a silver bullet) which will make software development 10 times faster (and therefore 10 times cheaper).

That's it. :]



Now you're probably thinking that it can't possibly be that simple. But it is :smile:.

I admit he doesn't make it very clear and it's easy to misunderstand what he is talking about. Just look the wikipedia entry about NSB :

"Brooks argues that there will be no more technologies or practices that will serve as "silver bullets" and create a twofold improvement in programmer productivity over two years. The phrase is often quoted and applied to productivity, quality, and control." http://en.wikipedia.org/wiki/No_Silver_Bullet

Ok so it's not only about productivity but also applicable to reliability/quality. If you have a technique which increases the quality/reduces the number of bug your productivity will also go up so it's not that far fetched.





It may sound obvious to you but it's not necessarily so. Remember that this was written 20 years ago. At the time there WERE silver bullets invented no long ago which did involve tremendous boost in productivity. In the article he cites : High-level languages, Time-sharing and Unified programming environments.

At that time it was a good question to ask weither or not there would be new things as effective as those.

This paper is still relevent today because there are still people today claiming to have a magic solution to boost productivity. Think of the highly paid consultants trying to sell to big companies the latest fad or companies such as microsoft/sun/oracle claiming that their latest software development tool will boost the productivity of programmers.





Another interesting element in the paper is the notion of essential and accidental complexity.

Essential complexity : What's inherent in the nature of software. what the software must do is hard so there is no magic solution. http://en.wikipedia.org/wiki/Essential_complexity



Accidental complexity : difficulties which arises but are not inherent to the problem to be solved. http://en.wikipedia.org/wiki/Accidental_complexity



A good question for oneself to ask is : what part of what I am doing is essential complexity and what part is accidental complexity. How can I reduce the part that is accidental.







YOu disagree with some things such as invisibility of software but this entry is already big enough so I won't address those.





I hope i was clear enough :smile:.

By anonymous user, # 4. November 2007, 16:53:14

avatar
Brooks is ONLY talking about internal development costs. He is NOT talking about the selling price of software, duplication cost, cost of hardware needed to run software or anything like that.


Duplication costs are part of the production costs. It's part of software. And selling price has to pay for the costs of development. I know full well what Brooks is talking about. So nothing here affects anything. Besides, it's Brooks that was talking about things OUTSIDE of development costs and was talking about change. Change that happens for release. You can't tell me that hardware designs don't change during production. Look at any circuit board in production, you can always see traces that have been left out.

The ONLY thing Brooks is this : there is not going to be a groundbreaking advance (a silver bullet) which will make software development 10 times faster (and therefore 10 times cheaper).


I get that too. But his arguments that attempt to support this are bogus. And I've shown they're bogus. I also believe that there may be a silver bullet. Look at our brains and anything that is organic.

Now you're probably thinking that it can't possibly be that simple.


No, I got it from the very start when I first read the paper years ago.

This paper is still relevent today because there are still people today claiming to have a magic solution to boost productivity.


That happens in all fields. Look at all the infomercial and SPAM we get. But there indeed can be a silver bullet. At the very least, Brooks' argument does nothing to support the claim that there can't.

What's inherent in the nature of software. what the software must do is hard so there is no magic solution.


Bzzzt! Wrong. Read the paper again. What you say is supposed to be hard is what Brooks cites as his four reasons: complexity, conformity, changeability, and invisibility. I even quote it in the article. C'mon man. I disprove each of those points.

How can I reduce the part that is accidental.


No, I showed you can reduce or eliminate what Brooks calls essential complexity. You can say it was actually accidental complexity, but then you'd have to agree that Brooks' arguments are flawed.

YOu disagree with some things such as invisibility of software but this entry is already big enough so I won't address those.


I blasted that one out of the water. Killed it beyond recognition. And it's part of the 4 criteria for essential complexity. I think it deserves mention.

You were clear, but probably not in the way you think. You should reread the paper, especially the part about essential complexity.

By Vorlath, # 4. November 2007, 18:42:19

avatar
I have to address this again:

Brooks is ONLY talking about internal development costs. He is NOT talking about the selling price of software, duplication cost, cost of hardware needed to run software or anything like that.


I don't talk about selling price of software in this article.
I don't talk about cost of hardware needed to run software.

I do talk about duplication costs. This is because it is a development cost. If it isn't, then don't deploy and don't use your software and see if your costs don't go up.

But this brings up a perfect point where Brooks is again inconsistent. Brooks is the one who talks about there not being many recalls. In one part, he uses this to mean that hardware is more reliable. But in another part when arguing about change, he says it's not done because the costs are high. I'm sorry, but I don't accept two mutually exclusive arguments.

He can argue that hardware is reliable, but then he can't say that hardware isn't changed often because of the high costs. That should not be a consideration in the first place. But if the high costs are the reason that hardware isn't changed often, then it means they would like to distributed these changes and that hardware isn't actually that reliable. It's one or the other. It can't be both, yet Brooks argues on both sides of the fence.

By Vorlath, # 4. November 2007, 19:26:24

avatar
Josh writes:

Don't look back man! Don't look back!

By anonymous user, # 4. November 2007, 19:40:53

avatar
I don't follow.

edit: Oh, I think you said this before. NM.

By Vorlath, # 4. November 2007, 20:05:41

avatar
Anonymous writes:

"Space travel is utter bilge."



— Richard van der Riet Wooley, on assuming the post of British Astronomer Royal, lecture in London, January 1956.



What Brooks said was utter bilge when he said it and even more so now (unless you are referring to Federally funded projects).



Even a pathetic piece of software like MS Access can enable one developer to do the work of ten - and it is nearly as old as Mr. Brook's argument.



B.t.w. Your parhetic web site does not accept comments from Firefox, so maybe he had a point. (Posted using IE)

By anonymous user, # 5. November 2007, 00:53:00

avatar
Slava Pestov writes:

Vorlath, instead of spending 4 hours a day writing these 1000+ word articles which basically can be boiled down to "you're stupid, I'm smart, neener neener", how about you actually write some code for this "Project V" and release it? Actions talk louder than words.

By anonymous user, # 5. November 2007, 01:12:53

avatar
To anonymous: Yeah, I know about the comments problem. At least it's fixable. And I've been trying to switch to my own site. I'll see if I can't do something about that.

To Slava: 4 hours? It takes like 20 minutes tops. This one took under 10 min because it's a shorter version. But only after doing some research needed for Project V. I guess linking the two is impossible. I don't write anything here that I don't stumble upon while researching stuff for Project V. I found some cool ideas for doing type comparisons better. I had to stop writing that article because something came up. I guess it's not worthy of informing my readers of my finds, eh? Informing people is telling them they're stupid I suppose. Twisting the knife of knowledge. Sorry, but *this* is what's a waste of my time.

To others: Stage 1 of Project V will be done this month or the next. I didn't like how I was doing type comparisons so I'm redoing that part. I always said I'm taking my time and I want this to be fun. And it is. I also have other things on the go. But I like writing and I'm going to keep doing it. I'm always open to suggestions on topics to write about and I know many of my readers enjoy some of what I write.

Not to get hopes up, but if all goes well, I could have something within weeks (if I the type comparisons rewrite goes well).

By Vorlath, # 5. November 2007, 13:09:19

avatar
To Slava:

I think he is relaxing in such a way. Can you work hard all the time on your projects? I play games of surf the Web randomly when relaxing. He is just writing articles. So what?

On the other hand, giving away some valuable ideas sometimes is worth more than writing 1000s lines of code...

By vladas, # 5. November 2007, 18:50:36

avatar
ac writes:

I agree that it's silly to say "there are no more awesome advancements to be made in this field" (if that is indeed what Brooks was saying). Even though it's most likely true that no stunning sudden leaps will be made, it won't stop me from thinking about it.

By anonymous user, # 6. November 2007, 13:45:46

avatar
ac writes:

I will not invest any money on silver bullets :smile:.

By anonymous user, # 6. November 2007, 13:47:04

avatar
Silver bullets don't happen all the time if they do happen. They're usually once in a lifetime events. And this isn't unique to the field of computing. Not investing in silver bullets is a smart decision until you miss the boat when and if it does show up. Many companies missed the boat when the Internet became more popular. Was that a silver bullet? Whatever you call it, everybody agrees today that ignoring the Internet is stupid. And if anyone believes that REAL silver bullets will come with a stamp on it that says so, then I'm not going to pay much attention to their investment strategies.

By Vorlath, # 6. November 2007, 19:18:52

Write a comment

Comment
(BBcode and HTML is turned off for anonymous user comments.)

Please type this security code : 58175e

Smilies

October 2008
SMTWTFS
September 2008November 2008
1234
567891011
12131415161718
19202122232425
262728293031