Fog Creek Software
Discussion Board

Peter Coffee on Apollo 11, the 747 and .NET

Anyone read Peter Coffee's column in the Aug 5 issue?,3959,437228,00.asp

In it he talks about recent MS statements regarding software engineering advancements and Bill G's views on the challenge of .NET. The last two paragraphs:

"What provoked me past the point of tolerance, though, was Bill Gates' statement late last month that the challenge of Microsoft's .Net is "easily greater than tough engineering problems like getting to the moon or designing the 747." This is not mere hyperbole; it's fundamentally wrong. Unlike a lunar module, software can be tested under working conditions. After deployment, software can be designed to trap and handle failures. Software gives second chances; a moon landing does not. A 747 is designed and built for a useful life of decades. It's subject to ruthless scrutiny for safety and expected to meet a relentless schedule of uptime. Enough said.

If software people want to enjoy the respect that we give to rocket scientists and other real engineers, let them earn it. They'll have to work a lot harder than they have so far."

Spot on.

Mark Williams
Thursday, August 8, 2002

Compare the number of "moving parts" that must be tested in a 747 versus Windows XP. Compare the stable requirements of a 747 versus Windows XP. Compare the limited, controlled environment in which the 747 operates compared to the software and PC hardware chaos that Windows XP must support.

I think that (some) software development is orders of magnitude more complex than designing a new airplane. I read a nice quote that compared software development to designing the Empire State Building but only using a 21" viewport when looking at the building during construction.  ;-)

Zwarm Monkey
Thursday, August 8, 2002

"I think that (some) software development is orders of magnitude more complex than designing a new airplane."

Perhaps there's some kind of "conservation law" at play here, so that software ends-up being orders of magnitute less reliable than an airplane.

J. D. Trollinger
Thursday, August 8, 2002

*Some* software development might be more complex than designing a Cessna 152, but a 747??? No way. A 747 contains hundreds of thousands (probably millions) of parts, miles of wire, several thousand feet of pressurized fuel and hydraulic lines, equipment that must operate sitting on the ramp at 110 degrees or at -50 degrees at cruise altitude, and on and on and on. Add to that the consequences of uncontrolled failure can lead to the death of 500 people and can begin to appreciate the complexities and seriousness of the task.

Mark Williams
Thursday, August 8, 2002

Don't forget the software required to operate and manage it.  Oh no, my brain just went into an orders of magnitude complexity loop.

Thursday, August 8, 2002

Don't forget also that the market realities of mass market software is radically different than something like the 747.

How long did the design process for the 747 take? At least a decade, I would expect. And how often did the requirements change for the 747? After they decided what the payload had to be, that was pretty much it for requirements changing.

For something like an OS or .NET, if you take 10 years to finish you're DEAD. Even 2 years is pushing it. By the time two years has gone by the requirements have most likely changed beyond recognition.

I think part of the problem is this: software is SOFT - it's infinitely malleable. And yet, in our quest to be "engineers" we take our cue from processes used in things like manufacturing, where requirements are HARD and FIXED and stay that way for years. Totally different worlds.

Say what you like about the hype surrounding extreme programming, but the core idea is a very important one - software needs to be able to change. Build it so change is easy.

That's a whole different realm from building a 747.


Chris Tavares
Thursday, August 8, 2002

And there is plenty of software in aircraft these days. And software already connects the brake pedal to the brake system hardware on several production vehicles that we commute with on the road. Mercedes will be releasing a vehicle that is also steer by wire. Gives new meaning to the blue screen of death.

"Dan Sickles"
Thursday, August 8, 2002

747 are not designed and built to be flow for decades.
747 are serviced constantly.  There are thousands of known bugs in 747s. 

It makes sense to compare complexity of seperate domains as measured by time  and effort, but thats it.

Thursday, August 8, 2002

"Gives new meaning to the blue screen of death."

Ha Ha, classic!!

Thursday, August 8, 2002

There are two important points to be made here:

#1, good software takes a long time. Windows XP has been under developer more 12 years. That is a very long time. Good software takes years and years

Joel even has a good article on this called good software takes 10 years:

#2 Software is not a physical product like a plane or a bridge.

The limits of a bridge, or the limits of a plane can be defined. In software there are NO limits. The only limits that exists are those of the human mind.

You can only put so many fence posts in the ground in a day.

For software, there is not this limit. It is not a physical product, and therefore it is not subject to physical limitations. It is a conceptual product vs a physical product like a car. That is why a good software team is SO MUCH  better than a bad software team.

Two teams that put fence posts in the ground can ONLY run back to the truck so fast to pick up the next post. In software, this physical limit does not exist. Hence, the difference between the two fence post teams can be perhaps 30, maybe 40% difference in productively. In software, it is typical to see more than 10 TIMES difference in productivity from team to team. Again, this is due to the non physical nature of software.

So, while we can try and argue that a 747 is more (or less) complex than a software is physical, and the other is not. Because of no physical limitations, we are free to attack much more complex problems in theory, and not worry about the consequences. It is the lack of physical consequence that allows us to attack more and more complex problems.

A new commercial JET today does not really solve any new problems than a jet that was created 10 years ago. They both do essentially the same thing.

This is not the case for software. .net aims to solve a particular problem, and it is a new problem.

Albert D. Kallal
Edmonton, Alberta Canada

Albert D. Kallal
Thursday, August 8, 2002

I read it. He doesn't know what he's talking about. Many rocket scientists spend all their time writing code. And some of it is buggy, or would quickly become buggy if it was subjected to the requirements of shrinkwrap commercial software

Rocket Scientist
Friday, August 9, 2002

"This is not the case for software. .net aims to solve a particular problem, and it is a new problem."

But what introduced the problem? Software these days, seems to be solving an awful lot of problems that where created by software. Or more generally, replace software by computers.

It is too easy to say that requirements for software are changing constantly. They are not, at least not if you look at the human goals they are meant to support.
Because computers are supposed to help people solve their problems, and people live in the real world, where there are real boundaries. And people have real world goals.

What might change is that people define new goals, by moving boundaries, but that usually does not change the value of existing goals.

That is of course, unless you have expressed those in technical solutions. Then they might change from technology to technology.

For instance, my requirements for an operating system have been the same over the past 20 years, and they're still not met. And that's not only because I require no operating system.
I require to keep track of my cd collection, and I require to make my financial management easier, I require many things that have not changed fundamentally over the past years, but what I do not require is an operating system. That's merely a nuisance that was invented by the computer discipline. An invention I wouldn't mind if it wasn't such a nuisance.

Erik van Linstee
Friday, August 9, 2002

Simply put: Gates is fucking dellusional.

The conceptual abilities required for aircraft design (fluid dynamics) are so fundamentally more demanding than what amounts to an overgrown peice of web software, its ridiculous. 

As if MSFT were the first company to "pioneer" what amounts to nothing more than enterprise Java, and then call that an apollo mission, constitute the ramblings of a CEO mental case.

What a fuckup.

Nat Ersoz
Friday, August 9, 2002

Oh yes, and lest we forget:  "He's the world's greatest programmer too."  Ahh, we're livin' large now...

Nat Ersoz
Friday, August 9, 2002

The lunar module (and 747 for that matter) was devleoped in < 10 years, by fewer people, using slide rules. If the question is, 'which is a more complex problem', then just do the math, .Net is. If the question is 'was Wernher Von Braun smarter than Bill Gates', well we could talk all day, but that wasn't the question I think.

The real problem is that that kind of statement intentionally implies, 'who is more heroic' or 'which is a greater accomplishment', which is why everyone gets so hot in their panties about it I would guess.

Robin Debreuil
Friday, August 9, 2002

"Simply put: Gates is fucking dellusional." (Nat)

Whoo! /Someone/'s had a bad day at work!

Friday, August 9, 2002

As a master of science in aeronautics and currently coder I think I do have some right of speech.

This discussion resembles the ones one has late at night in a bar after a couple of beers, where you discus who is the greatest sportsman of all time, Pele or Babe Ruth.

Trying to compare designing a 747 or getting to the moon with Windows XP or .NET, just makes no sense at all. So let's just say that all are great accomplishments.

But if you ask me late at night I would argue getting to the moon ;)

Jan Derk
Friday, August 9, 2002

yeah, the software geeks all get better looking at closing time - even the CEO's.

If you ever hear the word's "open the kimono" uttered by an MSFT employee, leave.

But anyway, he started it.

Nat Ersoz
Friday, August 9, 2002

I'm surprised nobody's mentioned this joke:

You'd think Bill would have learned not to make comparisons with other industries by now.

There's a saying: "A million drills are sold every year, but not one person wants a drill. What they want is a hole."

The thing about .NET is it doesn't do anything for the average user. Sure it does lots of wonderful things that enables developers, including Microsoft, to develop cool applications and sites and services and things which do cool things for the user, but nobody really cares except the developer. The user might appreciate the fact that a well engineered application crashes less, but it's not supposed to crash in the first place.

Nobody buys software because they want software (except us geeks). They buy it because they think it will make their lives easier. If a piece of software saves them 3 hours on a task, but because of its stupid interface it wastes 30 mins, they quickly forget about the 3 hours they've save and complain about the 30 wasted minutes.

Designing quality software is hard. Sending men to the moon is hard. Building passenger airliners is hard. But when we say one engineering task is more complex than another of a different discipline, we belittle all the acomplishments of that industry, and naturally practitioners of that discipline strike back at our industry.

So let us rejoice in each others achievements and not get into slagging matches...

"You think you had it hard? You was lucky, you was. When I were a lad..."

James Shields
Friday, August 9, 2002

"This is not the case for software. .net aims to solve a particular problem, and it is a new problem."

The only problem .NET solves is that of lazy programmers (I'll admit that I am one). I can't think of one thing that .NET does that we couldn't do using existing development software. It just makes those tasks easier, less time consuming and more profitable not to mention more fun.

The end user wants cheap reliable software that solves their percieved need but they don't really care how the developer got there. We've done this for years and now MSFT wants us to beleive that the only way to do it is .NET

Friday, August 9, 2002

Why does everyone think software is so hard?! 

I mean really, if you understand discrete math/logic (as most science/math/engineering types do) all you need is a boot camp for whatever language you want to write in.  Yeah, requirements change, big friggin deal, its human nature, get over it.

Give me one of those apollo engineers, and I can make him into a programmer in 6 months, tops (if he isn't one already!!).  Give me a programmer, and its going to take years to turn him into an aerospace engineer (assuming he isn't one already).

big brained guru programmer, I guess?
Friday, August 9, 2002

Truer words were never spoken.

Nat Ersoz
Friday, August 9, 2002

Tribesman #1: Look at my straw hut. It was clearly harder to create than your grass hut.

Tribesman #2: No. Look at how many different types of grass my grass hut is made of, it cleary is more complicated.

Tribesman #1: No, my straw hut has equal amount of types of straw if not more and it must look good also.

Tribesman #2: I understand that, but if my grass hut fails my head will be placed around the neck of our leader. Literally.

Does anyone see the nature of this conversation? It's merely disguised bravado with a few "facts" thrown in for the sake of argument.

Ian Stallings
Friday, August 9, 2002

One more thing:
[This is not mere hyperbole; it's fundamentally wrong]

can anyone point out one hyperbole that is fundamentally right? Hyperbole IS exaggeration.

Ian Stallings
Friday, August 9, 2002

I think the notion that software tackles fundamentally harder problems than the physical engineering disciplines is just a conceit of those of us doing software. I do believe that we often build systems that are more complex than some of the simpler, well-understood problems in the physical engineering world. However, the complexity is often more an outcome of being sloppy in design than it is in the inherent difficulty of the problem being solved.

Yes, software requirements change quickly. But is this because of an inherent quality in software, or because we don't do enough requirements analysis and prototyping before we begin design?

Finally, comparing .NET to the Apollo program, I think, demeans those in the Apollo program. Bill is a bit too full of himself and out of touch with the world outside his personal boundaries -- a common ailment of those whose life is work. .NET is largely a marketing scheme, not an engineering project as far as I can tell.

Jeff Kotula
Friday, August 9, 2002

>> Finally, comparing .NET to the Apollo program, I think, demeans those in the Apollo program.

This is for sure true.

However, Microsoft is rebuilding and re-doing all of their main development tools. The very essence as to how new software is to be created is being changed. I cannot recall ANY company that that attempted such a large change. They are basically saying here is a new set tools to write software with, and they are not based on existing tools. That for one is huge change. So while most of us may not think (or even care) that this is a big deal, you can bet that MS does.

They bet the whole farm on this, and complete re-write is a huge undertaking.

Joel has commented quite a bit on this issue of NOT throwing out software (I agree, it is a bad idea). Also there is the fact that good software takes a long time to write (again, MS is going against the grain here). MS is certainly running against many currents at the same time on this one. I am sure they feel this is a moon shot for them.

Also, there was some comments made here about the writing of software not being hard. Well, everyone here can read and write. However, how many people here make a living writing? Tom Clancy can walk in off the street and get an advance of at least 1 million dollars from any publisher.

There are no barriers to entering the book market, and we can all read and write. How many of you can get 1 million for your next book? Why don’t we all go write a book and make a million? It is so easy to write, why are you all here reading my dumb words here in this post???

The same goes for software. It is not hard to write software.

It is hard to write software that makes you a million.

Albert D. Kallal
Edmonton, Alberta Canada

Albert D. Kallal
Saturday, August 10, 2002

As for the issue of what .net solves. Yes, it is a new problem.

.net allows the object model in a program to be exposed to the web.

That means in my code I can set a reference to a object on the national weather web site (for example). I now have a object in my code that can give me stuff like.

clsWeather(“Edmonton”). Temperature
clsWeather(“New York”).Temperature
clsWeather(“New York”).Humidity
clsWeather(“New York”).High
clsWeather(“New York”).Low

Hence, .net is a change where the object model of programming is extended to the internet. This is much more than just a new IDE, it is a extension of the programming model to allow communication between objects across the net. We can’t do this now, and .net does allow this.

It is a very big change indeed.

Albert D. Kallal
Edmonton, Alberta Canada

Albert D. Kallal
Saturday, August 10, 2002

I agree with Albert.  .NET is brand new; this is not a COM+, MFC 7.0 incremental improvement.  Is it revolutionary?  No, not really, but it isn't a rehash of old technologies like some have suggested.  Most companies don't make money by being revolutionary, they make money by doing something boring and doing it better than the other guy.

Which brings me to my point.  MS is in a bit of a pickle.  If they continue to use 8-bit bytes, they get slammed for being "derivitive" and people say "what's else is new?".  If the use 9-bit bytes, they get slammed for not following standards.  There's no way they can win here.

Would anyone argue that MS needed a clean object model for their APIs?  Would they argue that they needed deep IDE support for a modern language (C#)?  Can it be argued that they needed better transparent API support for internet development?  Would anyone dispute that V.B. Joe is a necessary part of the dev landscape (for better or worse)?

MS answered all these questions with .NET.  Personally I don't want revolutionary.  I don't want set based languages, or reflexive APIs, or other academia.

I'm happy that MS just developed this and said "here you go" rather than going through some sort of 5 year "standards" process and ending up with CORBA.

My company develops accounting software for companies with 25 to 800 employees.  All of our clients and prospective clients have Windows.  For the next 10 years at least, they'll all have Windows.  Only some of them have a permanent IT staff.  They need a CD with a "this side up" sticker on it.  Put it in and go.  I can do this with .NET.

The defense rests.

Bill Carlson
Saturday, August 10, 2002

What is an engineering problem?  If it's about coordinating people and meeting nontechnical constraints, .NET may be more complex.

At least with the moon missions, there was probably a clear objective.

Saturday, August 10, 2002

*  Recent Topics

*  Fog Creek Home