Tom DeMarco and Timothy Lister
From the beginning of my career I have always worked in large and small teams. While programming has been more of a solitary activity (except if you are part of a pair programming duo), it is the collaboration in teams that can make and break a project. I learned about project management and team interaction working at TRW. It was DeMarco and Lister's "Peopleware" book that really brought it all home for me - productive teams can really make the difference in the succes and failuer of a project. A more recent book about project risk management, "Waltzing with Bears", help me understand that it is okay to push the limits of programming (we've only been doing this for about 50 years now) as long as we understand the risks.
- Peopleware: Productive Projects and Teams (Second Edition) by Tom DeMarco and Timothy Lister
- Waltzing With Bears: Managing Risk on Software Projects by Tom DeMarco and Timothy Lister
- Software State of the Art: Selected Papers by Tom DeMarco and Timothy Lister
Edsger W. Dijkstra
I've only known Edsger Dijkstra through his articles and books. Numerous articles would appear in the Communications of the ACM monthly magazine. As a young programmer in the 1970s, I thought I could program any computer, anytime and anywhere. The Computer Scientist in me helped keep me grounded in good architecture, efficient algorithms and clean data structures. The Grateful Dead and Jimi Hendrix loving hippie in me drove me to go wild and crazy. Most programmers will remember Dijkstra for his letter, "Go-to statement considered harmful" that appeared in the March 1968 Communications of the ACM magazine. It was Dijkstra's book, "A Discipline of Programming", that taught me "that programs could have a compelling and deep logical beauty". Dijkstra is one of Computer Science's most prolific writers. His books are only one part of the depth and breadth of his work. You can read all of his writings at the Edsger W. Dijkstra Archive.
- A Discipline of Programming by Edsger Wybe Dijkstra
- A Method of Programming by Edsger W. Dijkstra, W. H. J. Feijen, and Joke Sterringa
- Selected Writings on Computing: A Personal Perspective by Edsger Wybe Dijkstra
Martin Fowler
Before the Refactoring book, we'd all spent hours and days tweaking our code to make it perform and look better. Martin Fowler and others gave us the methods and tools to make refactoring (and in conjunction with unit tests) part of our everyday programming work. We always knew where the problems were, but we often put blinders on so that we could get the job done. With refactoring we were given names for the bad smells and code manipulations that fixed the bad designs and poor implementations in our code. Martin Fowler's Refactoring home page is probably on every programmers bookmark list. Refactoring tooling is built into almost every developer IDE and programmer's editor. Beyond just his writing, Martin Fowler can be found imparting his experiences and sound advice at conferences all over the world.
- Refactoring: Improving the Design of Existing Code by Martin Fowler, Kent Beck, John Brant, William Opdyke and Don Roberts
- UML Distilled: A Brief Guide to the Standard Object Modeling Language (3rd Edition) by Martin Fowler
- UML Distilled: Applying the Standard Object Modeling Language by Martin Fowler and Kendall Scott
- Patterns of Enterprise Application Architecture by Martin Fowler
Watts S. Humphrey
Thank goodness for Watts Humphrey, Carnegie Mellon University and the Software Engineering Institute (SEI) for helping advance our Software Engineering discipline and improve the skills of every software engineer. Whether you use the Personal Software Process, Team Software Process or some other process, we can all thank Watts Humphrey and the many professors and researchers at the SEI. His latest book, published this year, "Reflections on Management" is subtitled "How to Manage your Software Projects, Your Teams, Your Boss and Yourself". I especially enjoyed Part IV - Managing Yourself. Sometimes it is easy to hide inside a company and a team. The best programmers not only continuously improved the quality of their work, they also influence other members of their team.This book is full of so many nuggets of wisdom and experience that it will help seasoned managers, senior software engineers and beginning programmers.
- Reflections on Management: How to Manage Your Software Projects, Your Teams, Your Boss, and Yourself by Watts S. Humphrey and William R. Thomas (Recently Published)
- A Discipline for Software Engineering by Watts S. Humphrey
- Managing Technical People: Innovation, Teamwork, and the Software Process by Watts S. Humphrey
- Managing the Software Process by Watts S. Humphrey
- Winning with Software: An Executive Strategy by Watts S. Humphrey
Donald E. Knuth
The title of the book series, "The Art of Computer Programming", says it all. It's not just a job that we enjoy, it is our creative outlet. The book series has been my most trusted programming reference in all my years as a developer. Who hasn't learned an algorithm or used one from his first three books? As a total fan of programming languages and programming, Knuth's lectures have guided my thoughts about simpler languages and faster ways of writing programs. His lecture notes about Literate Programming ring as true today as they did years ago. Part 4 of the Art of Computer Programming is available as a series of sections, definitely worth adding to your programming reference library. I was completely blown away by his honesty in "Things a Computer Scientist rarely talks about". In my opinion, this is a must read for every Computer Science student before they graduate.
- Art of Computer Programming, Volume 1: Fundamental Algorithms (3rd Edition) by Donald E. Knuth
- Art of Computer Programming, Volume 2: Seminumerical Algorithms (3rd Edition) by Donald E. Knuth
- Art of Computer Programming, Volume 3: Sorting and Searching (2nd Edition) by Donald E. Knuth
- The Art of Computer Programming, Vol. 4, Fascicles 0-4 (5 Volume Set) by Donald E. Knuth
- Things a Computer Scientist Rarely Talks About (Center for the Study of Language and Information - Lecture Notes) by Donald E. Knuth
- Literate Programming (Center for the Study of Language and Information - Lecture Notes) by Donald E. Knuth
Bjarne Stroustrup
How to improve the C programming language? Merge two wonderful languages, C and Simula, and add enough additional syntax and standard libraries so that large and small systems and applications can be built for even the most demanding requirements and operating environments. To put the icing on the cake -- with the cherry on top -- AT&T and Bjarne gave the programming language to the industry so that it can be extended and improved to meet the needs of generations of new programmers and opportunities. Bjarne Stroustrup has not only help shepherd the language, he has also given us key insights in to the philosophy, design, tradeoffs and reasons for the language. His book, "The Design and Evolution of C++", is a must read for anyone interested in creating their own programming language. I've been honored to site on the same panel with Bjarne at several developer conferences. Bjarne also appeared on my "World of C++" instructional video written by Bruce Eckel. I've enjoyed talking with Bjarne about the C++ language and its future. Thanks to Bjarne and the many members of the ISO C++ standards committee, the C++ language will continue to be one of the most important and influential languages for small, medium and large systems.
- The C++ Programming Language: Special Edition by Bjarne Stroustrup
- Programming: Principles and Practice Using C++ by Bjarne Stroustrup
- The Design and Evolution of C++ by Bjarne Stroustrup
- The Annotated C++ Reference Manual by Margaret A. Ellis and Bjarne Stroustrup
Peter Coad and Ed Yourdon
Before there were objects, there was structured programming. Peter Coad and Ed Yourdon helped teach all of us how to avoid spaghetti code. I first met Peter Coad and Ed Yourdon at many developer conferences. In the early 1990's as we were continuing to expand the capabilities of our C++ IDE, Peter Coad showed me work he was doing to allow C++ programmers to edit their code and edit their object models at the same time. No longer would developers have to go through the "round trip engineering" process. I thought I was a pretty good presenter at conferences, but Peter showed me several additional dimensions beyond use of color ("ROY-G-BIV"), fewer bullet and sub-bullet points and audience contact (ERA = eye contact, reach out and animate). Peter also used music, hat changes, clothing changes, whistles and anything else that would reach out, grad and educate his audiences. I invited Peter to do a keynote at one of our developer conferences. I think it was the largest object modeling exercise ever attempted live (more than 1500 attendees identifying objects, responsibilities and collaborations). Ed Yourdon's books on the rise, fall and resurrection of the (American) programmer books serve as a cautionary tale for all programming communities and developers around the world.
- Object-Oriented Design by Peter Coad & Edward Yourdon
- Decline and Fall of the American Programmer by Edward Yourdon
- Rise & Resurrection of the American Programmer (Yourdon Press Computing Series) by Edward Yourdon
- Death March (2nd Edition) by Edward Yourdon
- Object Models: Strategies, Patterns, and Applications (2nd Edition) by Peter Coad, David North, and Mark Mayfield
- Java Modeling In Color With UML: Enterprise Components and Process by Peter Coad, Eric Lefebvre and Jedd De Luca
I could have (easily) created a top twenty (or more) author list, but if 11 is good enough for Spinal Tap, it is also good enough for me. Here are a few "honorable mention" authors that, while they have written great books, did not (yet) make it on my final author list: Steve McConnell, Dave Thomas, Charles Petzold, Bruce Eckel, Clifford Stoll, Guy Steele, Larry Constantine, Jeff Duntemann, Ray Kurzweil and Scott Ambler.
I'm sure there will be some authors that are on your list but not mine. Post a comment listing your favorite authors, their books and why they are part of your top ten author list.
Programming is Life!
Recent news for developers:
- Apple unlikely to change SDK to fend off antitrust inquiry, says expert
- Nokia rolls out Qt SDK for unified mobile developer experience
- Java pioneer James Gosling praises Oracle's Java technology updates
- Microsoft sides with Apple: 'Future of the Web is HTML 5'
- Apple developer's conference to feature iPad, iPhone OS upgrade
- Developers Rank Microsoft .NET Ahead of Google and Other Frameworks
- Microsoft's Linux patent bingo hits Google's Android
- Obama open sources custom White House Drupal code
David Intersimone (David I) is the Vice President of Developer Relations and Chief Evangelist for Embarcadero Technologies. My company blog is at http://blogs.embarcadero.com/davidi. Note: This is a weblog of David Intersimone. The opinions expressed are those of David Intersimone and may not represent those of Computerworld.