Will You Code Until You Die?
A few months ago, I was stumbling through the various programming blogs and newsgroups and there was a thread about career progression in the tech world. Lots of people were talking about how to get into management, but one person had this to say:
I have no intentions of moving into management. I love coding and I intend to code until I die!
Wow! There’s something really powerful in that statement. It says I’ve found what I want to do with my life and I’m going to continue to do it for as long as I’m able.
But that’s a tough road to go down in many organizations. Often you start out as an individual contributor and as you move up the chain you start to manage people. Then you’re measured on how well your team is doing rather than what you do.
When looking at the org chart, it’s the people at the top (who manage lots of people) that generally have the most prestigious titles and make the most money. For better or worse, these people are seen as making more money for the company so they are considered more valuable.
Most companies just don’t have a career path for someone who wants to be a lifetime coder, and being an expert at coding is often not valued. This is especially true of companies whose main business is non-technical.
Software shops (eg – Microsoft, Google, and IBM) are probably more amiable towards the person that wants to spend their days coding. They do have titles like Distinguished Engineer, but even at those such places I doubt they ever make as much as senior VPs.
The Joy of a Craftsman
So there’s something wonderful about someone who says, I realize that it may limit my career and salary, but I love coding so much that I plan to continue to do it for the rest of my days. In my opinion, these are the true software craftsman — they code just for the love of the craft.
Having done both management and coding, I have to say there is something truly satisfying about cranking away on code. Building software is like creating a work of art and everyday you are working to make it better.
It’s great to be able to cross 5 bugs off your list at the end of the day or to run the software and see a new feature work. There’s definitely a sense that your days are not wasted and you are really doing something.
A Manager’s Life
Being a manager is more of a nebulous existence, you’re often in meetings and “communicating” whether in email, in docs, or in-person. You can spend a day fighting political battles and dealing with tough employees.
So at the end of the day, it can be less clear what you’ve accomplished. Also, if you moved up from the technical ranks, you have to be genuinely concerned about losing your technical skills because you don’t use them everyday anymore.
That said, the team you manage (depending on the quality of its members) can accomplish a lot more than an individual. There’s something satisfying about seeing the team that you built come together and build a great application.
And let’s not forget, it’s the managers who often get remembered and rewarded rather than the individual contributors. No one’s heard of the designer that created the iPod’s distinct look but everyone knows Steve Jobs.
Choose Your Own Adventure
So which do you choose?
My advice is to stick with what you enjoy most because that’s what you’ll be best at and will make you the happiest even if it doesn’t have the highest pay or fancy title.
If you enjoy the thrill of learning the latest languages every five years and nothing makes you happier than staring a screen for three hours trying to identify a bug, then coding is for you. Just try to ensure you’re at a company that values skilled coders or possibly look into technical consulting.
If you are more of a people person and enjoy meetings, navigating office politics and removing roadblocks for a team, then you might be management material. A lot of the question boils down to whether you enjoy spending the majority of your time working with machines or people.
Neither is wrong as long as you don’t choose one or the other for the wrong reasons…
-
Um….. me?

