I wrote my first serious program in Basic on an Apple II computer in high school. My dad had me running data at the Yale computer center using a program written for him by a grad student in Fortran. I did not like fighting for a terminal, hogging the printer and CPU with massive jobs, and dealing with the wrath of angry graduate students. When we got our Apple II it seemed more than capable of taking on this burdensome task. But even with the Fortran code in front of me, coding was the most tedious job I’d ever done. The code started at the top and ended at the bottom. Creating every aspect of the report required what felt like an enormous amount of code. If I knew one thing in high school it was that I did not want to be a programmer.
My first structured computer class in Pascal in college helped change all of that. My superlative professor Andy van Dam taught me how to design code from the top-down, breaking it into pieces, reusing as much code as possible. Thinking about how easy the code is to read, modify, and maintain, helped me view software as a design challenge, not a rote tedious process. I was still on the fence about being a programmer.
When I learned C and Unix as a sophomore all of that changed. The experience of moving from the heavy, bloated, inflexible set of abstractions in Pascal to the simple, machine-oriented, clean, flexible, concise abstractions in C created for me a new understanding of the incredible potential of software. You can use software to not only build a system but transform a process. It’s the power of not just solving a targeted problem, but solving the meta-problem. The family of problems which make this particular system relevant and will ensure it stays relevant as we refine the system, or as processes evolves around the system forcing the system to adapt. C and Unix established more efficient processes for building systems and for me opened the door to seeing that potential.
As the designer of C and lead contributor to Unix, Dennis Ritchie’s impact on the world was and continues to be tremendous. His work underpins not only the Mac, the iPhone but Android, Google, Amazon, Netflix. His design sensibilities influenced not only C, but C++, Objective C and Java which together account for the majority of the code which exists in the world today. Hs work helped me not only get into the business of programming but also inspired me to always keep thinking about how to make programming better.