Sometimes I wonder what really helps a computer programmer succeed. We, the readers and writers of CUJ, are certainly invested in the notion that a proper choice of programming language really makes a difference. From personal experience, I can support the various studies that argue for precise specifications up front, adequate computer resources along the way, and objective acceptance criteria at the end. I'd also like to believe in integrated development environments, interactive debuggers, and all the other neat toys we get to play with these days. But still I'm not so sure that's where it's at.Something there is that doesn't love a working programmer. We get interrupted by telephones, bogged down in interminable meetings, bollixed by files that magically lose their updates. If we somehow manage to succeed at a project anyway, management rewards us by lowering our chances to succeed on the next project. We get invited to higher level planning meetings, sent traveling about the countryside. Even, heaven help us all, promoted into management. We start down a career path because we love to write code. Then we end up talking about it, planning for it, watching other people do it everything but actually writing code ourselves.
Certainly the Peter Principle is often at work in these matters. Many of us rack up promotions until we finally reach our level of incompetence. But those of us who fancy that we've avoided that fate suffer the lesser fate of simple frustration.
I personally also feel a curious irony. I get asked to give a lot of talks because, frankly, I'm good at it, and I generally have something to say. The more time I spend talking, however, the less time I have to find new things to say. And I refuse to fall into the easy habit of repeating old sermons all the time. I face a similar problem dividing my time between standards work and real-world programming activities.
My current equilibrium has me traveling one week a month. I'm beginning to conclude, however, that I'm not really getting enough coding time in between trips (and recovery, and answering accumulated mail, etc.) Several years ago, I gave up running a company because I couldn't multiplex managing and programming and feel good about either. I suspect it's time to back off on travel as well.
I know I'm not alone in this matter. Most competent programmers I know operate in overload more often than not. It's bad enough when you're your own boss. Working for people who don't understand the programming process is far worse. You can buy them a copy of DeMarco and Lister's Peopleware, but you can't make them read it, understand it, or apply what it teaches.
So study your C and C++ techniques by all means. Get the latest tools they'll let you have. But think hard about where your time goes, and your psychic energy. Think twice about signing up for that next trip, or bucking for that management post. The successful program you save, and the satisfaction that comes with it, may be your own.
P.J. Plauger
pjp@plauger.com