Working on Products People Hate
seangoedecke.com
seangoedecke.com
I prefer to take pride in my work. This sounds like hiding ones neck to collect a paycheck.
I prefer to have hard discussions about pivoting or making changes so that we can improve the product, or company, for our users. Anything less is simply "not doing the job", or at least making a serious consession, in my opinion.
Right.
The user and the client are two different groups of people. If you want to make things better for the client, then sure, that's rational.
If you want to make things better for the user at the expense of the client, then that's irrational.
If you want a job that lets you serve the users, then get one where the users are also the client.
In most dev jobs, the software users are not the same group of people as the client.
I'm coping through HN Hiring threads to find additional gigs that align with the need to contribute for others with less constraints.
Interestingly, he lasted there only a year while I made it to nearly 17 years. Go figure.
Saying that "engineers work for the company" is a very reductionist take, taking away personal conscience, judgement and moral compass, leaving only "get in, do work, collect reward, go home" cycle. This what robots do. This is what algorithms do. Humans shall and are much more than that.
When I was the tech lead of a Linux distribution, I fought my teeth to make that thing work for the target audience who will be using it, and developers who wanna work and develop on this thing. It was not volunteer work either. It was my paying, day job.
A professional has an obligation to a code of professional ethics that supercedes loyalty to their employer. Nothing of the sort exists in software.
A professional can still be a mere subordinate who just follows orders.
I don't know why it's so poulpular to conflate the word engineer and developer to the point where simonw decided to drop the most important word "software" and started calling AI assisted software development "agentic engineering" which is the most absurd oxymoron you can come up with.
The person prompting for code is delegating the majority of decision making to the AI. This is the antithesis of engineering. Hence the operator cannot be the "engineer", at best the AI can be the "engineer", if it is smart enough.
The word engineering implies a task with trade offs, guarantees and expectations about the finished product. The vast majority of software isn't important enough to even know what the specifications are or what features it should have ahead of time. You throw something at the wall and see what sticks. "Agentic engineering" just accelerates the process of throwing things onto the market.
Then there is the fact that "engineering" has become a euphemism for software and nothing else. Anything physical is excluded from the start.
Finally "agentic engineering" implies that you're engineering the agent, but you're not doing that either. You're just a user who set up a sandbox and is letting the AI loose.
The title 'software developer' is correct. We are not engineers and we are not professionals. Pretending otherwise is a grasp for unearned status.
Any paperwork certifying this is just a label and external anchor. In essence, it starts from within.
A software engineer is not so lucky.
------------------
What is a profession?
Some skilled jobs are called professions, and this special label indicates that they are more than merely jobs. The professions involve a special set of services to society, and people who join these professions are expected to uphold high ethical standards in their professional conduct.
Although many professionals have their own private businesses, and many others are employed by businesses, these occupations are misunderstood if we equate them with businesses. In fact, the growing tendency to treat professional work as nothing more than a paid jobs is the source of many ethical challenges.
- The primary goal of a business is to make a profit for the owners, and it does this by providing some product or service to customers.
- The basic purpose of a profession is to provide a service to the community. Here, the primary goal is societal well-being, not profit.
This distinction reflects a higher level of responsibility, expertise, and commitment to maintaining standards that sets professions apart from other occupations.
To your point, some of this stuff is loosely defined its no small wonder management is able to play word games.
I’ve spent my career finding and working on things people love. I’d join a less stable company to know I’m actually putting products out that are worth spending time on.
This article comes across as coping to me, “it’s okay to ship junk, just comfort your tears by rolling in your pile of money.”
I do worry that applying this heuristic at microsoft is unwise, because microsoft is so famously good at getting people to use software against their will- if usage decouples from being the best, then the hate becomes shoved-down-throat-factor * not being that good, which is a very different place to stand and declare onesself to be helping.
I don't know about the others, but I "hate" Electron more because I don't think the the devs of the software I use should have chosen it. It doesn't have anything to do with the Electron team (I think).
For instance: MS Teams. Microsoft has the skill and resources to develop cross-platform desktop software. They should have done that for something as widely used as Teams.
As a staff swe in big tech your blog posts resonate strongly and reflect my own experience. But I can see if I didn’t have that experience I’d be unable to relate or even understand.
Maybe it is nihilism - but I think that’s also a natural result of working for big corps.
While it's true that in large companies you typically have much less agency than you think and sometimes have to work on things that don’t resonate with you, large companies also have many different teams you can switch to.
So saying this should be the norm is what people have a problem with. Plus, moving to a different workplace is always an option.
If you decide to collect the paycheck and do the work, that’s okay too. But touting it as the norm and saying everyone should do it is gaslighting.
I think his experience is quite common in big tech, and even swapping teams doesn’t seem to help in my own experience. It’s the rare teams that have any agency, or even clear ownership over the code. It seems by design but as a craftsman it is very frustrating.
I haven’t read anyone put it in words quite as well as Sean’s posts. This really is the nihilistic side of big tech that is rarely written about.
So I think it’s a unique insight - hence why I’m kind of baffled at the reaction. I think if you can relate to what he’s saying (it hits really close to home for me), it’s easy to sympathise with.
This is, very often, not a practical option for many people.
Have you seen the market lately?
Big tech was a bit of an experiment for me in my 40s, I always worked at small/med size companies before. I think it was worth it (for the learnings and comp). I get a lot more choices in the future when I'm financially secure.
As software engineers, we are nowadays actually expected to handle customer service escalations (ie: when customer service cannot resolve a given situation, and the client is persistent enough, or borderline threatens legal action).
Strangely, I found dealing with those these customer escalations some of the most rewarding work. It feels very real as I read the long winded customer support ticket, feeling the user frustration, and finding the root cause and resolving the issue, or at least being able to understand and explain. Afterwards, internally trying and pushing for changes that would prevent the frustrations and escalations is also very rewarding.
I found this more rewarding than some other initiatives we have internally as they sometimes feel less connected to actual problems that are happening and that nearly everyone ignores.
Too bad most everyone is lost in the artificially engineered "culture war" to notice they have a common enemy, one who benefits from the proles fighting each other rather than uniting against them.
It can be a bigger picture survival: successfully fighting Nazi Germany still got a lot of key people on successful missions killed.
But if you freely redefine "success" to be independent of the most basic parameters of longevity and ability, is it even meaningful? Without money, most ventures immediately fail. With more money, they have more options to react.
We may not like it, but money is a very handy, correlated metric with most useful definitions of "success".
Honestly I don't see a big difference between that sentiment and "I was just following orders".
That kind of mindset eventually leads to situations like yesterday's headline about the Artemis astronauts finding out that their computer inexplicably runs two instances of Outlook which both do not work [0].
Situations like Windows updates causing data loss by updating and rebooting without the user's consent.
Or situations like one year ago when I had to help an elderly person after MS suddenly replaced the easy to use Mail app with an enshittified one that wasn't just much more complicated, but also had an untranslated English interface because MS couldn't be bothered to translate it before forcing it onto users worldwide.
The problem is.. that software today seems that the trade-offs made are akin to "will use accept invasive pattern A or invasive pattern B". That is not a technical real trade-off. It is not structure c vs structure d. Rather, it is an intentional making world a worse place to live in.
And I still don't hate it.. I hate the people who make it.
It is extremely possible to work on a product people don’t hate, and still maintain a realistic perspective on your engineering abilities or impact or whatever.
If you’re toiling on a product that’s actively making the world worse, quit now. There are better gigs out there.
Sure, in the end we work for these faceless, meat-grinding machines. But more or less, we all have some semblance of autonomy, and I absolutely can choose not to work on a product that people hate. I can switch teams before switching companies.
To some extent, I also just do what leadership asks, keep my mouth shut, and collect paychecks. But whenever that happens, I don’t gaslight myself by writing a post on why it's supposed to be this way.
To me, this seems like someone who is married to their paycheck and would do whatever necessary to protect that.
What's under the hood, the people who use the product, don't care.
Customers, and ultimately companies as well, only care that the product works, is maintainable over the long term, and is bug-free.
Cathedrals in the desert are useless, and over-engineering only complicates things when there's no need yet.
I've also seen several successful projects that were actually quite weak behind the scenes, but they were simple and functional.
Now, whoever worked on Oracle DB or Oracle Forms, or Oracle ADF, now those are some products I hate for a variety of reasons!
False. Ignored product are not used by anyone thus they don't demand any love or hate at all.
The worst products are those into which users are forced against their will. Things like KYC providers are the stuff that everybody has to use and everybody hates.
> working on an ignored product is much worse
False. Working on an ignored product can be extremely cozy because nothing happens except the paycheck.
It was a popular brand and I suspect it probably sold well. The mind-boggling dysfunction may not have been obvious at a glance when the consumer made the purchasing decision. The UX was so bad, I still have nightmares about it.
As I was trying to use the damn thing as a user and kept running into one hurdle after another, it triggered a flashback of my experience of debugging complex software as a software engineer and I thought to myself "F***, I chose the wrong career. I'm cooked. The user doesn't care. The user doesn't care AT ALL." In that moment, I understood that getting replaced by AI was the least of my problems. Far bigger problems had been there since the beginning. I just didn't notice them.
I just thought about the software engineer who had to implement this retarded UX... I imagine they would put on their resume "Wrote the firmware for <popular electronics company>" and it would sound really good. The worst part is that it's probably not even their fault that their work sucks.
Anyway it just made me realize how unmeritocratic this industry is. We could do a great job or a horrible job and most of the time it has nothing to do with career progression and opportunities.
No. Forcing people to use a product they hate is privilege. It’s about power. Monopolists like Microsoft and Google can do it, companies that face market competition can’t.
Assuming of course that you aren’t working at Slop Burgers, but even then… almost everyone is happy to get an ice cream cone, or a hamburger with fries, or just food in general.
It’s a shame that white collar professions typically have such a distance between make thing and give it to customer, who’s excited to receive it.
On the other hand some other people will claim it’s the hallmark of enshittification, overchurned with features and a sinking mess.
I agree with both. It’s a strange situation and very difficult to move the needle towards more love at this point