coding is not my dream job
Updated: Jul 8
I was recently in an interview and the interviewer excitedly described their ideal candidate: "We're looking for someone that's really passionate about code, someone who lives and breathes this stuff, you know. Always updating their knowledge, always exploring new stuff, someone that's constantly on." The reply I gave seemed to take them by surprise, "Well, in that case, I don't think I'm who you're looking for."
There's that famous quote: "Do what you love and you'll never work a day in your life."
This sounds so nice. It's fundamentally appealing. It's deeply aspirational. It resonates with our cultural instinct to plan for the future. And it's alluring with the promise of always feeling great about what you're doing, and avoiding negative feelings.
It's also kind of a lie.
Look, every job has downsides. Every job has things you don't like to do. Things that bother you. Things that are mundane, repetitive, boring. Things that, even worse that being boring, are frustrating in a stressful way. Thinking this isn't so is a sign of one of two things: you've never worked a day in your life or you're delusional. Ok, or you're one of those extremely rare outliers that love everything about what they do and who they do it with and experience no frustration and no friction in their professional life. But those are just that, outliers; rare unicorns that we can all envy from afar. (Notice my use of the word unicorn and its mythical implications.)
You see, I'm a software developer. Well, that's what I do. What I am is a person with many interests. My greatest passion in life is music: playing it, listening to it. It enriches my life in a way nothing else in my thirty-five years of experiencing things has. But I also deeply enjoy the time I set aside to read. I enjoy being active and how that makes me feel. I relish how my mental models of the world change when I engage in philosophy, or study astrophysics, or psychology. I love video games - both playing and designing them. Especially Tetris. (It's a problem.) I find learning new languages really satisfying. But yeah, I also really enjoy coding.
Working as a software developer, I find myself in a culture obsessed with work or, working, or performing. People stay extremely late; they're constantly thinking about their work. There's this obsession with everybody needing to be a rockstar - the developer that stays up all night and creates cool stuff because, goddamn it, this is what they love to do.
But the problem is that this same culture's norms lead to people constantly feeling overstressed, burnt out, tired, and constantly wired. Health issues, both physical and mental, abound.
Here's my confession: like I've mentioned before, I'm extremely passionate about music, but I would never do it as more than a hobby. I'm aware of the reality of being a musician. I'd rather have all the good parts in small measure and very little of the bad parts, than a moderate amount of the good and a lot of the bad.
Similarly, I like to code. I like doing it professionally, and tend to view it as more a craft than a job. I enjoy the challenge of building something. Of figuring out problems. Of feeling a stimulating frustration that will get released when I find a solution and I'll feel like I'm on top of the world. Learning new things about my craft is exciting to me. And sometimes I go home and work on code related side projects.
But most of the time, I don't. Because to me coding is my job. No, usually I go home and practice bass. Or read. Or play video games. Right now I'm learning Portuguese. Often, I do a mix of all the above. Because while I like working as a developer, that is not the entirety of my identity, and I don't want to feel like I'm working all the time.
This is what I explained in that interview. No matter how much you're a rockstar, nobody enjoys back-to-back-to-back meetings that have no outcome, being pressured into crunch because sales promised a feature that they didn't consult with anyone on, poor project management, endless emails, breaking pipelines that get in the way of you doing your job, and so on. Living and breathing code doesn't suddenly make these things awesome. We're lying to ourselves if we think that every minute of every day in your job will be pure and blissful nirvana. I told them, I'm someone that gets the job done. I'm reliable. I'm able to communicate well. I'm able to celebrate wins and learn from failures. I don't need to be a rockstar to get results. I don't need to live and breath code to do my job well.
Normally, in writing something like this, you'd end that last paragraph with a positive sentence, really completing that emotional rollercoaster the reader is experiencing to drive home the argument. But I don't want to do that, because that would undermine the point. Whether you agree or disagree with what I'm saying, I think it's time to have a serious conversation to question the bad ideas that plague the software industry and the even worse hiring practices that enable your expectation of them from the moment you step foot into a new office.
I'm not going to lie to you in a interview and tell you that, "Yeah, that's me. I'm the guy that lives and breathes code!" I've done that, when I was younger, less experienced, hungry to get my first job. And while I did a great job and everybody was happy with what I'd done, there was a discrepancy between who they saw in the interview, and who they worked with. And it wasn't just me.
Because the truth is, most developers aren't rockstars. In fact, the majority are like me. Most developers enjoy other things in life. Like not thinking about work. Like thinking about.... well, whatever they're passionate about. So it's time to address these strange expectations we have as an industry. It's time to look at solid, reliable, proven developers that may not spend their entire day on code and that leave at 5 everyday not as second class citizens that are your backup in the hiring process, but as the people that form the core of a team that can perform consistently and predictably, and that delivers work reliably.