top | item 40105121

I love programming but I hate the programming industry

269 points| conquestofdread | 1 year ago |deathbyabstraction.com

200 comments

order
[+] halfmatthalfcat|1 year ago|reply
It’s not the “programming industry” that OP hates, it’s the “corporate world”. I’ve worked with (and have been) developers who have mismatched expectations on what “the real world” wants out of them.

The corporate world doesn’t give a shit about finesse, abstractions, witty or beautiful code. They care about finding developers who will pump out features to the business requirements. Some human beings in that cog (managers, directors, peers, etc) may allude to enabling developers to actually practice the “art” of programming but the bottom line is if you aren’t moving the needle economically for the company, you’re a liability.

Find comfort in programming outside of the corporate world and practicing the art but don’t expect the “industry” gives a damn about the how or why of programming, mearly the characters we punch onto the screen into cash. Once you come to terms with this, life gets a lot easier, less frustrating and you can actually find fun in the work (albeit, not necessarily “art”).

[+] fuzzy2|1 year ago|reply
I think “industry” strongly implies “corporate world”.

However

> The corporate world doesn’t give a shit about finesse, abstractions, witty or beautiful code.

Guess I’m the corporate world then! Listen here, dear colleagues: Before attempting any finesse, abstraction, wit or beauty, maybe first try to make it work to spec. Because otherwise it is entirely worthless.

If you are reasonably good at making it work, you can then make it right and maybe even fast.

[+] OJFord|1 year ago|reply
Or simpler than that, surprise, work is less fun than hobby.

Even if you work for yourself doing what you love, even say it's making furniture or whatever, there's always going to be things like customers want the 'wrong' things, or won't pay extra for the nicer exotic material, etc. doing purely what you love as a hobby with no work aspect is always going to be better.

[+] gofreddygo|1 year ago|reply
> Find comfort in programming outside of the corporate world

This is indeed the bitter truth I've learned this last decade in the industry.

You're paid to deliver. Whether its efficient, it solved the problem, made any money, ticked some boxes isn't yours to bother or control. Plan tour stuff, do your stuff, be nice to others and sign out at 5.

Don't underdo by writing bad code, or not caring of the downstream consequences of your decisions etc. People do get fired for this.

More important, don't overdo. Don't try to predict how the product evolves and catch those scenarios, don't fight for your obviously better design, don't try to deliver faster, don't try to fix that bug you found while working on something else you are tasked to deliver. Chasing a promotion is one of the worst kind of stress I brought on to myself.

Know the kind of project you're in (high intensity, high growth, mature, next on the chopping block) and act accordingly.

Further, take credit and be seen. Do a demo once every quarter, review people's code, show up for design meetings and ask a question, reply to emails/IM's (that show up before 5pm) quickly, deliver on what you said you will. Be seen as a useful resource but push back (with your actions) on the slightest sign of pressure to deliver.

Finally, always be prepared to land your next job interview in 2 weeks.

Its your workplace. Not your family, nor a body shop.

[+] marginalia_nu|1 year ago|reply
I feel this sort of mentality is exactly how you turn into Boeing.

Wings staying attached to the plane in air isn't pumping up the KPIs, fire everyone who wastes time on such irrelevant concerns!

[+] abnercoimbre|1 year ago|reply
Hope it's okay to self-plug here (seems highly relevant): what you say is a big reason why I organize the Handmade conferences for a living and why they're free of sponsors [0].

An implicit goal is to grow popular enough to the point that enough programmers collectively agree they should have a say in the "corporate world," such as demanding that we slow down "pumping out" new features and make greater investments in software quality.

[0] https://handmadecities.com/about

[+] PUSH_AX|1 year ago|reply
Corporate? I think ultimately we’re talking about any business here. And a business doesn’t exist to facilitate engineers to go back and forth on a PR for a week, or to fantasise about abstractions all day.

The entire problem is the vast majority of engineers have an inability to recognise the business function of their output. They live in their own worlds with tunnel vision on minutia. I can’t pin point when this happened but engineering is a complete circus in most companies.

The horrifying thing is there is buy in at senior management, like the engineers have convinced everyone that it should take weeks to deliver some trivial feature, because God forbid they don’t deliver it by using every dogmatic and koolaid driven process they’ve picked up from others over the years.

You work for a business that’s trying to make money, not a software engineering sandbox charity. Of course there needs to be some balance, but boy is it skewed one way for most right now.

[+] graemep|1 year ago|reply
> if you aren’t moving the needle economically for the company, you’re a liability.

I would add, moving the needle in the short term. A business taking a long term view would care more about quality (reliability, security maintainability).

[+] ChrisMarshallNY|1 year ago|reply
From what they wrote, "small startups" are part of that "corporate world."

From my experience, the cultural differences between large corporations, and smaller startups, is night and day.

Often, neither one is functional; but they are dysfunctional, in different ways.

For myself, I was never happy until I was able to helm my own ship. A lot of folks think that this means "hobby programmer," but I don't actually fit that template.

[+] swatcoder|1 year ago|reply
> It’s not the “programming industry” that OP hates, it’s the “corporate world”.

To add to this, the "industry" is very big and fundamentally quite diverse in character.

But right now we're on the tail end of a big surge in growth, and those surges tend to introruce a lot of uniformity in their wake. Processes and practices of the orgs are taken as some part of the secret to their success and are adopted by competitors and newcomers, and after a while everybody-ish doing work adjacent to the booming sectors within the industry are approaching it similarly and procedurally. The focus is on outmaneuvering competing businesses for a slice of the growiing pie, and matters of concern of the craft itself or long-term engineering vision are generally deprioritized.

This is not a permanent condition or a universal one.

All along, there were still people and orgs and departments doing things differently, but they did become harder to spot amidst all the boom chasers.

And as the boom tapers or bursts, with competition having less at stake, even the homogenized orgs and departments start having the headroom to take a second look at their processes, procedures, and priorities and again start to diversify.

It's reasonable to get discouraged if you've only ever seen the kind of orgs you can't stomach anymore, but a little patience can find you with opportunities you're more comfortable with. Some dedicated pavement pounding and deep digging for the orgs that never hopped on the bandwagon can make it happen to.

Different kinds of orgs are out there now, and more will come to look different again in some coming years.

[+] pyrale|1 year ago|reply
> the bottom line is if you aren’t moving the needle economically for the company, you’re a liability.

That's fine. The issue comes when you fail to explain how stuff like keeping recent versions of your software or taking some time to fix (at least some of) the bugs moves the needle to people that would never fly a plane that doesn't receive maintenance.

The issue, in economic terms, is that a significant share of our industry's sponsors are the kind of clients that make a market for lemons.

[+] pydry|1 year ago|reply
It's not just the corporate world, it's capitalism in general.

I could point out a million people who have made rhyming criticisms of this type before programming even existed. Until those criticisms are met with widespread solid agreement instead of outright hostility or even a resigned "well, it's better than all the alternatives" then nothing will change.

Ive lost count of the number of times Ive seen programmers complain bitterly about e.g. alienation, forever oblivious to the fact that they are rehashing Marx. This post is no exception. When push comes to shove though, 0 of these people would actually dare to call themselves a Marxist.

[+] andyjohnson0|1 year ago|reply
I've been a developer for 30+ years and unfortunately there's not a lot in the OP that I can disagree with. I wish I could.

Young people get told that building tech and software is a creative endeavour where they can apply their innate passion. Certain kinds of minds get attracted to work that is based on symbols and abstraction and repetitive activities. Years pass and the shareholders get fat.

The truth is that software development is almost entirely an economic activity, and an extractive one at that. The working environment is certainly better than mining gold or bauxite, but almost all of us are hacking code out of the code-face merely to enrich other people: the people with the corner offices, and the people above them with the yachts. Those people don't care about what we do, or our pretentiona about it being an art or a craft, or what we think is important. And in fact they mostly think we're losers for wasting our time doing it [1]. Some of these people have pretty much told me this to my face.

Other posters here are correct that the underlying error is looking for meaning in (corporate) work. But people need meaning, and we have to expend so much of our only lives working, that there can be few alternatives. I don't have any answers to that.

[1] https://ribbonfarm.wpenginepowered.com/wp-content/uploads/20...

[+] neilv|1 year ago|reply
> And in fact they mostly think we're losers for wasting our time doing it

True, this happens enough places to be a thing.

Of the people who think the software "little people" are losers, I think there's at least two versions:

* They think the work is skilled, and that the worker has valuable expertise, and is worth listening to. Even though they still think the person is a loser for being a salaried commodity rather than a "smartest guy in the room" or "leader", like them, who's a real player with the big rewards.

* They think software work is low-skilled grunt, the workers are a temporary evil, are uppity about compensation and loyalty (this is 'improving' recently) and don't know their place, and their input has no value. And of course software workers are losers in the world of business, because they don't operate and profit personally like real players do.

The latter is a worse situation to be in. :)

[+] claytongulick|1 year ago|reply
> almost all of us are hacking code out of the code-face merely to enrich other people

Colloquially known as "work". The thing we all do in order to have nice things and a society.

> to enrich other people: the people with the corner offices, and the people above them with the yachts

Good! That would mean the thing I produced had value. I hope everything I create has value. One day I hope that I've practiced enough, learned enough and gained enough experience and savings that I can employ others responsibly.

If I have good ideas and do it right, there's a chance that I could have that yacht. It's what we call economic incentive, or "motivation".

[+] alphazard|1 year ago|reply
I would describe "where the industry is heading" and has been heading as becoming infiltrated by imposters. There is tremendous value to be created by writing software, and the high salaries in tech reflect that. That wealth attracts all sorts of imposters.

We see this most straightforwardly as the cat and mouse game that is hiring qualified engineers. Top of funnel to bottom of funnel ratio has never been higher. Less obviously, there are now entire "Imposter Roles" like Product Manager, scrum master, etc. Once they're in, they bring more because there is safety in numbers.

Smart people, capable of innovating, now have to hand-hold a cast of incompetent characters through the experience of creativity, innovation, research, discovery, engineering, etc. Often because these incompetent characters have the final say on what the smart folks are allowed to spend their time on. Maybe you've been in a meeting where the engineers spend the first 10 minutes talking and know how to fix the customer's problem, then the product managers come in round-robin to get hand-held to the same conclusion? That's what this looks like.

[+] notacoward|1 year ago|reply
The imposter invasion has an even more insidious effect: the creation of software that sounds great (because making it sound great was its authors' forte) but actually sucks to work with (because making good software was not their forte). It has performance issues, security holes, no observability, doesn't scale well, has insane configuration or dependency issues, etc. FAANG companies in particular are full of this crap, written for the "brag post" so the author could get their promotion, then effectively abandoned as they went elsewhere before all the cheesy shortcuts became apparent. Slick talking has replaced sound design as the most valuable skill a software engineer can have, and it shows everywhere.
[+] ponector|1 year ago|reply
After 10+ years of work in enterprise software development I don't care about the results or where the circus is heading.

Only thing I care now is a paycheck with ridiculously high salary.

[+] lpapez|1 year ago|reply
> Only thing I care now is a paycheck with ridiculously high salary.

... and also about minimizing the amount of stress experienced. Mostly through simply doing the bare possible minimum, but sometimes also doing a bit more to prevent stress down the line.

Caring-just-enough-to-not-care-a-lot-later-driven development I call it.

[+] coldcode|1 year ago|reply
I spent 40 years as a programmer, but I always looked for ways to use creativity and imagination and never be a rote coder. Despite having success in my last job leading a small team building a strategically important piece of code (if it didn't work all the time, there would be 100,000 angry people every day, not to mention a whole cast of angry executives), I finally got tired of working so hard and decided to retire. You must find a new way or place to be a programmer if your job is not motivating (like starting your own company or trying something new) or finding another line of work. Reinventing yourself isn't easy and is much harder today, but you can do it if you want it enough.
[+] time0ut|1 year ago|reply
Programming, even when in service of my corporate overlords, is invigorating. Coaxing the machines do my bidding never gets old. I could do it all day and not get tired. During those rare times where much programming is needed, I often lose track of time only to realize I've been at it for 15 hours straight. Its been this way for the nearly 20 years I've been doing it.

Sadly, programming is only a minor part of the job. The further I get, the more that is true. I might only actually program an hour or two a week. The rest is spent in ridiculous meetings, hand holding people who fail to read, trying to coax others to coax the machines to do what is needed, "planning", and similar noise. The only rewarding part is mentoring younger programmers.

I continue to do it because its a safe path to retirement and I am nearly there. My plans for retirement: program stuff I want to program for the pure joy of it.

[+] lolinder|1 year ago|reply
> 90% of the time when I read descriptions it is excruciatingly obvious to me that whatever code the chosen candidates will end up writing at this job will be completely removed from any important problem not only humanity, but even any individual human has ever had. Startup culture is shamelessly at the forefront of this industry’s ‘produce more code and ask less questions’ policy.

I would suggest that part of the problem is that many developers wish they could work on meaningful projects with good people at the pay rate that they are currently getting at $FAANG or with the amount of equity they'd be getting at $STARTUP.

In practice, employees treat meaning, independence, agency, and work-life balance as currency and are willing to take a pay cut in order to secure a meaningful job. Better jobs are out there (I found one), but if you're currently working for an adtech company or an AI startup you will almost certainly need to be willing to look at a much lower salary than you might be accustomed to.

[+] slfnflctd|1 year ago|reply
I'm one of those people who will happily take a pretty big pay cut for my sanity 9 times out of 10. I grew up in a low income household and have lived on very little at several points in my adult life, it comes naturally to me and I almost prefer it in some ways. My mental health is more likely to be threatened by over-stress or a lack of meaning than by having to stretch a shoestring budget.

The only time staying in a job I don't have many positive feelings about (or worse, only negative feelings) makes sense to me is if I have very specific plans for the extra money I'm making and very good odds of seeing the plan through.

Such a way of life isn't for everyone, but I strongly advise those who maybe lean less materialist than the norm and/or aren't afraid of more frugal living to consider it. Especially if you've been asking yourself more than once a week lately how much more of 'this great job you have' you can tolerate without a breakdown.

[+] wincy|1 year ago|reply
I'm a software engineer at a large construction company and find my work deeply meaningful. We make sure people building actual stuff stay safe with our tools, and work more efficiently. It's so cool to see mind blowing, tangible projects get built.

You're right, FAANG comp is definitely way higher, but I really enjoy where I work and it's the first place in a long time I haven't felt an urge to start looking for something else a couple years in.

[+] duggan|1 year ago|reply
Agreed, there are plenty of small companies out there. Early startups, pre or early product-market-fit, etc. Mostly can't afford to pay large salaries. Need people who are interested and self-motivated. Willing to be flexible in various ways – a lot more is negotiable with small companies.

They aren't going to get in front of your face easily – you'll need to seek them out.

[+] msephton|1 year ago|reply
Solution: go independent, work on your own ideas, and sell them to consumers. That might be your own start-up, but for me it was to become an indie game developer.

One of my games, YOYOZO, was featured in Ars Technica's "Best Video Games of 2023" so I feel my decision was the right one.

[+] colund|1 year ago|reply
Out of curiosity, how did you support yourself financially while creating the game? Did you also do freelancing or did you use savings etc?
[+] thn-gap|1 year ago|reply
How did you do this transition? How did you feel about your decision before your game was featured? I've been thinking about this path, but I feel too hesitant to jump.
[+] hawk_|1 year ago|reply
I like having sex but don't like being a prostitute. Whatever you do if you don't do on your own terms, you can be miserable.
[+] dsauerbrun|1 year ago|reply
pretty much the same analogy I always use to describe how I feel about the industry.
[+] game_the0ry|1 year ago|reply
I have similar feelings with leetcode.

I love software engineering, but leetcode makes me hate software engineering.

I just want to build cool stuff. I don't want to implement LRU cache and another leetcode medium-hard in under 40 mins from memory.

[+] mihaitodor|1 year ago|reply
Just say no to it. I decided to go public and add on my LinkedIn and now on GitHub too a disclaimer (see here https://github.com/mihaitodor) that I refuse to do Leetcode-style interviews or anything like that and I'm happier since. Sure, there are companies which will refuse to talk to me because of this, but that's fine. I never passed one of those interviews anyway and always had to take jobs where I didn't have to live code during the interview.
[+] kirso|1 year ago|reply
Whats the last time you used bubble sort in your Linktree clone side-project?
[+] margorczynski|1 year ago|reply
Yeah the problem these kind of interviews don't even test how well you think about a problem and how capable you are of designing the solution. The expectation is that you basically perfectly memorize the optimal solution (which was probably found by some Ph.D. working on algos). And in the end you're end up implementing some endpoints for a 1k MAU CRUD.
[+] f0e4c2f7|1 year ago|reply
Startup time! Has its own tradeoffs but you get to go compete with the system that is maddening. Imagine them trying to run a race against people who are actually trying? That's why startups are able to win against huge companies with seemingly unlimited resources. They use those resources to fight internally over who controls the resources.

Startups have their own perils of course. But you get to do work. Real actual work.

[+] whiplash451|1 year ago|reply
Also happens in a lot of seemingly-boring midsize companies (not just startups)
[+] msteffen|1 year ago|reply
Seeing a lot of agreement here, so I thought I’d post to say that I don’t agree with much of this. I don’t think the problem is “industry”, and I think open source is often similar.

I wrote a short series of blog posts a while ago (in need of revision, but good enough for now…) about decisionmaking in software: https://prog.blog/essays/decisions/

The upshot is that decisions in software are creative products—there isn’t usually a “right answer”, only benefits and drawbacks. And one decision’s consequences become the next decision’s parameters. The reason businesses don’t like it when you start re-litigating old decisions is that the alternatives to what was chosen are typically not strict improvements, and implementing them would require re-making a bunch of other downstream decisions.

It’s fine to feel that your new company’s codebase is ugly, but recognize that it got that way because creative professionals needed to make a decision in their codebase with their own backgrounds and limited information about who would be using their software and how. I think that maybe the only alternative is to set up shop as a solo dev.

[+] msteffen|1 year ago|reply
(By extension, I think software developers will be better understood—and we’ll better understand ourselves—once we start seeing our industry as a creative industry and ourselves as creatives. This post feels to me a little bit like a screenwriter complaining that most TV is bad and most screenwriters are forced to crank out episodes and most shows are not solving humanity’s fundamental problems)
[+] breckenedge|1 year ago|reply
My take on this is that engineering used to be more involved in the product side of the house, but that went away with the rise of PMs and designers. Remote work has made it a bit harder to collaborate, and companies are more willing to hire developers across timezones to save a buck.

Figma made it really easy to create high fidelity mockups, which took away UX decision-making from engineering. Many developers are happy to oblige, not wanting to be a part of any discussions.

So, what to do about this? That is probably a whole nother series of blog articles.

[+] ryukoposting|1 year ago|reply
Huh, I guess this is just totally misaligned with my lived experiences working for startups. It's the only environment I've ever worked in where engineers are allowed to do engineering. I don't just write code, I get to be the architect of a broader system.

If you don't want to work for a company that makes meaningless bullshit, then... don't. There are plenty of companies making things that are actually useful to society. Go work there instead.

[+] fuzzy2|1 year ago|reply
Sounds like you might be better suited for working at a company that doesn’t do products but rather projects for others. Plenty of architecting to go around. Any if you get to work on enough new projects, you actually get the chance to make projects succeed faster by iterating on initial architecture and project setup.

It’s still all meaningless bullshit of course, but it’s others’ bullshit.

[+] jstanley|1 year ago|reply
This is part of the programming industry, but it's not the whole thing. I'm reminded of the story of a bunch of blind people all describing different parts of an elephant. You move your hand around a bit and it sort of all feels the same, but that doesn't mean you've touched the whole elephant! Elephants are big.

This part in particular stood out:

> thousands of lines of unmaintainable spaghetti code engineers were bullied into writing in weeks instead of months using arbitrary trendy technologies.

This is not my experience at all.

I have 2 part-time jobs writing Perl code, and at both of those jobs the people I encounter are thoughtful and intelligent and want to do a good job (including managers).

Nobody is bullied into anything. Nobody wants thousands of lines of new code. We have enough thousands of lines of old code that nobody understands :).

Your experience of the programming industry very much depends on what part of it you work in, and specifically who you work with. But I think if you want to "quit the rat race", Perl is a good choice, because everyone who wants to rush around chasing fashion trends left Perl behind a long time ago. Also, I'm told Perl developers are getting harder to find so salaries are going up.

[+] neilv|1 year ago|reply
As a software engineer, your craft is about the breadth of software engineering, and embracing professional pride and dedication in doing that well. Well implies towards the goals of the organization.

Programming is only one piece, and not the most important.

And the nature of the programming you do changes because of the software engineering concerns. (Examples: on a given project, a goal might be that the code be maintainable long-term, or maintainable by others, or not disrupt an interface with another team, or delivered in a certain short timeframe, or work the first time and every time.)

Where it gets much more complicated is that a lot of companies are highly inefficient or dysfunctional internally, and don't really permit doing software engineering well. So, you might find yourself not only not allowed to do programming like you love, but also not able to practice or even recognize the craft of software engineering.

If you love programming, find a job that will let you do some of what you love, or save your love for your own time. If it's your own time, have especial fun with it, and don't turn it into a job without pay (unless you can also turn it into a paying job, like a startup).

[+] krautsourced|1 year ago|reply
This feels like the author simply went for the entirely wrong jobs. It sounds like what he wants is to make decisions, and those you can only make in small teams, small companies, and in lead positions. Going for any sort of FAANG or corporate job is the opposite of this - and that is not specific to programming jobs in any way. Nobody is 'free to just improve the world' in a large group.
[+] turtleyacht|1 year ago|reply
Some consolation if it can be done:

Rewrite the flagship app from the ground-up in a new framework. It's a little easier if most functionality is behind APIs. The requirements are already concrete: make it look and function the same.

Express the common business flows with a novel algebra (types). Make logic errors be type errors [1].

These pull requests may never get merged; the feature branch may age for years; at least you gave it an honest go.

[1] When people say, "but most business logic bugs aren't type errors," I just want to show them how to make bugs into type errors. -- Matt Parson, from Thinking in Types (2018) by Sandy Maguire.

[+] karmakaze|1 year ago|reply
I have experienced these sentiments at various jobs and times. I've also varied my types of jobs to be exploring new areas and higher challenges. Other times, I've found interesting/challenging ways to get work done which may (or may not) pay off in the future--things like code analyzers/generators, etc. On the other extreme, I was terminated early from a contract position for "doing math at work after hours"--I was bored and doing Project Euler with a random new language. I totally understood my work was done and was highly paid, so any excuse to cut costs made sense.

There's many kinds of 'programming' and the OP only seems to have done standard applications. Maybe get a job at Jane Street and they might be challenged. I myself don't think I'd qualify but I don't complain about the banality of mundane tasks--I find interesting and challenging ways to make software tools that help devs and/or help customers.

Somehow I've almost always managed to find a balance of keeping employers happy while carving out time to do experimental work. It's probably a combination of communication, alignment, and trust. Start small, show value in the kinds of things you're talking about, and demonstration is key--talk/complaining won't move the needle. And don't delay key deliverables to do something excessively unusual.

[+] pseudogrammaton|1 year ago|reply
Side topic, corporate vs. non-profit sector: Downside: 75% lower rate than standard industry rate (5% lower rate of pay than "80%-Compa"). Upside: 38-hr work-week instead of the corporate-standard 50-hr week - effective hourly rate is 5% higher. Plus: Set my own pace, nobody's getting rich at someone else's expense. Rarely, if ever, are there mass layoffs.
[+] bruh2|1 year ago|reply
How did you find a _technical_ job at a non-profit? What type of role do you perform?