Discussion about this post

User's avatar
Jon DeVaan's avatar

There is so much in this section, but the number one take away has to be the immense historical chance involved in Windows being successful. Literally two people, banking on a prior relationship, with DavidW working in his spare time, or perhaps also ignoring his day job completely. Let's be clear, that work was not on strategy, it was not sanctioned by management, and yet it changed the trajectory of Microsoft and the entire PC Revolution (as you call it).

Expand full comment
Jon DeVaan's avatar

The Hungarian naming convention sounds crazy, and the Systems group at Microsoft was never fully convinced of its benefit, but the benefit was real. The reason? Start with DougK’s maxims of debugging data not code and writing self-documenting code.

At its base, program code contains instructions that transform the program data. The code has no meaning without its data. So it makes perfect sense to make the data structures a primary element of the symbolic names used in the code. This allows any human code reader to see what data transformations are happening in every line of code. The benefit is many common programming errors are immediately visible.

Compiler theory was way ahead of reality in these early days. Modern programmers take type checking in structured languages for granted. But due to RAM limitations, the early compilers did not actually do type checking. Hungarian reduced mismatched type errors to nearly zero. Eventually there was proof.

Later compilers did type checking, but many teams working on old code bases never turned it on because it created a huge backlog of work. Teams that used Hungarian found turning on type checking relatively easy. Much later, when Microsoft Research was developing its first static analysis code review tools, the rigorously Hungarian code bases had many fewer type based errors than the others.

Expand full comment
16 more comments...

No posts