Hosted by KRTEN.COM

Rob Krten's Home Page
· Help support this website!

· Resume (HTML) (Word)

Technical Articles
· Understanding Software Development
· Realtime Enough
· QNX Neutrino Timer Tips
· Kicking the Resmgr Habit
· Boot Loader Speedup
· Priority Inversion
· Device Drivers
· Tiny OS
· USENET News
· Text Retrieval
· Fractal Terrain
· 3 QNX Books

Presentations
· Home Monitoring
· Equity/Option Management

Ideas
· Chordotron Keyboard
· Saving Electricity
· How much electricity?
· Extending QNX Neutrino

Projects
· UDP PWD RGB LEDs
· DEC Module Storage
· 8x8x3 Audio/Video Switch
· 50 Pole Double Throw Switch
· PR-68 Paper Tape Reader
· The Back Server Room

Short Stories
· Mine!
· Ed Cleans Up
· An Unusual Sound
· The UCN
· The Gruntbox
· What They Wanted
· The Go Beep Unit
· Octavia

Pet Peeves
· Metric Mangling
· Idiot Spammers
· Mass Media
· Illiterati
· Virus Detection
· Wussy Rock Bands

Bullshit!
· The Psi-Meson
· Software Development


Miscellaneous
· Contact Me

The Correct Approach to Software Development


First published on the PARSE Software Devices website December 3rd, 2005 © Copyright 2005 by Robert Krten, all rights reserved.


In this article, we'll examine the structure of an organization that purports to want to write software, and we'll look at the roles of the individuals in it.

Just like with any kind of organization, be it a religious order, a terrorist cell, or the government, the key thing to keep in mind is, "the more managers the better." This is because software developers are mad, (anyone who believes that hardware always functions exactly according to some arbitrary set of specifications (to say nothing about the accuracy of said specifications), is, by definition, mad), so they need to be continually micromanaged to keep them on the right path. Giving a developer large chunks of unsupervised time is never a good idea and is a sure recipe for disaster. In fact, several operating systems, languages, and editors have inadvertantly been written that way. This frightens and irritates the established corporations (the whole concept of independent thought, and especially the fact that it so often goes unpunished) so they ejaculate a new, incompatible version of their PARC-ripoff glorified program loader software on a periodic basis as a self-defense mechanism.

Given that management is required, and that management must constantly justify its existence lest it evaporate and disappear, the next question is, how does management justify itself?

The Role of the MBA, a Savant Extraordinaire Par Excellance Vis a Vis Id Est Quid pro Quo Some Cum Loudly

As if by coincidence, or at least by a shear stroke of good luck, our Universities have been carelessly breeding (breading?) Management Busybody Administrators (MBAs). Let's study the manner in which MBAs help software organizations to run smoothly. Here's a typical algorithm that's used:

MBA: I need this program done now

Programmer: But I need three months.

MBA: I will simply hire 5 programmers to help you.

Programmer: Then it'll take 6 months.

MBA: You are a moron.

Programmer: Dipshit.

MBA: You're fired.

Vice President: Excellent, according to calculations, with zero programmers the job will take infinitely less time! You get a promotion! Have some stock options!

President: Kill me! Kill me! Kill me!

Here we see the MBA as the ideal foil for the programmer who never wanted to actually be working for the corporation, and as a brilliant interface to the somewhat suicidal president. This is known as TCP/IP -- Trained Crazy Programmers / Idiot Programmers, and is a well-known solution to the Cheating On His Wife Salesman problem that only just now (well, actually, around teatime yesterday) has been solved by that PDP-8 running off of 90V/50Hz (so as to minimize wear and tear on it) in the back closet. Further laughs can be had by looking at software testing.

The Role of the Tester

The role of the tester is to be management's friend. The tester is supposed to give management a warm, fuzzy feeling about the software -- the warmer and fuzzier, the better. Yes, there are a few rogue testers who are bad apples -- pointing out bugs, drawing graphs with increasing (rather than decreasing, such idiots!) bug counts, refusing to simply accept the word of a Most Conceited Engineer that the bug either never existed in the first place or has indeed been fixed; but let's not focus on the negatives. (There's even word of a complete department full of these rogue testers! Luckily, management solved this particular one by disbanding the entire department, and, instead of providing frightening numbers that just served to puzzle senior management, the new group simply provides three colours indicating how the company should plan its future: red for "ooh, that's probably very bad, but we don't know just how bad, but, you know, it's bad", yellow for "gosh, something isn't quite right, I think someone should do something about it", and green for "this is a shippable product that's been fully qualified and has no possible bugs left in it because we're oh so good at testing it and we did it all in two days". We truly live in a glorious age!)

A good software tester is like your favourite prostitute (I'll leave the details to your imagination). Sure, for show, and when the Talented Competent Professional / Indigent Programmers are running low on work, they'll come up with some "bugs", but these are understood to be cosmetic details, like something that's spelled correctly that needs to be spelled incorrectly to satisfy the idiot son of the boss's lack of basic literacy (plus, it'll get fixed in the next revision anyway, providing more work and thus justifying the high salaries and bonuses of the programmers). But, fundamentally, the job of a good software tester is to prove that everything still works. Annoying deviations from that can be fixed in a number of ways:

  • modify the (obviously faulty) test program,
  • re-run it again to get a clean pass,
  • ignore the problem.

The last one is actually brilliant. If the problem had not shown up previously, then obviously it means that the previous version should have been shipped instead of this one, and since it had been shipped, everything is fine. The customer simply needs to be brought up to speed on how the new software works, and what the customer is doing wrong. Thus, ignoring the problem is just fine -- it's not a real "software" bug after all!

The Role of the Software Developer

Software developers are not entirely without responsibilities! Constantly shopping for the latest haxx0r fashions, getting the newest T-shirts, and cultivating that special smell can be just some of the challenges required of a Professional Developer Flunky (PDF). Sometimes, the l33t c0dER will have to patiently explain to the MBA idiot just exactly what a "flag" is and why you would want to set one. And then, the l33t PhReAK will have to patiently explain to the MBA idiot exactly why you don't want to just set a flag at any old time, but that it has to be at a special time, like when the flag actually needs to be set for the particular situation, and not just because the MBA idiot decided that it might be a really cool thing to do because in his expert extensive 3-day Visual Basic Jump Start with Billy course he was taught how to be a real CODER$ and now knows exactly what the bug is in the first place that the bastard rogue tester "found" in the code and hence is delaying his shipping bonus with.

In the evening hours, some code is slammed out and it'll all just work -- because that's what primadonna-generated code does, it just fuXXing works! Pretty much anything that flies out the butt of the l33t haxx0r is extraordinary magic; most mere mortals should feel privileged to just be near the programmer, let alone see the programmer in action, let alone actually be there to witness the birthing of a rare and particularly well-formed programming bowel movement (PBM). Rarest is the PBM that stuns and astounds the irc-friends, the media, and the various three-letter US government agencies all at the same time.

Ads by PARSE

Still using QNX?

Why? Use a free operating system, like FreeBSD. Expert with 20+ years experience can help you port your applications or develop new ones, available now!


Contact me This page was updated on Fri Mar 12 00:15:07 EST 2010 © 2000-2008 by Robert Krten.
All rights reserved.