IF SOFTWARE ENGINEERING WAS LIKE CAR MECHANICS ….
What if software engineering was seen as a macho pursuit for the strutting, muscled, oil-covered macho guy stereotype rather than viewed as an occupation populated by the pale, weedy nerd with poor social skills stereotype?
It was a normal day in Singh's Software Maintenance Workshop. A piece of software was jacked up and two men in grimy overalls were delving around in it with an assortment of spanners, wrenches and medieval instruments of torture. They were watched by the software owner, a large guy in an open-neck check shirt and sloppy denim jeans with pockets full of pens, pencils, screwdrivers and other paraphernalia of what the true software mechanic disparagingly calls "a hobby softwarist".
"Where's my Number Two Debugging Iron?" growled Luke "Bug-Monkey" James, the senior software mechanic as he flipped open a function call, "I'm gonna get this baby so fine-tuned she'll purr!"
James dropped some small, heavy objects onto the concrete floor under the jacked-up software. Some are obviously faulty pointers which he has replaced with good ones.
"Bugs. The floating point arithmetic is full of them. Any idea how they're getting into the system? Hey Chip, you finding much under there?" asked James.
His team leader, Ash "Greasy Microchip" Singh, rolled himself out from underneath the main module of the program, "It's going to take more than an Optimising Wrench to get this loop pared down to the bone - and it's supposed to be time critical!"
"Can we shoehorn another library module into it?" asked the worried programmer, wringing his hands, "Maybe that will take the load off of the Function Injectors and give better throughput efficiency …"
"You'll never get another module into here," James retorted, "I've hardly got room for my Function Torque Wrench down here. The Null Return Pointer is jammed far too tight in against the RP Joint; hardly even room for a Logic Spanner. What on earth are you running this on anyway? Your filter is clogged with spare bits!"
Singh, muttered from under the main processor block, "You have to do a trade off between precision and speed - you want me to optimise this loop, you have to discard a few bits or risk clogging the pump. Anyhow, you're using old hat technology, should go Object Oriented if you want real oomph."
"You've been over-clocking this haven't you?" accused James, "Jeez," he gave a low whistle through his teeth, "you've got hardly any wear left in this FOR loop. And all that vibration has shaken the big numbers down to the bottom of the EPROM, no wonder you've been spitting out garbage. How many MIPS you been getting these last 30 man hours?"
"Errrm …" stammered the programmer.
"I'll have to replace the whole DO-WHILE, it's only got another few thousand MIPS left in it. And your DLL is just about shot," Singh grunted, wheeling himself out from under the main module. His face was covered in sweat and loose bits from the conversion function he'd been optimising.
"Hang on, I'm getting stack overflow problems up here," James retorted, "No point replacing the DO-WHILE till I've debugged the dynamic memory allocation - not unless you want to risk the heap running dry and the whole thing seizing up. That'd be a major headache to put right. Need a whole new memory allocation system and you'd have to lose the double indirection."
Singh muttered from beneath the software, "Any reason you really need to use UNIONs? If you sorted out the dynamic memory handling, the system will run swiftly without them. Some guys think it's flashy to have 'em, but it does nothing for maintainability. Cripes - BITSETs?"
The programmer mumbled in embarrassment, "All my friends have go-faster BITSETs …."
"But are they running this sort of application?" Singh asked.
"Singh - get out from under there!" James shouted, "Damn - too late!"
Singh scooted out from underneath the jack-up software, his face covered in HEX.
"Sorry mate, tried to warn you," James told his team leader.
"What happened?" asked the programmer.
"Damn thing just dumped its stack …" sighed Singh.
With unreserved apologies to non-stereotypical vehicle mechanics and software engineers.