I think I've been gaslighting myself for years, telling myself I enjoy coding, forcing myself to spend my weekends and evenings doing it in the hopes that one day I'd be able to leverage that skill to advance my economic position. And so I did. I'm good at it. I don't have any specific complaints about my job or my team. But now that I'm finally here I don't feel happy like I thought I would. I've learned that I don't enjoy the process of software development. I don't enjoy writing code. I enjoy creating things, with writing the code being an essential but miserable part of that, and I'm not doing any creating now.
I don't like sitting and looking at a screen for 9 hours a day. I work from home and while I love that, I'm constantly getting up from my desk because I just feel so restless. I go to the gym but it isn't enough.
Moreover, and I hate to even admit this, I hate having to always be "on". I miss having an easy job where I could be essentially brain-dead. Every day I come and have to solve problems, but not the fun puzzles I was promised, not the execution of novel ideas or the creation or real value. Instead I dig through legacy code that was written in "start up" mode and have to figure out what Bob's function does that's abstracted 20 layers deep. I have to dig through an api's docs only to learn that a JSON key had the wrong capitalization in my request body. Ad infinitum. I could deal with constantly being "on" if it meant really solving interesting problems or creating something new and valuable. Instead I'm pouring my time and energy into what feels like categorically petty issues.
A big part of me wants to just quit and get a job where I can turn my brain off for 9 hours and then spend my free time dedicating my brain power to personal projects and actually build things. I've stopped all personal projects because after 9 hours at work, the last thing I want to do is sit in that chair for another second.
I'm making this post hoping to get answers to a few questions:
1. Has anyone else experienced anything like this? Am I crazy?
2. What can I do to fix it? Has anyone experienced this, and then overcome it?
3. Are there any fields that are programming-adjacent where I could leverage what I've taught myself the past several years?
I, for one, wholeheartedly endorse this plan. I think it's a mistake to expect to derive significant joy / self-actualization / gratification / whatever from your "job". A "job" is just a means to pay the bills - put food on the table, buy gas, pay rent, pay electric bill, etc., to enable you to do the things that you actually enjoy doing. I mean, sure, if you happen to enjoy your job, then that's a nice bonus. My problem is with the idea that your job should the primary focus of your life.
Likewise, if by happenstance the "thing" you do outside of work happens to be very similar to what you do at the job (eg, "programming", just in a different domain) then so be it. That's fine. It's fine to say "I love coding for AI research I'm doing at home, but hate coding the same boring CRUD app at $BIGBANK for 9 hours a day." The big thing to watch for here is IP conflicts, especially if you intend to commercialize what you do at home (or think there's even a chance you might).
If anything, count yourself lucky for coming to this (apparently) fairly soon in your career. It took me a long time to figure that out.
Personally, I think the amount of energy it takes to play these petty games in any given employer/code-base wanes over time. I would recommend putting away all other coding for a bit and see if you start to get enough energy for doing truly different things in your free time.
Don't think that this job is the same as any other job you could be doing. Try some other ones. It took me a while to get around to working at small startups, then a large company that runs smoothly with minimal BS, etc.
I suspect that a significant amount of your day energy is lost to the perception that your job is a chore. If you can run your day without emotional judgement perhaps you would have more energy at the end of your day for personal projects. Maybe you could try "going through the motions" that get the job done without the emotional energy expenditure. Or maybe I'm way off base. In any case, it seems that the goal you attained has led to disillusionment. For me the best thing would be working with sharp co-workers where I feel like any day I could be learning something new and interesting that might be useful elsewhere.
When faced with a mundane task that offers no learning opportunities, try and get creative within some time budget. When porting some Java source to C++ that included a test suite, I parsed it into ASTs, transformed the AST and unparsed the C++. Of course it wasn't complete as it was a total hack, but it was complete enough that tidying up the output was interesting because it would let me see if the process worked when I got through with it. The best part was not having to write the test suite from scratch.
Your current job, that's why they call it work.
Legacy code is rough for everyone regardless of their level of experience.
You might want to ask if you can start rebuilding the legacy code so take an area and rewrite it. Maybe split your time 50/50 between legacy fixes and new code.
Or even better is there a junior developer you could feed these legacy issues to and mentor him while you're working on greenfield or rewrite projects.
1. I haven't really burned out yet. I love being a developer, solving hard problems and learning new things.
2. If I start feeling tired of the grind I usually take a vacation or reduce my hours for a week, do more family stuff, meet up with friends, get outside. Then the next week I'm ready to go after it again.
3. Developer salaries have increased a lot even over the past 2 years. So it would be hard to leave and find something comparable. Right now is a good time to change jobs, demand is super high.
Developer happiness is dependent on lots of things, codebase, project/company mission, culture, team, CTO/Manager.
It's probably easier to change jobs than change most of these.
Every place is going to be different. It sounds like you would be happier building new stuff so maybe try to either get on a greenfield project at your current company or stay gainfully employed and seek out your dream job/project at a new place and probably get a nice raise in the transition.
One last thing, if you're self taught and worked as a consultant you might be working at a pace that's not expected in a company environment. This is an issue for me, I'm usually working/thinking at a really fast pace from when I worked as a consultant developer. In the company environment you can work at a more balanced pace and still exceed expectations.
Side projects are about passion, if you're making more now than you used to and you don't want to code in the evenings, don't. You've worked hard to level up. Relax and enjoy.
Good luck, keep on coding.
Some of these might be good - https://www.workatastartup.com/. I also think Turing is placing engineers well. Not sure about TripleByte.
Neither do I. I also take breaks a lot. If you were in an office you would too. You’d BS a lot with your coworkers, sometimes for long stretches of time. It’s just not fun to sit at a computer 9 hours without breaks.
Up to you to decide if your limit is a month, a year, a decade, or a career before you want to cash your chips and clock out.
Oh yes.
Have you ever considered applying your skills at non-tech companies, in some other industry or area that you're interested in? I've been coding for a few decades, but only my very first job was in pure tech. That got boring pretty quickly because the problems were so abstract and removed from real needs, and a lot of it was driven by abstract algorithms and boring business needs rather than making something useful or meaningfully better. Furthermore, there was usually a bunch of interchangeable devs so the work was piecemealed out and everybody worked on some tiny boring part instead of designing cool systems holistically.
Then I started doing the same kind of work (mostly web dev + some DB and sys admin stuff) for other sorts of organizations... worked for renewables, nonprofits, museums, legal advocacy groups, yoga studios, random individuals and small businesses, blah blah, and each one had interesting problems they were trying to solve, using a diverse mix of technologies, for relatable users. I felt like I went from a cog in an uncaring machine to a miracle worker making things happen for people who really needed it and valued my input.
Just as an example, in my current field (renewables), you can do hardware engineering, production and supply chain management, system design, marketing, graphics, mapping & GIS (geographic information systems), analytics, user experience, support engineering, and so much more. Tech isn't really the mainstay of the business (making and selling solar panels and other devices is), but programming touches everything we do in some capacity.
Other random fields that need programming: data science in any data-driven field (climate science, biology, pharmacology, academia), movies, games, robotics, drones, escape rooms, automobiles, airplanes and aeronautics, defense, agriculture, astronomy, spaceflight, architecture and building modeling... there are so many interesting problems in the world that you can work on, don't limit yourself to pure tech. Unless you really like computer science, tech is IMHO the boringest field where coding IS the focus. In other fields, coding is just a means to a much more interesting end. We're very lucky (as coders) to be able to switch verticals like that basically just by submitting a resume, without needing extensive re-schooling!
Field/vertical aside, the exact type of work/specialization that you choose to pursue also makes a HUGE difference in your day to day work life. I used to be a full-stack developer and spent way too much of my time doing boring (to me) things like managing Docker or optimizing SQL queries... turns out I vastly more enjoy UX and design, and so I learned Figma and basic UX skills and eventually became a front-end dev and love it sooooooo much more now that I never have to touch the backend again. If your tech experience is primarily limited to working within a programming language and JSON, maybe you can explore other tech-y things like UX, design, analytics, marketing, SEO, graphics (2D or 3D), music/audio, photography, game development, GIS/web maps, machine vision, whatever.
Really, you have a great foundation to branch out and go down a different path if you want to stay tech-adjacent. Or if you find a better career along the way, at least you'll get your foot in the door in that industry and maybe gradually transition from tech-adjacent to tech-rarely to tech-not-at-all and find your happiness that way. Just keep looking :)