Books Every Programmer Should Read
May 11, 2008
After reading Jeff Atwoods comments on the fact(?) that programmer’s don’t read books I was a bit upset. Not because I disagree with him; my experience also shows that most programmers, at least of the ones I have met and worked with in the past, neither read nor own books about their profession—I even remember reading the mentioned paragraph in Code Complete years ago and laughing at just how well I recognized this phenomenon.
However, I personally think reading books is one of the best ways to learn new stuff and gain a better understanding of the world, so I feel a bit sad that not more people are doing it. For this reason, I now present you with my must-have list of books for programmers:
Code Complete: A Practical Handbook of Software Construction
by Steve McConnell
If you are only ever going to read a single book about computer programming, this should be the one.
This book opened my eyes to a whole new world of computer literature. Until I found this well of wisdom, I had only read technology-specific books such as the GW-BASIC User’s Guide, Mastering Turbo Assembler and the Beginner’s Guide to You-Name-It. Finally I had found a book that actually gave me pratical advice on how to become a better programmer. I was surprised to discover that there were in fact people out there who had the same thoughts about programming as me, and even better, they were writing books about it!
I have only read the first edition of this book (the 1993 one), but the second edition has been updated with example code in Java and probably more neat stuff, so I assume it’s even better now.
The Pragmatic Programmer: From Journeyman to Master
by Andrew Hunt and David Thomas
If you are only ever going to read two books about computer programming, this should be the second one.
This book is a great collection of software development techniques and practical programming advice. Simply put, if you read this book and apply the techniques and principles described here, you will most likely write better programs and have more fun doing so.
Peopleware: Productive Projects and Teams
by Tom DeMarco and Timothy Lister
Software managers don’t manage software. Project managers don’t manage projects. They all manage people!
In order to understand how to write good software you must first understand the people who write it. This book will help you do just that. If you are anything like me, you will probably see yourself in much of what is described here, and even if you don’t, you are likely to learn some new things about programmers, how they act and how they think.
The Mythical Man-Month: Essays on Software Engineering, Anniversary Edition (2nd Edition)
by Frederick P. Brooks
There is no silver bullet.
This book is so timeless it’s scary. Even after more than three decades, the topics covered by these essays are just as relevant today as they were in 1975. The book proves, once again, that people never change. We still do the same mistakes over and over again.
Again, I have only read the first anniversary edition, so I’m not sure what the second edition of the anniversary edition (does that even make sense?) is all about, but I’m sure it can’t be anything bad. Go buy it and find out for yourself!
The Psychology of Computer Programming: Silver Anniversary Edition
by Gerald M. Weinberg
Programming is a human activity. Humans are strange creatures who behave in odd ways sometimes. Programmers possibly even more so than others.
This book explains how programmers think and how they act as human beings. Again, the argument that peolpe really don’t change applies, so the book is just as relevant today as it was in the 1970s It’s fascinating to read how the problems of punch card programmers on ancient mainframes were exactly the same as the challenges facing software developers today. If nothing else, the book will give you an insight into how programming was done in 1971.
The Design of Everyday Things
by Donald A. Norman
If you are ever going to design anything, ever, you should read this book.
And even if you are not, you should read it for a good laugh. It’s hilarious, although also a bit sad, to see how many flaws in the design of everyday objects that we interact with in our daily lives are almost directly transferable to software development and programming. The mistakes are the same, only the implementations differ. Instead of a buggy program with an inherently complicated user interface you have a door that won’t open or a watch you can’t figure out how to use.
On the Future of WinCue
May 9, 2008

Some of you may wonder, what happened to WinCue? The web site has not been updated for over four years, and there has been no activity whatsoever on the SourceForge project.
I recently received an e-mail from a user who wanted to report a bug. Here’s my reply:
Date: Thu, 10 Apr 2008 11:16:27 +0200
From: “Anders Sandvig” <anders@wincue.org>
To: …
Subject: Re: WinCue bug
Sorry about the late reply, I don’t check this e-mail address as often as I should.
Thank you for your interest in WinCue. It’s great for me to see that people still use the plug-in, even after all these years. I feel a bit bad about “abandoning” the project, but my time has been limited, and I guess I have lacked the motivation to pick it up again. Personally I’m not very pleased with the direction that Winamp has taken, so I have been looking for other solutions.
I still think the core idea of WinCue is relevant, because even now that every media player on the market has a built-in media library with searching capabilities, I have yet to find a player that is as easy to use as the WinCue library. That is of course just my personal opinion, but I happen to know that there are a few other people out there who think the same.
Anyway, because of this I started thinking about creating a new media player with the WinCue media library sort of integrated. The plan was to make a general media library implementation with searching functionality and add that to an existing player source with a nice GUI on top. I even started implementing the new library for Wincue2 (the source code for the library in the new player and Wincue2 would be the same), but then I sort of stopped working on it due to lack of time.
I haven’t decided if I will continue with the Wincue2 project, but if people (like you) request changes to the existing 1.40 version, I might be able to fix that in much shorter time.
So, I guess my answer to your question is that I don’t really know what will happen in the future, but I will look into the possibility of releasing an updated version of WinCue 1.40.
Anders
As explained in the e-mail, I feel a bit bad about abandoning the project. Now, this happened for several reasons, the two major ones being lack of time and interest. Up until now I was also under the impression that the previous user base of WinCue was long gone, and had moved on to better software for managing their musical experience. When I finally tok the time to go through my web site statistics, I was a bit shocked to see that www.wincue.org still has thousands of visitors every month. Even in April 2008, WinCue 1.40 had more than thousand downloads. As outdated as I feel the current version is, the numbers make me suspect that there are still people out there who use Winamp and my plug-in.
Again, I must apoligize for staying out of reach for so long. The site forum was hacked years ago, and I never bothered to fix it. I hardly ever checked my wincue.org e-mail, and the few times I did, I rarely took the time to write you back.
So, the question is now, what will be the future of WinCue? Should I pick up the project again, and if I do, should I fix bugs in the old version of rewrite the entire thing from scratch? Is Winamp even worth using these days? As I mention in the e-mail I have also thought about writing a new media player alltogether, but I realize this might be a huge and time-consuming project, so any suggestions are welcome.
Welcome to loop label
May 9, 2008
Welcome to loop label. This is, as you may already have guessed, my blog.
For many years I was very much against the concept of blogging, mainly because most blogs I read were completely uninteresting to me. But then I finally realized two things: 1) blogs are not going away, no matter how much I ignore them, so if I can’t beat them, I might as well join them 2) I actually might have some stuff I want to say myself.
If anyone is wondeing what the name is all about, here’s a clue for you:
loop: mov ecx, 2 loop label
If you after reading that suspect that I might be a programmer and also a bit of a geek, you’re absolutely right. And if you have no idea what those cryptic letters mean and don’t know the first thing about programming (at least not in assembler language), don’t worry. I am also fascinated by other topics, such as technology, film, music, photography and human behaviour. Chances are, I might also dare write about those things every now and then.
So there you go. Here’s my blog. Hate it, love it or ignore it. It’s your choice.