80% of developers are unhappy. The problem is not AI, nor is coding
shiftmag.dev
shiftmag.dev
I have my own reasons as to why professional development went to shit and I began to be unhappy in the industry — naturally I looked in the article for validation.
For me the reason I started out loving developing software and came to loathe it has everything to do with the environment within which we code. By this I guess I mean specifically management and expectations?
I was never unhappy with my Apple salary (although you were often very aware that other engineers at Apple were being rewarded an order of magnitude more than you were) and the issue of "Technical Debt" I would cast differently than the article did.
Did I hate technical debt? Not at all — if I was allowed to go in and "own" the code I was expected to fix/maintain. And this hints at one of the bigger changes that I saw over my career: when I started out at Apple in the 90's, engineers got their own "sandbox", got their own code they owned. If you wanted to, you could rewrite it from scratch — and we essentially did just that every two years or so with ColorSync (just as an example).
Now I won't deny that "things were simpler back then" and rewriting an entire framework was something a pair of engineers could do in a release. I would not have been rewriting all of PDFKit a decade or so later (but I may have gone in and rewritten entire sections of it, like rewritten the PDF annotations for example).
I still paint "technical debt" as a problem of "ownership" though. If I am free to rewrite as I see fit (perhaps in sections at a time) an entire framework, then I say bring on the technical debt.
Hustle culture, bureaucracy — again, in the early days of my development career at Apple the engineers owned the schedule as well, owned the scheduling of the meetings....
"What do you think your team can deliver this OS release?" a marketing type might ask our tech lead.
"We talked about that in a recent meeting," they might respond, "we have engineers already working on feature A and B and another engineer that wants to explore rewriting C on top of our new framework for some performance gains."
The tech lead had made suggestions to the team, team had countered with their own requests or agreed, engineers had volunteered to take on the tasks...
It goes without saying there was no scrum, etc. in those days. (And we liked it that way!)
I know this is already long, but I think I want to jump off here with a comment on things like "agile" development, unit tests and code reviews — things that I personally think made the job miserable.
All of these things that were brought on, that we suffered, didn't seem to have anything to do with improving development. Instead they seemed all about giving management cold comfort that "progress was being made" (or not).
Management live in a world of dates and numbers, engineers live in a world of tasks, code robustness, error handling. Various efforts over the years seem to have been devised to burden the engineer with crap that give management the illusion of numbers and dates that they can take back to their own management.
I guess to end this I'll just say it boils down to engineer autonomy, agency. There was a golden time when the engineers were steering the ship, and I liked it.
> Despite being unhappy at work, most developers code outside of work as a hobby (68%)
I think that one line from the article is the most telling.
As the market has tightened, I think autonomy has waned. What was over-hiring during the pandemic is perceived by management as unfocused technical work. Rather than own their mistake, it's being projected onto line engineers and this brings down overall satisfaction.
> > Despite being unhappy at work, most developers code outside of work as a hobby (68%)
> I think that one line from the article is the most telling.
I agree that this line is the most telling. I like coding on side projects as a hobby, but it's hard to find the time in life and it's the side projects where I get the most joy.
It's the total opposite environment of at-work code, where you grind through tickets you don't care about, write design docs as checkbox items rather than because they are needed, write status updates nobody reads, implement features you don't want to implement because someone's boss's boss's boss's boss wants the feature, and it's all deadlines, deadlines, deadlines. We ship on date X whether the software is high quality, barely working, or missing huge pieces. And then, after all that, it's time for the next sprint!
Or, halfway there, the project is canceled. Bonus points if they later wonder why you got so little done during that part of the year.
But when MBAs took over, they only knew how to MBA. They didn't know how to manage in an engineering culture, so they turned it into an MBA culture.
Some few people have agency without responsibility. Rich heirs, for example. Some of them are happy, but you hear a lot of stories about them acting out for a reason.
Those who have responsibility without agency are almost universally unhappy. This is where many developers are. We dislike those who carve out a piece of code and jealously defend that turf, but that is where this comes from, the desire for agency over something.
Those who have both agency & responsibility are the ones who are fulfilled. The stress from the responsibility may make them temporarily unhappy, but the long term fulfillment is the most important, and it is those who have it.
And it should be relatively straightforward to provide agency to developers. Let them feel ownership for a piece of their code. They'll take pride in their work and you'll get much better code out of them. Give them the information they need for proper decisions rather than just using that context to make the decisions for them.
Let them actually have that ownership. If you just let them "feel" like they have ownership but they actually don't, you're not going to fool them for long.
I'm reminded of a (bootstrapped) founder I worked for briefly who, during chit-chat on a long flight, complained about his employees' work ethic and said he wished his employees worked like they owned the company. "I try so hard to help them feel like they own the company, but they just don't go the extra mile." I really wanted to tell him, dude, they don't act like they own it because they don't!--you own 100% of it!
You have to give actual meaningful agency and control to people. Not just the feeling.
And let's not even start about the housing market and the possible future job market shift due to AI.
Almost none of it is due to the current local job stuff. That doesn't matter. It's all about how the future seems to look like.
It may alleviate some of your worries.
2. You say "climate change" "keeps me up at night". Do you believe that is a rational state of mind to have? Shouldn't you open up a bit and talk to a friend or professional about your feelings?
https://www.astralcodexten.com/p/please-dont-give-up-on-havi...
There's a nervous murmur going around with men younger than me (31) about the draft coming back. Dying in a field from a consumer-grade drone dropping a grenade on you is increasingly frightening.
Perhaps it's unlikely to be "all out" nuclear warfare. Climate change is projected to kill a small number of millions of people. It wouldn't take much for a limited nuclear war to kill more than that.
Wait until bioweapons are made and inevitably leak from a BSL-max lab. That's like if the nukes were invisible, without number, and diligently tracked every individual down.
Unlike nukes, that's extinction time.
Not if we become multiplanetary by then though.
Plus, as we now know, the attacker might be able to rely on a sizable portion of the target population downplaying, denying, and deliberately spreading, and otherwise politicizing the bio agent. You don't get that with nukes. Once the bombs start dropping, nobody's going to have the time to spread conspiracy theories.
That's not a safe assumption. A nuclear war is far more likely to be a limited local exchange than the all-out-war imagined during the cold war. So you're unlikely to be killed outright by the exchange. Instead you're likely to to have to deal with the nuclear radiation fallout, severe food insecurity and increased global tension.
Our current situation is very close to how WWI expanded from a regional squabble. Look to that one and ignore WWII to see how it might occur.
case in point: my sister in law and her husband got pissed off about speed bumps and signs (too many, and/or too few, in the right places), and started going to town hall meetings. show up with photos and make some valid points and things get changed...
In the end, I caught the programming bug. The act of programming was in itself magical. And it felt like a super power. From website to making art using some procedural algorithm, to making little games and solving them with genetic algorithm, everything felt fun. Even though the learning part could be complex and tedious, being able to approach it however I desire made sure that I kept my motivation.
So when I had to choose what I was going to study after high school, I already knew. And this is when it started to go downhill. Not that school wasn't fun in its own way, and I did learn a bunch of things. But the more rigid form of learning and the mandatory exam still chip away at my motivation.
And then work. It really makes you understand the concept of Alienation. Your agency is (mostly) taken away. You don't get to work on what you want, how you want it, with the tools you might prefer. You have limited ability to influence the direction of the project, to propose new ideas, etc ... Your self-expression, which for me was a important part of programming, is repressed. It gets better with time and experience. And some company are better than other at letting you experiment and learn new things. But coding various part of a UI for another business related backoffice, will never be as fun as spawning whole world from a few lines of code, reverse engineering a protocol to create your own client, making gfx, creating a small website for you friend's band, ...
Work is work, and when your hobby turn to work, it can feel very frustrating at time. Especially since, after a day of "work" coding, my motivation for "hobby" coding is reduce to ashes. But at the same time, I don´t see myself doing anything else.
Now I work in application security. It's not like this is magically a better job in most ways, but it doesn't kill my love of coding for fun.
(And probably the whole Agile methodology is part of the problem, too.)
It's also just not fun to think about why life sucks, and it makes life a little harder to begin with I think. So it requires some tact. People bringing it up as a subjective and personal take that they just want to share, as opposed to an objective fact that needs to change, has made it easier for me to take others more seriously in this area.
Sorry you felt like the minority, hope you can get to/create an environment where you feel better understood.
I'm extremely introverted and have a hard time telling this sort of thing to anyone but my therapist, but I was under the impression that I'm a bit unusual. Obviously in this forum, I can speak my mind because of the relative anonymity.
I often wonder if people do in fact understand what is making them unhappy; it often seems so clear to me. For instance, working from home is so sought after, but for me it was a disaster; the thought of being chained to a desk in my house for the next few decades of worked seemed close to living in hell (or at least the office). As I said, I'm quite introverted, but that level of singular toil is incredibly unnatural to me; I don't understand how anyone can do it, and yet people would accuse me of being some sort of shill on this site for laying that out.
And so, I got an in person job at a company that makes a product that I think is useful. I would be laughed at if I said what I got paid or some of the old technologies we use, but you know what - I might actually be in the twenty percent these days. I've actually told people that my job is a source of pride and satisfaction for me. Now my biggest fear (it'll probably never go away) is that we lose relevance/customers and I'll have to find something else.
Karl Marx literally called this term, something he thought was inevitable under capitalism, "Worker Alienation"
In carpentry or Plumbing for example, you can point to something being completed.
The valve was either replaced or it wasn’t. The water is either leaking or it isn’t. (Sorry I can only think of residential plumbing issues, I know it’s more complicated than that).
But in software it’s way more amorphous. Every feature has endless discussions, the product is less tangible, and you don’t often see people actually using what you built.
But that’s just me projecting why a career in software (while very comfortable and I genuinely enjoy programming), can feel a lot less satisfying.
When I was starting out, I was solving problems for co-workers constantly with mini programs/tools (often 1-2 page websites), and I could see them use those tools to solve their daily tasks, and it was highly satisfying.
But at the same time, that does explain why many of us (raises hand) do woodworking or other "constructive" hobbies outside of coding.
I see plumbers who come in, do something, leave and send the bill. Except their something didn't fix the problem.
How can you be happy in that case?
Karl Marx called this "Worker Alienation".
As in alienation from their work in a fundamental sense, and the inability to not only get the full, market value of their labor, but in the basic inability to even get satisfaction of the work, and the eventual alienation of self-image that eventually follows.
I'm comparing the idea is that most IT work (like a lot of white collar work in general) is abstract, and less well-defined.
Whereas with a lot of the trades in the physical realm, a lot of it is repetitive and you complete it.
It's the same with plumbers, mechanics, etc. Yes there's the occasional problem that will escape you and bother you for weeks. But most of the work is repetitive, and has a definite start and an end. And you seldom have a feeling like you wasted a whole day and got nothing done.
> Working with imperfect systems demoralizes programmers, making it difficult to do quality work.
> Developers are under pressure to complete tasks as fast as possible
> Layoffs
> coding is a sedentary job, and a sedentary lifestyle is extremely harmful to physical health.
I recently started a new job where 2 and 3 are no longer a daily concern. But can't escape a high friction dev experience and sedentary (also highly non social) lifestyle at work.
However, doing it as an employee (in most, but not all, workplaces) sucks the joy out of it. The workplace sometimes seems designed to make the task as unpleasant as possible.
Fixing things in my home, painting walls, assembling furniture often gives me more satisfaction and the feeling of a finished job than deploying an update for a web app. This wasn't an issue for me for most of my career, but it's something I feel intensely in the long term (10+ yrs) and as I get older.
I think it's the reason why every now and then you see programmers switching careers to farming or carpentry.
There's no simple answer to this question, I think it's the result of many different issues, and this post outlines a few of them pretty well.
For me, I've begun to think that it's intractable for my own personal well being, and have been thinking about how to make my way out of the industry. Which isn't easy when you live in a HCOL area and don't really have other marketable skills.
But not surprised that many developers are "unhappy" - I think you'd see the same thing in finance (or any high pressure industry that's highly paid where employers have very high expectations).
I think my ideal world would be building applications in Ruby with other late-career folks who are low drama, interested in making money, love talking to customers, and don’t get distracted by shiny new tech that becomes stupid tech debt a few months later.
Cultured Code comes to mind, though I don’t know if they’re a collective.
> Anecdotally, both plumbers and farmers are happier than them.
While I agree there is no source for this neither is there any indication it is the author's opinion.
(And since it allies with what I have also come to believe is true, I am going to assume there is data backing it up ... somewhere.)
Now, n years later I can barely work on the graphical side anymore because most of my time is spent on writing business logic on the client. Fetching data from the server, parsing and massaging it, data management, … So I've basically become a backend developer for the frontend now.
The visual part of the web has been taken over by tools like Webflow and Framer or the other extreme with ThreeJs. I recently talked to some companies/recruiters just to casually see what was available and my desire to go back to the more graphical/ui/ux side of things, but everyone was just looking for a 'react developer', so just the same boat that I'm in now.
So yeah, I power through, but that doesn't mean I'm happy about it. I'm also not completely unhappy, but things could definitely be better.
But then devs get stuck in wageslave job and never pursue what they want.
I'm sure that 90%+ of the devs unhappy would enjoy coding if they would work on a business of their own, something that they actually think should exist, regardless of "whether it's good or not for societity".
People want to work on what they believe should exist. Modern dev jobs are the opposite for the most part.
I mean c'mon, have you ever seen a young teenage/early 20 dev who was like "Yeah bro I really want to programm ads, so exciting".
Perhaps the best way to one-line it would be: They are not allowed to achieve a suitable level of quality.
Most salient.
- not have to worry about replenishing your bank account every month
- have all your modest needs in life met
- workplace is in a way the only community of like-minded people have outside of family
Cons:
- help realise someone else's dream
- you might forget you have any dreams of your own at all
---
My adult mind has been shaped by the controversial, maybe conspiratorial discussion about self-employment rates over the past century in the Deus Ex game, and as I've grown older, I've found I'd rather struggle on my own path rather than making myself care about someone else's idea.
https://youtu.be/0mAFryoa6Po?si=gGFMKRkLA_GKridQ (take it with an open mind and a grain of salt, it's cyberpunk conspiracy fiction after all)
For a deeper discussion, I can only recommend Ross Scott's review of the game: https://youtu.be/rxOKEsBx4NU?si=fp3LTFAJrGtEDbZH
Not having friends is more of a modern American culture thing. When you have no social life independent of your work life you get that and the loneliness epidemic in US
I mean it doesn't change jack, but placebo effect + community are better than nothing. Plus it's a 3rd space that doesn't charge anything, usually.
I thought people were dedicating far less time to code in their free time
Edit: It kind of also explains the high-percentage of unhappiness. The junior marked is especially screwed right now.
yeah demand on the mid-to-high end, esp. SME's in specific areas like DB, front-end, ERPs, etc. -- all pretty high. you gotta know your stuff, but truly experienced folks with real creds go fast, and we struggle to hire and keep them. leadership roles seem to be okay; never easy to get into anyway, but the boomers and early Gen-Xrs are getting out of the market and things feel open.
meanwhile we put out ads for junior-to-mid level and get 1000+ applications of dubious quality (all AI written), 30% of whom aren't on the same continent. respect to my homies in Kenya and Delhi who are hustling for Toronto jobs, but we don't sponsor, and that extra noise just makes it harder to find legit junior-hires.
Loading up the context required to solve a problem and hold that state for the several hours to write the code means to be alone with the computer and no one else. To think about abstract ideas and concepts instead of people and feelings. As a social animal, that's not what humans evolved to do.
Software engineers need to prioritise connecting with people during their free time since they are unlikely to experience much of this during their job.