This site will look much better in a browser that supports web standards, but is accessible to any browser or Internet device.

Anomaly ~ G. Wade Johnson Anomaly Home G. Wade Home

April 30, 2006

Review of The Career Programmer, Second Edition

The Career Programmer, Second Edition
Christopher Duncan
Apress, 2006

If you are thinking of The Career Programmer as an insight into the best techniques and technologies for becoming an ultimate Alpha Geek, you will be sorely disappointed. However, if you've spent some time dealing with the realities of software development in real companies, much of what Duncan says will be of use to you.

The book is divided into three parts. The first covers the mostly depressing reality of software development. People new to the field may think Duncan is being overly pessimistic in this section. Although he covers the issues with his own brand of humor, I think it is safe to say that he is not exaggerating much (if at all) in his descriptions. I have not seen all of these extremes in my own career, but I've seen enough to recognize where he is coming from.

The second section covers tactics to help cope with the issues in the first section. This is the section that justifies the subtitle of the book guerrilla tactics for an imperfect world. This section does have a lot of really good advice. A large portion of his approach involves learning about corporate realities (such as politics) in order to protect yourself and make effective changes in your environment. I did find quite a bit of his advice to be interesting and plan to apply some of it in my own career. However, I believe that this section suffers from two flawed assumptions.

  1. The solution to all of our technical problems is sign-off.
  2. Politics is a skill anyone can learn.

These flaws do not invalidate the section, but they do make some of the advice harder to follow in reality than in his descriptions. Let's take these items one at a time. On the technical side, Duncan seems to have a strong belief in a Waterfall-style approach to development. He seems to believe that moving toward this style and getting sign-off at each stage will shield us from changes and some of the levels of insanity in the development process. My experience has definitely been different than his.

Like programming, I think political maneuvering is part skill, part talent. No amount of training will make a programmer out of someone with no talent. Likewise, no amount of studying politics will make many of us good at it. From the book, it appears that Duncan has some natural talent in this area and, therefore, enjoys more success than I would in a similar circumstance. In fact some of the traits that make us good programmers, make political skills harder to learn. However, this is not a valid excuse not to try, He is correct in saying that if we don't try, we will be forever at the mercy of those who do play the game. This section provides the starting points we need to begin.

One of the side effects of these assumptions is that Duncan tends to not explain a few of the political approaches as well as someone like me needs. In many cases, he seems to point in a general direction instead of giving more of a map to follow. This would probably work better for someone with more business savvy. Despite those complaints, I found very little in this section that I would directly disagree with. In fact, his advice about choosing your battles and the chapter on Corporate Self-Defense are probably the most important parts of the book for me.

The final section steps up a level and discusses dealing with your career as a whole. This is where he discusses what to do when slinging code is no longer fun enough to put up with the rest. Duncan describes several scenarios to determine what to do next, including

  • changing jobs
  • moving to management
  • moving to QA
  • moving to consulting
  • starting your own company
  • changing fields

For each of these options, he covers some of the advantages and disadvantages. It helps quite a bit that he seems to have made most of these changes at one time or another. However, he does not really make recommendations, because each reader will have a different view of which tradeoffs are acceptable.

Overall, I think this was a good book for me to have read. I think it may not be appropriate for really junior programmers. The depressing thing is that I think the advice would have been most useful to me when I was really junior, but I would not have been willing to believe the advice. Someone who has been batted around by the corporate world for a while is more likely to be able to make direct use of this material. Unfortunately, I'm afraid some of the material is not complete enough for those of us that lack Duncan's personality and people skills. People with a lot of experience may find that the book doesn't go into enough depth to cover their realities.

Despite all of that, I would recommend the book to any professional programmer. Just keep in mind that you will not be able to read the book and completely change the realities of you daily life tomorrow. Interestingly, I would also recommend portions of the book to other technical staff who are not necessarily programmers. Much of this advice applies just as well to technical writers, QA people, and engineers.

Posted by GWade at April 30, 2006 02:20 PM. Email comments