Programmer IS A Career Path, Thank You
If you’re a programmer, think back for a moment to the first time you hear the career question. You know the one I mean, even if you don’t recognize it as the question: “do you see yourself on the architect track or the management track?”
Caught off guard, you panic momentarily as you feel that you have about 5 seconds to decide whether your long term future involves lots of UML diagrams and flow charts or whether it involves lots of Power Point presentations and demanding TPS reports from underlings. If you’re like most, and you were to answer honestly, you’d probably say, “neither, really, because I kind of like writing code.” But you don’t give that answer (I never did) because you’d effectively be responding to a career development question with, “I have no interest in career development.” But let’s put a pin in that for a moment.
Why is the Programmer Career Path Different?
Imagine a kid going to law school and graduating to go work at a law firm somewhere as an associate, doing whatever it is that associates do. Now imagine a conversation where a partner at the firm pulls this associate aside and says, “so, have you thought about your future? Do you see yourself as more of a partner in the firm, continuing to practice law, or do you see yourself as more of a lawyer-manager?” I imagine the response would be, “what on Earth are you talking about? I’m a lawyer. I want to practice law and be a partner. What else is there?”
Why is it okay (or would it be okay, since this conversation would never actually take place) for an ambitious lawyer to say, “I just want to be a lawyer” and not for an ambitious programmer to say, “I just want to be a programmer?” For the purposes of this post, I’m going to leave that question as rhetorical one. I’m actually going to answer it at length in the book that I’m starting to write, but until the publication date, I’ll leave the why as an exercise for the reader and just posit that it should also be okay for a programmer to say this.
Changing the Culture
I’d like to see a culture change, and I think it starts with our current generation of programmers. We need to make it okay to say, “I just want to be a programmer.”
Right now, the only option is to ‘graduate’ from programming because failure to do so is widely construed as failure to advance in your career. If you become a line manager (or the diet version, project manager), you stop writing code and become the boss. If you become an architect, you kinda-sort-usually-mostly stop writing code and kinda-sort-sometimes-maybe become sorta like a boss. But however you slice it, organizational power and writing code have historically been mutually exclusive.
You can play around with teh codez early in your career, but sooner or later, you have to grow up, take your hands off the keyboard, and become a boss. You have to graduate or risk being the metaphorical ‘drop-out’ with the title “Super Principal Fellow Engineer,” who looks great on paper but is generally ignored or smiled at indulgently.
The Effect of Rising Wages
That’s going to change sooner or later. As someone who has looked for work and looked to hire pretty steadily for a number of years, I’ve witnessed an increase in developer salary that is both sharp and sustained.
As the average software developer’s wage starts to creep into 6 figure territory, it’s simply not possible to keep the pecking order intact by paying overhead personnel more and more ungodly sums of money. Just as it makes no sense for a law firm billing out at $500/hour to hire a “lawyer manager” as a 1 mil/year cost center, it eventually won’t make sense to pay a quarter million a year to a pointy-hair, when Scrum and basic market forces both offer the allure of a self-managed team. In both cases, overhead work still happens, but it reports to the talent rather than ordering it around and demanding status reports.
How quickly it changes is up to us, though. We can change this culture, and we can change it pretty quickly, I think. The first thing you can do is fix it in your mind that being an “architect” or “project manager” or “manager” isn’t a graduation and it isn’t a rite of passage. It’s an agreement to do something different than what you’re doing now. Nothing more, nothing less. The second thing you can do is vote with your feet.
Look to Good Examples
I’m not advising that you do anything drastic, but rather that you take stock of your circumstances. Are you at an organization where programming is clearly viewed as how you bide time until you get promoted to a boss’s chair?
If so, consider adding a new criterion to your next job search. Look for organizations that feature prominent industry figures, such as conference speakers, authors, or people with some “tech celebrity.” These are the organizations that are the “early adopters” of the lawyer/partner dynamic of “best at the trade calls the shots.”
If you hook up with these organizations, nobody is going to ask you what “track” you see taking you out of programming. They’ll assume that you’re there because you’re deadly serious about programming as a profession, interested in learning from the best, and interested in subsequently becoming the best.
Sooner or later, we’ll hit some kind of critical mass with this approach. My hope for all of our sake is that it’s sooner. Because the sooner we hit critical mass, the sooner you’ll stop having to explain that doing what you love wasn’t a backup plan for failing to rise in the ranks.
Want to read more about this? Since writing this post, I finished my book, Developer Hegemony.
“We need to make it okay to say, ‘I just want to be a programmer.'” Better: “I want to be a programmer.” No “just”–which seems to diminish the value–is needed.
Free as in beer -> Just as in sub- sandwich
I got you the first time Erik.
I agree. There is a big difference between “I just want to be a programmer” vs. “I want to be just a programmer”
Nice points here. I’ve been threatening my “boss” (who’s a friend and a good developer himself) for years that I would walk if they ever try to make me become a “manager”. 🙂
I’m in this profession because I want to be writing code!!
Personally, I’ve kind of wandered around with my hands leaving the keyboard, coming back, leaving, etc. I find that whenever I get away from programming 2 things happen: (1) I do it way more on nights and weekends to stay sharp and (2) I worry that I’m starting to lose my edge.
I got into this line of work because I like building things. It can be fun to put others in a position to succeed at building things, but you really start to miss the feeling of doing it yourself.
Looking forward to the book
Glad to hear it! It’ll probably take me some time because I’ve got a lot of projects going, but it’s definitely on my radar.
Great article, there should definitely be no perception of a lack of ambition if somebody wants to stay a developer.
Exactly. I really want to see the industry move away from the standard corporate narrative of “line worker graduates to line manager graduates to mid-manager, etc.” I think it’s a poor model for knowledge workers with a high-demand skill. That’s why I bring up the lawyers — not that this is an ideal comparison by any stretch, but it’s food for thought.
I think you are completely missing the point. No one is pulling programmers aside and asking them if they want to be managers or architects. The fact is that programmers have a very short half life, and after a few decades of experience get way too expensive and unemployable. So continuing to be “just a programmer” is not really a viable option, when no one wants to hire you or pay you what you are worth. So you are kind of forced to ask yourself this question and think of your future employment potential.
I think that is exactly what this blog is about. Highly experienced programmers should be sought after. I believe that is happening much more now than ever before.
You have a point, but please get rid of the word “fact”. For god’s sake, popularly observed track of life is not a fact. It doesn’t apply to everyone, especially those programmers who continue to be as interested and as inclined in keeping abreast of the changing technical landscape.
For a long time now, I have considered my bosses as colleagues who do their part of the job and are, hopefully, paid according to contributed value and market pressure. They have a different skill set, but are in no way more skilled. The moment I learn they are paid more, simply because of tradition, is the moment I want to leave.
I think this is a great perspective, myself. If a good people manager ups everyone’s game and has a salary that can be justified, then, by all means, pay that person a lot of money. If the job pays a lot simply because pay matrix, then the overhead money is a complete waste.
I think you missed the point. Veteran programmers should not be worth more money only when they are willing to manage instead of code. Coding is where the value lies and as Erik pointed out, this is more an more true without the need for pointy-haired, highly paid manger types, as dev teams become more and more self organized.
Interesting division of “real” vs “factory” i wonder if there are more divisions within the definition of programmer.
That was just how I’ve been thinking of it. Factory workers come in every day, put in the 8 hours and go home. They know how to run the machines but don’t really know or care beyond that. This is a gross oversimplification of course. These are the kind of developers that will never read this blog.
I’ve heard this sort of programmer referred to as a “dark matter developer.” It’s an interesting topic in and of itself.
Microsoft has a term called Distinguished Engineer. It means a programmer who gets paid more than an architect, and probably as much as a VP.
I wasn’t aware of that. I dig it! I think that’s a great example to set for the industry.
Microsoft also has Technical Fellow title (e.g. Anders Hejlsberg)
TomTom also has a full ladder for engineers. 5 seniority levels, from Junior to Principal. Plus a Fellow, which is a VP-level title, given for recognition.
Why Developers and learners prefer Asp.net
http://www.blog.weekendtrainer.in/net-technologies-and-its-origin-6
There’s real value in experience. Programmers with it know that, for example, Web programming is just CICS with different details. Programmers without it spend half their time reinventing the wheel.
Thanks for chiming in. Some of the people from whom I’ve learned the most in my career as a programmer have been doing it for a really long time at a really high level (Uncle Bob Martin comes immediately to mind). I consider “you can only program for so long” to be a canard and one that gets way too much air-play for my taste.
Why Developers and learners prefer Asp.net?
http://www.blog.weekendtrainer.in/net-technologies-and-its-origin-6
@David, really inspiring. I’d convinced myself that I can be a programmer for as long as I want. Recently I’ve started to notice people like Kent Beck, Michael Feathers, Martin Fowler (and others) who’ve been doing it for a while and are still at it in varying degrees. I was starting to wonder if its only an option available to the hotshots. But hey, what do I know, you’re probably one of the hotshots that I’ve not come across 🙂
Oh, so my friends in college aren’t as high and mighty as they think they are, because I’ve told them I would rather drop out now rather than end up in a managerial position like they *dream* of doing. Me being a CS major and all of them in the business school
I’ve always had a philosophical skepticism about the idea of an undergraduate getting a degree in “business.” I might well be in the wrong, but it always struck me as a fundamentally strange thing.
Not in the, “as much” is a far cry from totally opting to leave it as a rite of passage. I certainly won’t dispute that you build up responsibilities other than writing code, but I think there’s definitely a place for that kind of thought leadership while still calling oneself “programmer.”
Why Developers and learners prefer Asp.net??
http://www.blog.weekendtrainer.in/net-technologies-and-its-origin-6
You could do with more contrast between your article text and the background. If you made the text lighter or the background darker it would make it easier to read. As it stands I had major issues trying to read this and gave up after the first paragraph
Fair enough, and I appreciate the feedback and will take it into consideration the next time I tweak the UX/theme for the site. I’d be lying if I said that was a particularly high card in my personal backlog, though. Just not enough hours in any week. =/
I’ve always wondered how you become an architect or a project manager that doesn’t get your hands dirty. It seems like to be any good at it you’d have to be right in there pairing with your team. I’m hoping (in my ideal future) that PM and Architect start to become things that developers are good at, much like you know you’ve got that one functional programming weenie that’s great with custom ETL scripts, and the guy with a real eye for css animations.
Why Developers and learners prefer Asp.net?
http://www.blog.weekendtrainer.in/net-technologies-and-its-origin-6
“best at the trade calls the shots.” i.e. Meritocracy (I just recently became acquinted with this term during an interview at a pretty cool tech startup)!
https://www.youtube.com/watch?v=27b-6_O-yfk
Pretty much, yes. Though I tend to shy away from that term in the tech industry a bit because I think it’s rather loaded.
“I just want to be a programmer.”…. There! – I said it..
Seriously though, here’s how I see it.
Every place I have worked, the powers that be reward you by giving you a position of management (whether you want it or not). They see it as the next evolutionary step in your career.
It seems there is no option to progress without picking up some management responsibilities along the way which is a shame.
You’ve hit on the exact dynamic that I find so troubling. The kind of “what do you mean you don’t want a promotion to manager? That’s crazy talk!” Not only is it the case at most organizations that ‘graduating’ from programming is expected of high performers, it’s so ingrained that people think you’re nuts if you opt out. I’d really like to see that change.
I thought that’s support’s responsibility. “Sure, file a ticket and I’ll see what I can do.” And then pass the ticket to support.
Nice post, thanks for sharing. Where can I subscribe to be notified once your book is ready? I would love to check it out.
Thanks, glad you liked! Any time I come out with books or courses, I post announcements on the blog, and send a note out to my mailing list. You can sign up for either one of those if you scroll up to the top of this page and look on the right. You could also follow me on twitter (@daedtech), where I also announce such things.
If you want to stay sharp at design, better keep on coding. Otherwise you quickly start designing abstractions that do not work, and become a PITA for the actual programmers. Even if you enjoy doing it and management looks up to you.
Nice post! I cannot agree with you more on this. Your blog posts on career have been informative.
I had a question – What career steps do you envision for a programmer? I would want to be a programmer over a longer run. Should one try switching technology roles like moving from being a server side developer to a front-end developer or stick to one and be an expert on that?
Those were some valuable suggestions.
I am interested continue specializing server side technologies since that’s what I worked on over 9 years now. I would need to expand my skill set and keep up with the new things coming up on the way, do you see being a server side technologist would be less valuable over a period of time (say 10 yrs) ?
I like the other suggestion of laying your own foundation. I would appreciate if you could throw some light on what is involved in it and how should one plan for it?
Thanks for your time.
Quite inspirational. Whats your plan when you return to programming? What role do you play during development? What & how do you pick up projects?
I am interested in getting some tips and would appreciate your thoughts.
I think this is an important message for people to hear as well — the idea that you can try out roles and see what works best for you. I too have been pulled out of programming roles and wind up coming back to them. The more this message gets socialized, the more people will look at “manager” and “programmer” as simply two different roles with neither one better.
Please continue to do so. I will do the same, more voices more power 🙂
Oh, also, I was talking about the post resonating with people as measured by traffic to my site and comments on this page. I saw that it seemed to have a high score on reddit, but I generally don’t read comments on sites like that when they link to me, since I’ve found it’s usually only about 10 or 12 in before someone starts posting about how they hate you or wish you were dead or something =/
(Based on a few incidents past experience)
I’m glad someone else has said it. Every time I turn down an interview for a “manager-type” role everyone involved seems baffled. The explanation is always the same, “I went to school to learn how to code and develop software. If I had wanted to become a software ‘manager-type’, I would have gone to business school and specialized in project management.” Even with this explanation, everyone is still befuddled.
Glad if it resonated with you, and what you’re describing is eerily similar to conversations I’ve had at points in my career.
I like the sentiment, but simply looking for evolution wasn’t ever the context of these discussions — at least the ones that I had. These were discussions of specific roles other than programming. I think that having a plan for improvement would mitigate the pressure to be something other than a programmer in our current culture, but I don’t think it would come close to eliminating it.
Programmers advance their careers by becoming better programmers. In the past this usually meant seniority since that was the only thing easy to measure. Today, various measures of craftsmanship are relevant.
Seniority as the determining factor makes me shudder. I’ve seen way too many cases of that turning into this: http://brucefwebster.com/2008/04/11/the-wetware-crisis-the-dead-sea-effect/
For what it’s worth, I couldn’t tell that you were a non-native speaker until you said so. 🙂
And your situation is exactly the kind of situation I hope we can stop. Hopefully you find a way to do what you like, enjoy it, and get paid!
I REALLY like the additional roles that you propose. In stodgy old org-chart situations, the first two might be hard to turn into actual job titles, given that they’re intrinsically transient and would suffer from pretty large diminishing returns after a while (or else whoever is doing them is doing them badly). Certainly one can make a go of these as a consultant.
Pioneer seems like a nice reboot of the R&D concept and probably one that almost any shop could use. Interesting stuff!
I would love to upvote or like this post as many times as I can. I am at that stage of my career with 5+ years of coding experience and was thinking about my future career prospects and landed on your blog because I just like to write code and I am proud of it.
Glad you liked — thanks for the feedback!