Tuesday, December 05, 2006

The term "computer science" cracks me up.

The word science generally applies to those fields that use the scientific method, which is a way of learning based on hypotheses, gathering data, and reasoning. The idea that one could program a computer via the scientific method is rather absurd.

"Ok, so I hypothesize that a word processor is constructed of 10 zeroes followed by 10 ones. Let's see..... *turning crank*, *watching flashing lights*, *listening to beeps and boops*.... Nope! We made midget donkey porn this time. Let's try 10 zeroes followed by 11 ones instead, but I will need to do it one-handed."

At some level I suppose that management is doing a bit of science (or at least soft engineering). They glumly look at missed deadlines and mountainous lists of bugs and say things like, "Well, I guess 10 monkeys wasn't enough. What if we had an INFINITE NUMBER OF MONKEYS?!"

(After six months of being pelted by an infinite amount of monkey feces, management typically decides to outsource the whole effort to India.)

So, when it's all said and done, I'm hardly surprised that software companies, like the one that employs me, end up producing bug-riddled and dizzyingly complex computer programs. Granted, my company doesn't write software for Joe Average, instead, we produce business management software. You'd buy this stuff if you had a big or medium-sized corporation and you wanted to try and make some part of your business automated or maybe just a little more efficient. Still, it's wondrous to me that anyone ever does anything useful with it. God knows that I can hardly get the stuff to run, and I wrote part of it.

What's even more amazing is that I think our marginally unsuccessful company actually makes better software than some of our competitors. I keep hearing stories like this:

Customer X is considering buying our bloated software package or IBM's. So, the customer brings in a team of our engineers and a team of IBM engineers to do a proof-of-concept. For example, the customer might say, "Ok teams, show me how to use your software to pound this nail into this piece of wood. You have one week."

My company's team would spend a week using our software package to build an enormously complicated nail pushing device. Given a nail of the precise right dimensions, our machine would successfully push it 98% of the way into balsa wood, 98% of the time. Along the way it would produce 1,000,000 lines of reports and error messages.

IBM's team however, would take an entirely different approach. They'd recognize that a hammer was required, but in order to produce a hammer they'd show up with:
  • A blacksmith
  • Mineral rights to an iron mine
  • A mainframe
  • A byzantine set of binders and processes
  • A truck full of ones and zeroes
  • An army of hydroponically-fed vat-grown consultants
Then IBM misses the deadline and our company wins the deal. We repeat this cycle just enough times each quarter to miss profitability by a few million dollars.

That's life as a computer scientist, boys and girls.


Richard said...

The IBM approach cracked me up!

Kat said...

Ugh, I have always suspected this to be true, but to hear it from the horses mouth... thank you for your honesty, the next time my guru tries to blame "operator error" on a software glitch, I'm gonna let him have it right on the nose.

Mike said...

Hey Richard! I can't wait to see what IBM produces to compete with YOUR company.

Kat, hey, blaming things on users is our favorite way of having fun.

Anonymous said...

Ah life inside the sausage factory. Except the sausage has about 1,000 times more working parts and 1 million times more states than a 747.

Mmm. Sausage.


Mike said...

Pablo, I think we've learned that the parts-per-million of bugs in sausage is suprisingly high.