Bear with me, I will get back to the subject line….

Every company suffers from “Not Invented Here” syndrome, where engineers, substituting ego for wit, endeavor to build monuments to their own cleverness, instead of utilizing (or even examining) preexisting solutions to the tasks they face. This is not to say, that having critically examined preexisting solutions, one should never decide that there’s a better way, and strike of in another direction. But that’s not what happens; engineers are tinkerers, procrastinators, and often hubris laden1, so they will often focus on solving an immediate and simple problem, instead of the big hard one over the horizon.
…except, of course, the immediate and simple problems have been solved a million times already.

My employers seem to be even more prone to “not invented here” disease than most, with siloed groups all over the world busily creating new code to solve problems already solved by the nerd in the next cubicle. This is so bad here that my full time career seems to be identifying the several dozen solutions to the same problems in a codebase, selecting the best of them, and winnowing out the rest2. Sometimes I can throw them ALL away, because the OS already does it better than ANY of the home-baked code.

OK, so what does this have to do with Jobs? In his early years at Apple, they always focused on homemade code and homemade hardware. To be fair, the unix wars were still in full swing, so there were no solid standards there. Only Xerox had a good GUI and that took a minicomputer to run. The only hardware standards extant were the laughable S100 and XT busses, and the excellent, but expensive and bulky VME bus.

Jobs must have had some critical epiphany by the time he started NeXT. For as groundbreaking as the system was, and continues to be, as carried forward in OSX and iOS, it was built of off-the-shelf software. Having the Mach Kernel, BSD OS and tools, gcc, StepStone’s ObjC, and Display Postscript, meant that NeXT’s developers could focus on the hard problems, a developer’s toolset, GUI, and the NS frameworks that we still use today. Jobs had learned how look over a landscape of tools and parts, select the very best, then pull them together into a sum so much greater than the parts. He did this over and over again, giving us some of the finest tools ever created.

Jobs invented, or discovered, meta-design, the oft-proposed mechanisms of lego-like engineering, but instead of creating the usual patched up cruft, he somehow evolved it into an art form.

[1]According to Larry Wall, the original author of the Perl programming language, there are three great virtues of a programmer; Laziness, Impatience and Hubris

  • Laziness: The quality that makes you go to great effort to reduce overall energy expenditure. It makes you write labor-saving programs that other people will find useful and document what you wrote so you don’t have to answer so many questions about it.
  • Impatience: The anger you feel when the computer is being lazy. This makes you write programs that don’t just react to your needs, but actually anticipate them. Or at least pretend to.
  • Hubris: The quality that makes you write (and maintain) programs that other people won’t want to say bad things about.

[2] “My best code is written with the delete key”
Prelude, Code Goddess