Posted by tball
on August 19, 2006 at 11:02 PM PDT
I love to write code, but there seems to be a bias against that skill in senior software positions. Perhaps it's a holdover from the sixties when system analysts were held in higher esteem than programmers. Not much COBOL gets written these days, so why is that attitude still prevalant?
A CLM, or Career Limiting Move , is an action on your part that threatens your promotion chances, or even your job. Regardless of whether you have heard of a career limiting move, most of us know one when we see one; serious ones include harassment or ethical violations, as well as less severe ones like backing your car into your manager's new Porsche or mocking the VP's favorite sports team without realizing who's eating lunch at the next table. Engineers may joke about something being a CLM, but real ones are to be taken seriously.
I love to write code and am a big believer in the Agile software development model . Most Agile software methodologies require that the design grow from an initial prototype which gets refined based on early and frequent user feedback. In theory, the project lead can specify a design which someone else prototypes, but the user feedback is much more likely to be heeded and integrated early (when it can have the biggest impact) if the project lead is actively involved in the prototype's code.
To date, my CLMs have been minor, such as avoiding useless meetings . But recently it appeared that my love of programming was a more serious CLM, as it seemed to undermine my credentials as a senior software engineer. How? The top jobs these days are for "software architects", and architects aren't supposed to write code; instead they write specifications which us lowly programmers are to blindly follow. This was certainly true with the J2EE engineering team a couple of years ago, where the "spec lead" was not allowed to write any code; that was the job of the junior "implementation engineer" for that API. I got into a heated exchanged with one of their Distinguished Engineers over this issue, and of course arguing with DEs at Sun is yet another CLM! I doubt that practice is true these days, however, as Java EE 5 is so much easier to use it's obvious that coders must have actively participated in its design.
I've been reading a great book from the Pragmatic Programmer group called Practices of an Agile Programmer . One of its chapters is titled "Architects Must Write Code", which includes this gem: "Real insight comes from active coding." Tim Lindholm, Distinguished Engineer and Java ME Architect, put it more sucinctly eleven years ago when we worked on the JDK team together: "there are coders and there are bullshitters*." (I hope he is still coding now that he is an architect!) I think this "architects write specifications, not code" is a holdover from the discredited Waterfall model of software development, where systems analysts fully specified a project before coding began. While this model may have made sense in the sixties writing COBOL (though I doubt it), I don't understand how it is able to remain entrenched in development organizations forty years later.
The good news is that many companies will acknowledge and correct their biases when you make them known. I recently complained to my management at Sun about this subject, expecting at best silence on their part. It was quite a shock to see them turn on a dime, reaffirm the importance of coding for senior developers, and make changes that addressed my personal career concerns. So if you are in a similar situation where it looks like your coding is no longer appreciated, discuss the problem with your manager. You may be surprised to find coding's "career limiting" is all in your mind!
*I think it's okay to say bullshit on java.net, as it's an acceptable word for intellectual discourse since the Princton University Press published On Bullshit . It's a great book; read it to learn more about why architects who don't write code can be so successful. :-)