Stories about Software


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.

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.

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.


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.

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.

  • Bill Simon

    “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.

    • I think you raise a good point in that it’s a bit counter productive to this sort of populist message to say, “just a programmer” in a dismissive way. For what it’s worth, though, I meant it in the “let’s not overcomplicate things” way. For instance, if you went to Subway and asked for a sub, and the clerk started trying to sell you cookies and sodas and stuff, you might say, “enough — I just want a sub.” You’re not diminishing the value of the sub in that context.

      I think, more broadly speaking, that we can shift the conversation such that saying, “I just want to be a programmer” doesn’t carry the connotation of diminishing. (In the same way that I’d assert a lawyer saying, “I just want to be a lawyer” wouldn’t seem to have that same connotation). But, all that being said, I definitely think you make a good point.

      • Free as in beer -> Just as in sub- sandwich
        I got you the first time Erik.

      • michaelminutillo

        I agree. There is a big difference between “I just want to be a programmer” vs. “I want to be just a programmer”

  • Dylan Bourque

    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.

  • John Pazniokas

    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.

  • Mike Lythgoe

    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.

  • disqus_hQ7jQy0YKu

    I can hardly remember if anybody actually asked me the question. I started programming at 12 years old (over 35 years ago). There was never anything else I wanted to do. If anybody asked me about becoming a manager I would have said something like “Oh my GOD no!”. I don’t think I’ve been hurt too bad by my career choice.

    At my current job (ERP software with 4,000+ employees), I don’t feel any push to become “more than” a programmer. I do see that we have two different kinds of programmers: “real” programmers and “factory workers”. The factory worker programmers are mostly offshore, not paid much and not expected to know much.

    • Kaoru

      Interesting division of “real” vs “factory” i wonder if there are more divisions within the definition of programmer.

      • disqus_hQ7jQy0YKu

        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.

  • Super Mario

    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.

    • disqus_hQ7jQy0YKu

      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.

    • I suppose it’s a YMMV situation with being asked this question. As a programmer, I was asked this question multiple times at more than one organization during performance reviews. The idea was that they wanted to identify my long range career goals and help me start working toward them. I think the intent was quite laudable, but the presumption that these involved being something ‘more’ than programmer was awkward and somewhat discouraging.

      As for the idea that being a programmer is sustainable only for a limited duration, I’ll push back on that a bit. In the first place, this is only true for programmers that become lifers and earn non-justifiable pay increases for non-commensurate (or non-existent) skill increases. (Basically, these guys: http://www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner ). As long as they stay relatively in sync with the market, I see no reason the gig isn’t indefinitely sustainable, especially if they take their talents and become free agents working on contracts.

      But there’s another issue I have with this as well, which is the idea that if you’re a developer and you cap out at your HR matrix ceiling of 150K or whatever that you need to become a manager in order for it to make sense for you to be paid more. A dev manager doing a good job is basically just clearing obstacles out of the team’s way so that it can be productive. I can’t get to the conclusion that this work should be worth more than the developers’ work.

      In other words, I think disqus_hQ7jQy0YKu speaks well for my point of view. My point is, essentially, that continuing to be “just a programmer” SHOULD be a viable option and I think salary trends will bear this out.

      • Thomas Eyde

        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.

    • Jgritty

      You’re wrong on both counts, and as people in the industry, we need to continue making you more wrong. No offense.

      I can’t count the number of times I was “pulled aside” and asked if I wanted to be a manager or an architect. Every time, I just shrugged it off, making sure I was getting market rates of increase in salary, and continued to the best job I could.

      Yes, I’m expensive, but I’m also in very high demand. I could leave my job today, and have a new one at the same pay inside of a week. It IS the world we live in, but there is a management opinion that it’s not. Especially at the larger companies in my opinion.

  • wpostma

    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)

        • Artur Czajka

          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.

    • Aarav Khanna
  • David Warman

    Speaking from the other end of the journey, Programmer as Profession is actually do-able. I’m 67, programming with design responsibilities, and comfortably remunerated. I’ve been doing this since 1967, and in the interim, for a good couple of decades, my employers just kept inventing new titles for me so they could keep giving me raises without offending the bean counters. My latest was a recruitment just a few years ago so I’m still desireable.

    Contrary to the “programmers get stale early” meme, there is in fact no end to learning and inventing new things, and no end to new problems that need them. However I feel quite strongly that following such things is what makes for a Programmer as a Profession. Ordinary Line programming – basically polishing what has already been “done before” to keep commodity products alive – is not going to work out for you or anyone as a lifetime career. So, if Profession really does appeal to you, – and that must mean you just love doing it and (to some extent) you are surprised when folks actually want to pay you to do it since you’d be doing it anyway – follow the inventing path, seek employers that want to push the boundaries, or do the unusual.

    • Jerry Kindall

      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.

    • Aarav Khanna

      Why Developers and learners prefer Asp.net?


    • Eric

      @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 πŸ™‚

  • KevinS

    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.

  • Brian Blain

    I remember thinking this way during the first 5 or so years of my career. The thing is, as you get more experiences you’ll be inclined to start teaching others, and new cheaper employees come in. You start building responsibilities for what others are writing. More time passes and suddenly you are the go to person for a lot of things. So who else is going to manage this team/department/project? The guy above you is too busy and the ones below you don’t know enough. You are doing your career an injustice not to tackle every new task with just as much enthusiasm. Sure, you don’t get to play in the dirt as much but you get to create the vision and the guidance.

    • 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.”

    • Aarav Khanna

      Why Developers and learners prefer Asp.net??


  • Josh Harwood

    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. =/

  • Jordan Whiteley

    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.

    • I think that’s the way things are going to wind up going, personally. When I’ve played the architect role and even when I’ve had people reporting to me, what I often did was prototype examples for the team to use if they found them helpful or pair with people when they were stumped.

      I also see a sort of consultative role potentially emerging as well. I’ve always been a fan of “good architects make themselves gradually unnecessary.” It’s been my experience that teams with good aptitude can use some “architecty” guidance at first, but then really become capable of driving that collectively without a specific role for it. Same thing with project management tasks. If the team gets into a rhythm and collectively owns working with stakeholders, I don’t see a need for this a role the devs can’t pitch in and fill.

    • Aarav Khanna

      Why Developers and learners prefer Asp.net?

  • Jarrett

    “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)!

  • MasterOfMisc

    “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.

    • An0nym0usC0ward

      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.

      • MasterOfMisc

        That was just a trite example and it was said tongue-in-cheek. πŸ™‚ I wouldnt want you to come away thinking thats my one and only “gripe” with management and while that may be a small drain on your time its one of many “time drains” that you dont see when your are in a core development role.

        The take-away I wanted to convey from my original post was there should be a career progression for developers that reward them for thier hardwork without shoe-horning them into a management role. I can only speak from experience but at my company there is no such progression.

  • IRLeif

    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.

  • I think you make very good points here, but the design work that is typically tasked to “architects” is usually very interesting (depending on where you work). Of course, there is a political nature to this job when you work in a large company and are tasked with coordinating multiple teams into the same tech stacks, etc. However, if such a position existed where you could do much of the heavy-lifting in product architecture design as well as implementation that would be ideal for some. I suppose this may, more or less, be the world of a startup though rather than /most/ mature companies.

    Warning, sarcasm below:
    Maybe the distinction is between those who want to work and those who don’t?

    I joke, of course, since management is clearly incredibly important for actually keeping the company running. So, in a less condemning spirit, thankfully those guys *want* those jobs (since many of us here apparently don’t). Cheers! πŸ™‚

    • “Architect” does seem to be a pretty loaded term in the industry. In some places, it just seems to be a token promotional title for programmers and in others it means that you don’t do anything remotely resembling programming. I’ve seen “architect” roles that are an awesome combination of tech and leadership and I’ve seen some I wouldn’t wish on my worst enemy.

      A theme that I’m generally interested in exploring is how development teams can collaboratively fill these kinds of historically “external” roles. Can they take care of architecture for themselves and even handle most tasks that would require a line manager. As you point out, “management” is important for keeping a company running, but my hypothesis is that we might not need a person to whom the team reports for the important tasks to get done.

    • An0nym0usC0ward

      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.

  • Amit

    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?

    • Hmmm… if your goal is to have nice increases in pay over the course of your career, while staying fully technical, I can see a couple of courses of action. First, you could consider specializing in an area or discipline, giving you a level of depth/expertise that would allow you to command a nice wage. The danger there is that you could specialize in something that becomes less valuable in the market. Another course of action would be to lay the foundation to go off on your own, which is a much better economic deal than working for a wage, provided you have sufficient work lined up. As for moving between application types that you work on, I don’t know that it matters a lot, though the less exotic the ones you pick, the easier it will be to switch between jobs or gigs.

      And, thanks — glad you like the post!

      • Amit

        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.

  • Casey Brumbaugh

    I think you have a lot of good points I am often conflicted with this choice as I am up on the precipice of this in my own career. Where I work at it is very similar and that you must choose an architect role or a manager role to continue to be successful and grow your salary. Before that you are tech leading projects which in my experience takes your hands off of the keyboard.I myself don’t mind taking on more managerial in leadership positions but I wish there was a balance that could be struck between the things that I love to do and the thing that can continue to help the company to be successful.

    • I think that’s a pretty common set of steps in the corporate world. There’s a natural pressure on a developer to help bring new people up to speed and exhibit leadership even before titles and official roles change. It’d be nice if we, as an industry, could develop some nice, established patterns for maintaining a healthy balance between leadership and doing. Right now, it’s really up to us as we move along in our careers to keep in touch with the technical work, particularly at places where performance is rewarded with leadership roles. In other words, it’d be nice not to have it feel like a battle to find ways to continue to write code.

  • Rich

    Superb… I have been saying for years when people ask: “I’m a programmer”… I just quit as divisional CTO of a top 3 global defense contractor to return to programming. People think I am crazy. I had always had a chance to keep my finger dipped in code until that last jump to executive… took me 9 months to realize it was a zero sum game. The money wasn’t worth the bs. Programming is an art, the best of skills and creative spark passed tribally from person to person. I love it, and will remain here… as ‘just a programmer’ for the rest of my life.

    • Amit

      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.

    • Thomas Lassanske

      I’ve done the same – a couple of times, actually! I recognize I have a talent for design and planning, but want to always have my hand in the code as much as I can (which is valuable in accomplishing those other things well, IMHO). As such, I think leading small teams is perhaps my best fit, as I can perform all activities. In the past, I’ve had to make course corrections with my feet, but I’m now comfortable setting expectations up front and saying “no” to offers of “advancement” that take me out of my desired activities.

      I used to work for John Carmack (creator of “Doom”), who serves as my role model. Even though he was CTO of id Software when I worked there, he spent something like 90% of his time writing engine code. This is in line with what Eric wrote in his post, “Look for organizations that feature prominent industry figures, such as conference speakers, authors, or people with some β€œtech celebrity.””

  • I think that a shift has become already and will become clearer in the next few years. What I see is a total disconnect between businesses and programmers. They have no idea what we do and have no idea how to determine our value other than our job title and how much we were paid before joining them

    This of course affects any kind of career path because let’s face it, how many of us spend years working in the same place ?

    The shift comes in the form of attitude change. As developers we realize how much money our employers make with the stuff we build.

    The obvious solution is to start creating our own products and businesses and monetize on those. I have been talking to quite a few senior devs with lots of years and they’re pretty much of the same mind.

    Businesses are basically capping what we can make so once you hit a certain level / age you are not going to get something much better. They also complain how difficult it is to fill roles. Well it is but not because there are not enough of us, but because most of us discard any job ads because they are not really better than what we have already and because we had enough of useless recruiters.

    What they don’t realize is that they’re basically pushing us to create our own businesses and products and i think it’s going to get more and more prominent. Experienced developers are leaving the market and no one realizes what a bad thing that is.

    I am personally putting my money where my mouth is and working on my own thing outside of work and I know quite a few others who are doing the same. I really think this is a good way to deal with the situation and if you don’t succeed in the beginning, keep trying and never stop trying.

    • I think you’ve nailed it, and this is a subject about which I’m going to continue to write. It’s why I use the analogy of law firms when I talk. I could easily see a future where application developers stop working as W2 employees for traditional companies and instead tend to form “application development firms.” We currently call these “consultancies,” but that’s not really accurate. Mostly they just bang out software, trading dollars for hours, ala a law firm providing a service.

      I think that there will always be some “in-house software talent” but that developers will increasingly work for firms rather than companies.

      • Please continue to do so. I will do the same, more voices more power πŸ™‚

  • Craig Wagner

    This article seems to be coming from a pretty narrow perspective. I’ve been a developer/engineer/programmer (although I hate that latter word) for almost 30 years now. In none of my jobs have I been pushed to be anything else. I’ve been asked if I’d like a management role when one comes up, but when I refuse I’m not relegated to the garbage pile.

    As far as making more money, I know people who have gone into management and actually taken a pay cut. Regardless, developers fall into a certain pay scale range and if you want to be a developer you need to be okay with that range. It’s a personal choice. If my passion was to make sandwiches at Subway I shouldn’t expect to be paid six figures. If my passion is to develop code I shouldn’t expect to be paid like the CEO.

    • I can’t speak to a “narrow perspective” other than to say that I guess it doesn’t sound like what I’ve written is applicable to your specific situation. I’ve written about my own experiences, working for and consulting for software shops. Given the breadth of the audience the post seems to have resonated with, I’d go out on a limb and say that a lot more people than just me have had similar experiences, but I can’t say whether that makes it a majority or even a sizable minority.

      Regarding the second paragraph, comparing developers in general to working at Subway doesn’t seem like a good analogy. Subway is a specific place offering a specific wage, and “software developer” is a general occupation. If your passion is to make sandwiches, and you go into business for yourself, making really, really good ones… so good, in fact, that there is a line around the block to buy them, then you should get paid whatever the market will bear.

      What I’m driving at in a lot of my posts is to implore developers in the industry to *stop* thinking “welp, I guess if I like where I am in the HR matrix, listening to middle managers and getting 3% COLAs each year is just my lot in life. Oh well.” We’re in an industry where high end devs can bill out at over $200/hour, even for app development work. Accepting $110K/year because anything higher puts you in the “management” cell of the HR matrix is a raw deal, and, given the intense market demand for software developers, we simply don’t need to put up with it.

      • Craig Wagner

        My specific situation is a 30-year career over 12 employers in two countries, so it seems like a decent enough cross-section.

        Fine, you don’t like the Subway analogy. The point behind it still holds which is that your choice of career is going to put you in a certain salary bracket.

        As for billing out at $200 / hour, maybe that’s true in Chicago but it sure ain’t true in Portland. I have friends who are doing the independent contractor thing and after they factor in health-care costs, paying for their own training/education, not being paid when they take a vacation, and having to find their own work (not a direct cost, but a hassle and time-consuming), they don’t make much, if any, more than I do as a full-time employee.

        As for resonating, I haven’t read all the comments but I did sample a couple of dozen of them and most of them are either agreeing in principle, not because it’s there situation, or are outright disagreeing (like the 67-year-old developer).

        If you want to make the post about how to make more money, cool. But in my opinion the point of the post that the title claims just isn’t my experience, the experience of my peers/friends, or many of the respondents.

        • It wasn’t my intent to suggest that you didn’t have personal breadth of experience. I was more saying that I can’t really speak to whether my perspective is narrow or not. It doesn’t feel like it is to me (based on my own work experience, that of peers, and that of the various people that contact me through my blog, relating their own stories), but, I can’t speak definitively to that.

          I also wouldn’t dispute the idea that how you choose to make your living has an effect on the compensation that you might expect. What I do want to challenge is the idea that some position, “dev manager” needs to exist, and it’s ipso facto more valuable on the market than “developer.” I view that as a legacy of seniority-based command and control structures that’s being carried forward when it might not need to be.

          As for the costs of freelancing, I definitely understand that, since I’m a freelancer. Typical corporate structure vs freelancer is our *current* choice, but I’d love to see a different one, where we might pool together as a “firm” of developers to distribute the overhead burden of marketing and other sources of self-employment friction… but without bringing in the full, wage-depressant infrastructure of traditional corporate employment.

          Or, in other words, I’m poking at, “why don’t we model ourselves profesionally more like lawyers do?”

        • 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)

  • Phillip Andreason

    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 have always said I don’t want to be a manager, because I like 1337 (0d3z.

    Now that I have recently turned fifty, I have begun to rethink it.

    I think the logical career path for a developer is up through the developer ranks, Jr. Mid, Sr.; then up through a few architect ranks like Sr, Principal, and Chief.

    If you are absolutely management averse, then you should still have a full ladder of upward mobility, but be aware, as you get more and more experience, you will be expected to use your knowledge to assist the team in securing more work. In an internal organization this may be selling the management on the joys of n3w (0d3z. In a consulting company, you will be wearing a suit as much as shorts and a hoodie. That’s just the way it is. Grow up and embrace it.

    If you absolutely refuse to grow into a mentoring role that may or may not involve some pre-sales and team management, then consider yourself a pipe fitter.

    As a pipe-fitter, you are a skilled worker with a special ability that will someday be replaced by a robot. It is what it is. If you refuse to embrace upward mobilities, then you will be forced to embrace downward ones, or you can choose not to embrace them and rage against the machine the whole time it augers your skilled ass into the mountain.

    The alternative is to get a government job, but that’s whole ‘nother can of gummy worms.

    • Is this tough-lovish advice for me, or are you talking as if to the younger self you mention in the first sentence? I haven’t personally “refused to grow into” anything. In fact, quite the opposite. I took every one of the steps you mention (dev, senior, team lead, architect, up to CIO), and then went into business for myself as a freelance software consultant. These days, I do coaching and management consulting (and I don’t even have to wear a suit).

      I’m writing this post because that was the picture of what success looked like that was painted for me early in my career, and I’ve always been a pathological achievement collector. Leadership roles can be fun, mentoring is definitely fun, but looking at it all now, what I’d really like to do is build things with software (probably entrepreneurially rather than going back to work for product companies). And, as far as the community is concerned, I’d really like to help create a professional community where developers entering the field view spending a career programming as something to aspire to.

      What you’re describing (refusal to mentor newer developers, refusal to cooperate with dress codes) isn’t part and parcel with viewing it as acceptable not to move out of development roles; it’s just childish behavior. In fact, I’d argue that it precludes you not just from org chart promotions, but from reaching the top of your craft as a developer. I’m a firm believer that you don’t really know a subject as well as you could until you’ve taught it, so developers that refuse to mentor or exhibit leadership skills aren’t just poor management candidates — they’re not great developers, either.

  • Dave

    Here is the problem, saying I just want to be a programmer really shows no growth.That is the only thing I think the people asking the question want is to see how you think you will evolve. Now take the same thought and when the question comes up, say “I want to be a consistently better programmer”

    To be honest it is something programmers should be striving for. There is always something to learn and technologies shift constantly. Me, I want to learn to be a better programmer all the time. When they say “Aren’t you already a programmer?” Just respond with “Yes and I can always learn more until I decide to retire.”

    • 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.

  • Rob Conaway

    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.

  • Hugues Bernard

    What you describe is so true (at least for me) that this is one of the reasons why I made a “burn out” 5 months ago. I spent the last 2 years at answering the “career path” question by following the two wrong directions: being a manager first, then an architect. These were mainly the two options I could choose according to managers that wanted to help me evolving my career (thank you). I slowly but surely drifted away from what was of value to me: being a (good) programmer, creating, inventing, realizing… Until I was feeling so bad that I could not stand working anymore. What you propose is the third way: keep on with what you actually love doing. In my case, the organization I worked with values the management path, then the architect path, and in both cases you get away from your genuine skills and talent. You then tend to believe that you have no choice but to follow one of the two paths, otherwise you’re a looser. Now, to recover from my burn out, I started my own home project, to rebuild my trust in my own skills, and reconnect to the joy and satisfaction of programming, thinking, programming, designing, programming, building, etc. Your post is a perfect summary of the conclusion I came to while I was forced to stop working: there is no shame of keeping being a programmer, it is of vital importance for many organizations. And if it’s what you love then… stand up for your rights!
    (sorry for the mistakes, I am not a native English speaker)

    • 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!

  • Brice Wilson

    Very nice post Erik. It has stuck with me the last few weeks and I’ve been kicking around my own ideas on this topic. I definitely think “programming” is a career path. However, I think there are still ways companies can develop a path for programmers that is non-management and completely separate from an “architecture” track. I think the first step is for companies to recognize the value provided by their best programmers and find new ways to extract that value while also letting the programmers program. I gathered my own ideas into a post. I’m sure they will continue to evolve, but I hope to see some version of the “culture change” you describe take root very soon. Here is my post.

    • 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!