There are two hard things about computer science: cache invalidation, naming things, and off-by-one errors. That little witticism is true of computer science, and my Top 11 list of Programmers post.
There are two hard things in computer science: cache invalidation, naming things, and off-by-one errors.
— Jeff Atwood (@codinghorror) August 31, 2014
— Tim Bray (@timbray) August 31, 2014
Here is part 1 of my supplemental list of great software developers. It is in no particular order, and is of no particular magnitude. It is rather arbitrary. Part art, part science, a lot like software development.
Let’s start with Martin Fowler. He is probably most known for his book on refactoring, which he co-wrote with Kent Beck, John Brant, William Opdyke, and Don Roberts. I don’t think they invented the idea of refactoring code: a controlled technique for improving the design of an existing code base. But that book really did a lot to promote the idea or refactoring and testing, and also to define related concepts, including the code smells that suggest a refactoring may be necessary. There have been a lot of books on refactoring since then, but this is still the authoritative tome in my mind. Fowler is also a proponent of software design and agile methodology. He was one of the original “signers” of the Agile Manifesto.
Alan Turing, OBE FRS
How in the world did I miss Alan Turing in my first list? Clearly an oversight on my part. While Ada Lovelace was the first Computer Programmer, Turing was the first Computer Scientist. He’s design of a “universal computing machine” became known as a “Turing machine” and is the fundamental basis for computers today. It lead to the idea of a programming language being “Turing complete” as being theoretically capable of expressing all tasks accomplishable by computers. His name was also lent to the “Turing test” which invented as a way to test machines that exhibit intelligent behavior.
One of Turing’s greatest contributions was one that he was not known for because it was kept secret. He was instrumental in the cryptanalysis of the Enigma cipher during World War II. This is a photo of me using an actual Enigma machine at the NSA museum in Maryland, USA.
Would you like to play a game? Chances are you are familiar with Carmack’s work in game development. He was the lead programmer for id software’s Commander Keen, Wolfenstein 3D, Doom, Quake, Rage and their sequels. Currently he is the CTO for Oculus VR, Inc., the folks that are making the Oculus Rift Virtual Reality headset.
Carmack was originally attributed with coming up with the Fast Inverse Square Root, a piece of mathematical black magic to approximate an inverse square of a 32-bit integer 4 times faster than using floating point math. While that one turned out to originate elsewhere, he is responsible for a number of innovative technologies that are common in many games.
Shannon was more of a mathematician, electrical engineer, and cryptographer, but he is also the father of information theory, which has a huge impact on computer science. He met turing in 1943, and discussed his Universal Turing machine as many of its ideas complimented Shannon’s own.
Shannon had many inventions and contributions, but possibly one of his greatest is the Ultimate Machine: A simple box with a single switch. When the switch is flipped, the box opens and a finger reaches out to flip the switch back, retracting the finger and flipping the switch back. Although the flame-throwing trumpet is a close second.
Shannon also co-invented the wearable computer and used it to make a fortune counting cards in Las Vegas. His technique inspired the book Bringing Down the House and the movie 21. He later applied the same technique to the stock market with even better results. Shannon is one of those people that the more you learn about the more he sounds like a myth or a legend.
This isn’t a complete list. I’ve got more to cover, but this is enough for now . . .