Humility and Better Programming, Bibliography
Thank you for reading this five-part series on being a humble programmer. (Links to parts one, two, three, four, and five.)
I referred to several books and articles, which I’ve listed here for your convenience.
The Association for Computing Machinery (ACM) is the primary group which promotes computing as a science and a profession. The Turing Award from the ACM is sometimes called “The Nobel Prize of Computer Science”. Two of my references are the acceptance lectures of Turing Award recipients.
The Dutch computer scientist Edsger W. Dijkstra was a thought leader in many areas of computer science—the theory of programming languages, software engineering, distributed computing, formal verification, et al. His 1972 Turing Award lecture, The Humble Programmer, inspired me to write this series of blog posts and choose the word “humility” for the title. His main theme is that writing software is a really hard task, and therefore, we have to simplify it in order to understand it. A few of these ideas show up in an earlier Dijkstra paper, Programming Considered as a Human Activity, written in 1965.
The British computer scientist Sir Charles Antony Richard Hoare (“Tony”, or commonly in publications, C. A. R. Hoare) was the 1980 Turing Award recipient. He is an expert in many areas of computer science, such as concurrent processing and programming languages. He also invented the powerful Quicksort algorithm. His lecture, The Emperor’s Old Clothes, discusses several lessons learned from his years advising on the development of different programming languages.
In 2006, Dan Ward (now a US Air Force Lt. Colonel), wrote a short manifesto about complexity and simplicity as systems get larger and larger. The Simplicity Cycle is a thought provoking read.
In 1993, Steve McConnell wrote the nearly 900-page book, Code Complete. (A second edition came out in 2004.)
Code Complete brought together many practical programming ideas into one volume… design, data structures, coding constructs, style, quality, debugging, testing, software engineering, performance tuning, and many other topics. His section on Software Craftsmanship was another source of inspiration for this series of blog posts.
In 1971, Gerald Weinberg finished his book, The Psychology of Computer Programming. This book, like Dijkstra’s work referenced above, wanted to consider programming as a human activity. Besides introducing the concept of egoless programming, it’s got several entertaining anecdotes about software development. The author updated it in 1998 with a silver edition, which added commentary about how things had changed in 25 years, and how they had stayed the same.
Nancy pointed me to Kent Beck’s book, Implementation Patterns, published in 2007.
Though written for Java programmers, this book emphasizes readability of code, and knowing the “why?” behind good programming habits.
There is no magic to writing code other people can read. It’s like all writing—know your audience, have a clear overall structure in mind, express the details so they contribute to the whole story.
—Kent Beck, Implementation Patterns
Can you recommend other books or articles in this theme? Post them as comments below.
Thank you. Very humble offering. Much appreciated. I am new to pursuing (with all my aged might) computer science (engineering most likely). So, finding good sources early is encouraging.