If you love writing code, do not become a “consultant”. Become a developer.

^ This is my simple career advice to everyone who loves coding.

10 years ago, I was about to finish university. I’ve always loved writing code, but by then, I had the following misconceptions about being a software developer:

1. Writing software is just a lower, entry-level job.

2. There is not a lot of career advancement for software developers. To advance your career, you have to ultimately become a manager.

3. If you’re still “just” a software developer when you’re 40, you might be out of a job soon.

All three are wrong. Being a software developer is an amazing and rewarding career. If you keep your skills up to date and your passion alive, I guarantee you’ll still
be in high demand by the time you reach retirement age. And chances are, you might not event want to retire but continue writing code. It’s just so much fun.

My initial career choice out of university was to become a consultant. First, I worked as a management consultant for McKinsey&Company, probably the most glamorous
name in the industry. I spent 14-16 hours/day (yepp, really) at work, wearing a suit, sitting in meetings, digging through large spreadsheets, and preparing Powerpoint
slides. It was actually quite interesting at first: for instance, I worked on a large-scale ERP migration for an insurance company. There was one big problem though -
I didn’t get to write any of the actual migration code.

In my next job, I worked for a technology consulting company. Their projects were about actually building things and writing code. Great! Well, I still had to wear a suit (mostly) and sit in meetings, and occasionally write status reports. But at least some portion of the job was really about firing up my IDE and writing and debugging actual code. The job was well-paid and the hours still occasionally were long, but mostly reasonable.

There was still a big downside though: quality didn’t matter that much. Sure, the customer expected me to write good code and to meet deadlines. But really, there was
such a thing as good enough. The company I worked for didn’t care if my code was well-designed and maintainable. They cared about revenue. And as long as the customer
was reasonably happy and would continue signing contracts, they were happy (and generiously return a portion of their cut as an annual performance bonus). Actually,
writing high-maintenance code would be to some extent be a good thing since those additional maintenance hours of course were billable, too.

If quality doesn’t matter much, though, you’re not gonna get a lot better over time. You’ll end up doing the same mediocre things over and over again, working with mediocre people. That’s a bad thing. Don’t stay in an environment like that.

There was another problem: the only career advancement was to become a manager. So, I eventually became one. Only to (again) realize that I didn’t like it as much as
writing code: I spent time in meetings, strategy discussions, sales presentations – boooooring.

Finally, after a few more years, I made my best career choice ever and became a full-time developer. I spent a few years at Microsoft as a “Software Development
Engineer” (SDE), then joined Stack Exchange a year ago. Having fun and writing and shipping code every day. Oh, and I haven’t had to put on a suit to work for years.

If you’re truly passionate about writing code, don’t become a “consultant”. Find a great company (for instance, on Stack Overflow Careers) and become a developer!

Discuss on Hacker News.

8 thoughts on “If you love writing code, do not become a “consultant”. Become a developer.

  1. Andy

    Hi Max,

    thanks for this article. I’m also a (senior) software developer who always thought of actually becoming a consultant / architect or go into the management direction. However, luckily I got introduced to a lot of consultants due to a move to another city …and you know what? I don’t want to change my job anymore …I also love to code, making software awesome. Good to know that there are people that think the same out there ….

    Greetings from Germany!

    Reply
  2. Doug Turnbull

    I think you’re missing much of the upside to being a consultant/free-lancer. Its a great way to develop your ability to learn about dealing with customers. Its a great way to hone your ability to solve a really difficult problem that many else can in a very tight schedule. In short, consulting is a way to really test your metal from both a technical and interpersonal standpoint.

    And it is certainly different than being a developer at a product company. You do work on very targeted solutions to specific problems. But if you ever hope to get rehired by that client you do some pretty important things. You write good, maintainable code. You *train* their employees to be as good as you at your specialty. Its not like your clients disappear, and a good consultant has an ethical responsible to not make themselves indispensable, especially if you want to maintain a relationship with that client.

    When I was a developer at a product company, I found myself working on the same thing over-and-over. Maintainability was certainly at the top of the list, but largely because the problems weren’t technically difficult. I got rather bored of punching a clock. So I switched to OpenSource Connections doing amazing consulting work, and I’m really happy I made the switch. We are brought in to solve extremely targeted and difficult problem.

    “Consultant”/”Free lancer”/”Contractor” are all terms that get lumped together. Usually “Consultant” is the word you use when you want to bring out some of the negative aspects of the work. But I think its a mistake to characterize the work based on a few negative experiences you may have had. Certainly others have had bad experiences being a more general-purpose developer (I know I have).

    Reply
    1. maxhorstmann

      Doug, this is great feedback, thanks a lot! There certainly are good consulting jobs out there, as well as bad product developer jobs – I’m glad you found the right spot. I fully agree with your point that “dealing with customers” is a skill and being a consultant is a great way to gain it. The type of customers you’re dealing with is gonna make all the difference though. For example: are they capable of providing you with good specs and requirements? Do they understand the cost of late changes? Are they gonna accept that to achieve high code quality, some portion of your time will have to be spent on code cleanup, refactoring, writing unit tests etc.? Are they open for schedule or scope adjustments, or will they pressure you into compromising quality to meet unrealistic deadlines? – If you’re lucky enough to be working with great customers, and it sounds like you are, then for sure it’s possible to thrive and grow in a consultant role as well and also pick up non-technical skills along the way.

      Reply
  3. Leo (@shikida)

    Hi Max
    I am senior developer. My career was quite the opposite of the traditional expected path. I´ve started as a developer, then I became a partner of a small company, then I turned into a developer again, then I became a manager, and then, just like you, I thought I could not be a manager and that development is my true love.
    I just don´t know how old you are. I bet you´re 30, while I am in my 40s. I have a 4-yr old kid, a wife and a family. And many bills to pay. I don´t have time anymore. I am afraid of the younger people who can work more for less, while I am tied to family and kids. So be careful.

    Reply
    1. maxhorstmann

      Leo, thanks for your feedback! Yes, I’m in my 30s. “Be careful” – well, I’d rephrase this a bit: as you progress in life, keep your passion alive and your skills up to date. Make sure to find interesting challenges on the job for both. No need to be afraid of those young and inexperienced kids then.

      Reply
  4. Johannes Link

    When focusing _only_ on development you’ll be missing out on a lot of other crucial factors for success ( in your projects and in life). But that shouldn’t hold you back from seeing technical stuff – programming included – as your real passion. But always look left and right, meaning subject matter domain and people stuff. When one of those is more important, take up the challenge!

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>