Saturday, December 17, 2005

The final installament of my three part series, "Ten books an open source programmer needs to have on the shelf."

It's been my hope to introduce authors you might not be familar with or books you might not know. So you won't find Eric Raymond, Bruce Perens, or Richard Stallman. While these guys are arguably important people in the free software movement, the books I am have focused on with this list that are actually useful in running a business and an open source project. While the ideological foundations of free software are of supreme importance, if you are already running an open source project, you are undoubtedly are pretty familar with those ideas. So I am trying to offer these as a resource to help your project and business succeed.

  • Joel on Software: And on Diverse and Occasionally Related Matters That Will Prove of Interest to Software Developers, Designers, and Managers, and to Those Who, Whether by Good Fortune or Ill Luck, Work with Them in Some Capacity

    Ok I have to admit I am a big of fan of Joel Spolsky. While he has spent a ton of time at Microsoft writing software, it doesn't change the fact that at Joel understands the difficulty of writing software, he understands how to do it well and his advice is almost uniformly always right on. Joel know software and software development. His book is full of great ideas whether you run an open source or closed source software company.

  • User Interface Design for Programmers. One of the areas that open source/free software lags behind it's in user interface design. This shouldn't come as a surprise really. User interface design is really hard work. It requires attention to detail and more importantly it requires that the programmer realize that other people use their software. This is especially difficult for open source programmers as they often start their project to scratch an itch. This means that they are usually active users of their own work. This also creates a problem, namely "it works for me" syndrome. As the first user and undoubtedly the more experienced user on your own software, you understand the fundamentals and why you made the choices you did in UI. A new user will not have this knowledge and will come with existing assumptions about UI and how your program should work. This little book has great advice on interface design and will certainly improve your software. I personally believe that UI design is one of the last areas where free software needs to improve. Let's be frank though - only one company has really succeeded at UI design and that's Apple. It's not easy, but just following the basics of this book will improve your software.

  • The Art of Computer Programming, Volumes 1-3 Boxed Set by Donald Knuth. Let's be frank if you don't have these books you are missing a deep understanding of computer science and algorithms. Need a sorting algorithm? Read Knuth. These books are a hard read and they will take time. The journey is well worth and you will come out with a deeper understand of computer science as a result.


Choosing the final and most important book that should be in every open source programmers shelf has been difficult. I truly believe that if you are going to run an open source project this book will prove exceedingly valuable.
  • Producing Open Source Software : How to Run a Successful Free Software Project Ken Fogel who has worked on CVS and Subversion version control systems has produced a great book about the complexities on not only software development but open source software development with it's distributed teams, IRC, mailing lists and project management. he book covers a great deal of ground, giving excellent advice on a wide range of topics: selecting a license; maintaining a mailing list, defect tracking system and version control repository; providing a website; interacting with committers; dealing with technical people; gathering consensus; and understanding important project management concepts. If you only get one book on my list this is the book to get.

    Related Posts:
    Part One: "Ten books an open source programmer needs to have on the shelf."
    Part Two: "Ten books an open source programmer needs to have on the shelf."
    Part Three: "Ten books an open source programmer needs to have on the shelf."