Metaprogramming

Over the history of personal computing, it seems that the best software was written by a team of five or fewer programmers. CP/M, the first PC operating system was built by one guy, Gary Kildall, though he got parts from others such as Gordon Eubanks. MSDOS originated in QDOS, again written by one person, Tim Paterson.

PCs flourished because they could be used as word processors, with software called WordStar, written by one person, Rob Barnaby. Microsoft Basic took two people to write it, Bill Gates and Paul Allen, though I gather that Paul did most of the work. Charles Simonyi, who created MS Word, once told me, in the late eighties, that there were only three people working on the core product. The rest were working on libraries and drivers.

The first and greatest version of Lotus 123 was written by one person, Jonathan Sachs in assembler code, in six months. The great Borland products were all written by one programmer; Turbo Pascal, for example, was written by Anders Hejlsberg. I met and interviewed the person who created Borland Sidekick a year ago. I’ve said enough to make the point.

Charles Simonyi, like many others, did his work using a project management style he called metaprogramming. The metaprogrammer was the designer, decision maker, and communication controller in a software development team. Other programmers in the project were not allowed to make any design decisions about the project, but had to concentrate on writing the code as described by the metaprogrammer. If they hit a problem, they would take it to the metaprogrammer, who would come up with an answer or transfer the question to another programmer. He believed that this was the most efficient method of organizing programmers to write software, but it’s a long way from the current Agile belief in consensus and discussion.

Microsoft grew wealthy because Bill Gates knew all the best programmers around and gave them good job offers. He cherished them and, if they succeeded, they were well-rewarded. As Microsoft expanded, it forgot the ‘metaprogramming’ principles that gave it the Office suite.

I remember vividly the time in 1987 when I visited the Microsoft team tasked with producing their new operating system, OS/2. I was ushered into an enormous open-plan office, packed with earnest-looking programmers tapping away busily or engaged in serious technical discussions. It was Microsoft’s second attempt to replace MSDOS, and after the Xenix debacle they were determined to make it stick. Of course, the third and ultimately successful replacement for MSDOS, Windows NT, was still a way ahead, and was to be developed by a small team from DEC led by Dave Cutler.

The eighties, in particular, was a time of dazzling progress in the development of new tools and applications, including the introduction of relational databases, spreadsheets and object-oriented computer languages. The current decade just isn’t. Why not?

Commentary Competition

Enjoyed the topic? Have a relevant anecdote? Disagree with the author? Leave your two cents on this post in the comments below, and our favourite response will win a $50 Amazon gift card. The competition closes two weeks from the date of publication, and the winner will be announced in the next Simple Talk newsletter.