25 years in my case, by the way, and I have found this to be the most liberating and creativity-boosting period of my career. And it’s not even close. I’ve written code in more languages in the past few years than in any other period. I’m finishing more projects than ever before. I’m learning faster than ever before. I’m enjoying programming more than ever before.
And to be clear, I don’t use AI for anything other than as a pair programming partner, or to build single-use scripts. I agree that full-blindfold vibe coding is unpleasant, it’s like getting into a debate with a forgetful and emotionless monkey paw. Skip the vibe coding, just let AI be a helper.
This I think will explain the differences in experience in industry. As pressures increase, control and power moves away from developers who have historically had a pretty strong position to dictate how they work.
Not everyone is going to be able to use AI as just a tool. The reality I have seen is that AI has sped the time-to-pr up for those who don't care what they ship, so that gets baked into estimates and expectations.
Eventually those working carefully with AI will be like the carpenter still using hand tools while the shop is operating CNC machines. The business can't afford the craftsmanship, no matter how right the craftsman is to point out that their work is better.
This is why I love AI as an enabler for myself personally, but still think it's going to ruin the experience of being in the industry.
> Eventually those working carefully with AI will be like the carpenter still using hand tools while the shop is operating CNC machines. The business can't afford the craftsmanship, no matter how right the craftsman is to point out that their work is better.
The analogy doesn't work. CNC machines can be faster and better than a guy with hand tools. AI isn't like that.
What you need is some other race-to-the-bottom situation, because that's what AI is.
“Wholly” was too strong a word now that I think about it.
But I’ll give two main things I find unpleasant.
One: Normally I like working with other people. There is nothing more satisfying than collaborating on a complex problem with smart and conscientious colleagues. However, the bad experiences are now amplified:
- a random colleague gets sent down a wild gooose chase of an LLM claiming there is an issue with something I wrote. It’s a full blown hallucination because it found a confluence page which mentioned me and just decided to connect things together.
- another colleague is suddenly empowered with being able to vibe code websites and is now copying and pasting my replies into an LLM and pasting the LLM back at me over Slack.
- a colleague gives a quick drive by vibe coded PR to add a feature into something I own. It reimplements the same business logic that is already done elsewhere. It takes me more energy to explain all this than just do it myself.
There are dozens more examples. In isolation I can shrug each of these off, but it’s draining. Large organisations have become more “agile” with local optimisations and missing the bigger picture.
Two: while I agree that everything is getting done faster and I do get satisfaction out of that, I’m a deep in the weeds technical person. I don’t have it in me to be a big picture person or a people leader. I love having to think about algorithms, data structures, schemas, etc. While I can use AI has a pair programmer, it’s doing a lot of the thinking for me and it’s usually faster. So yes it makes me a better engineer, no I don’t enjoy not thinking as much. I don’t enjoy shifting solely to a higher level of abstraction. Maybe that makes me a bad engineer, but I cannot change how I feel about it.
I strictly avoid allowing AI to change the level of abstraction I program in. Defining and orchestrating the architecture of an application is the most fun part anyway — quite apart from being the most important when others are touching your code, whether meat bags or LLMs.
I would also take your comment with a grain of salt. If the people you are talking about are javascript developers or people who do leetcode in interviews but never write that kind of code on the job, they are probably delusional. Ive seen many people call it a “craft” and what they produce is nothing of the sort.
If you really are good, you’ll still be in demand where it matters.
Vs ordering delivery.
Cooking for you and your friends is satisfying as a craft and labor of love, as well as being experience. There is enjoyment to be gained from the process.
Compared to delivery, You may get the food quicker/easier. But for most people who cook it was never about that. There are certain people that enjoy generating as much food as possible. Some might call that gluttony or greed, over-indulgence, or in it for the wrong reasons. Perhaps these two groups of people have fundamentally different motivations. Try telling a chef that he should stop cooking and just order the food as delivery.
Now it's software people's turn to feel the pain of being a starving artist and watch as your attractive friends with no skills and a social media presence "make it" with their genius.
We haven't even begun to feel the weight of it yet.
Slop has always been cheap. Now it's even cheaper. But software that actually fucking works AND does what you want is still expensive as hell.
Skilled craftsmen said the same thing, and yet everyone seems to prefer $1 Temu slop that breaks in a year.
They've changed our job titles from 'Engineer' to 'Developer'.
Power (in the form of talking to business owners, organizing work, setting engineering direction) has been centralized. We had 6 engineering managers now we have one 'Director'.
I don't think I've solved a real problem in 8 months.
Give AI a few years and see how you feel after people have made the AI and the tools to use AI even better.
I've got senior engineers (20+ yoe) who have never been having more fun and then some who feel like OP here.
Why is it so decisive? There's no other tool (not even emacs) that's caused this sort of division.
now couple that with the wide range of variety (and dysfunction) that come from the business and organization. being a dev for a company which sells software is a whole different beast than being an in-house dev for a company which sells other products. startup, big org, old org, new org, strike team, the list goes on.
finally, engineers enjoy different aspects of building software more than others. the puzzle, the crafting, the api, the data structure, the architecture, solving end user needs, so many facets to what makes it enjoyable as a career.
this is a big reason why ai discourse online is so uneven and often unhelpful. were all assuming too much about what being a software engineer is; forgetting that my day-to-day can be wildly different than yours.
a lot of ai speedup comes from effective delegation of work. i do it, but i don't like it. it actively makes me feel tired in a way i don't feel when i do the work myself, or when i mentor and grow my team to do the work.
many other devs don't feel the way i do. some suddenly have these ai tools that make them feel more empowered and energized and excited.
llm's are genuinely a new computing paradigm because of their nature: plain human language as the interface. this is different enough that mapping our past computing concepts (like the evolution from assembly to C) may not hold as well as seem they should.
this all digs deep into who we are as individuals with specific desires, career history, goals, a specific role at a specific company. the part that's fucking beautiful and unique and human.
But if the aggressive industry-wide layoffs aren't enough of a clue, these giant ass companies (and the ai gatekeepers driving this shift) are not compatible with individual humans.
i dont mind llms as a tool, but im done with the perverse level of greed and inhumanity they seem to inspire in corporate leaders.
My own enthusiasm varies wildly day to day. I've been sick of squinting at punctuation marks and opening sequences of of tabs to trace through annoying abstraction layers for a long time; so I'm really excited to see those activities effectively automated away. But the same tools enable some really bad behavior (in myself and others), which really gets me down.
Unlimited lives and the ability to walk through walls is great fun for a bit. But also, you never actually played the game and it kinda ruined it for you, for all time.
You’ve seen the outcome, you solved nothing, learned nothing, and there’s zero reason for you to ever be proud of it.
The outcome isn’t yours, it’s the chatbots. Maybe you lie to yourself a bit… but you were barely necessary.
> Why do some software engineers love AI and some hate it?
n=1 but i'd say 3 aspects for me:1. its forced on me at $job; its just a tool so let me use it when i need it and stop making my work-life miserable with childish tokenmaxing leaderboards
2. co-workers who send low-effort low-quality pr's that introduce tons of complexity and waste everyone's time and that they cant answer basic questions about because they no longer know how it works
3. the absolute cult-like manic behavior with some people around "ai"... yes its fun and interesting and cool tech so please stop treating it like a religion ffs
just my 3c
1. Too many people think that having lots of text makes something impressive, really it's just inconsiderate and nobody is reading it all.
2. Helping people often feels pointless because I can tell I'm just getting a cut/paste AI response back.
If neither gambit pay out then I'll just go find some other career and keep software as my hobby. I'm not going to let this billion dollar industry ruin the thing I enjoy.
We're at that awkward time where there is still an expectation to fill out JIRA tickets, but it is possible to ship multiple features at once in less time than the planning meeting takes.
As the models improve, the slop will reduce. As the humans improve, the processes and procedures will change to match the new paradigm, whatever it becomes.
This was written sarcastically, but I'm optimistic. The more crap that's out there, the more refereshing and noticeable it is when something is good.
Start one?
There's definitely a market for software that doesn't give off the corporate, mass-produced, one-size-fits-all energy. 37signals famously made quite a business out of it.
But, the sentiment about drowning in slop, well. Yeah kind of. I am not sure the polite way to tell people they should be thinking for themselves rather than just repeating what an LLM told them.
I absolutely use LLMs to assist in reviewing my own code as well as others, but I am always using my own judgment and speaking in my own voice. I will never copy-paste an LLM comment as if I wrote it, and I don't think even with a proper disclaimer that I'll ever copy-paste an LLM comment that I don't understand enough to confirm and rephrase on my own - instead, I use the LLM insights as a starting point. If I don't understand them, I dig deeper. If I disagree with the comment, I disregard it. And finally, if I understand it fully and agree with it, then I bring it up in code review, in my own voice.
I'm a little more lax when it comes to LLM generated code. A lot of test suites are already kind of a bit pointless thanks to the flawed prioritization of code coverage as a metric (it isn't a bad one generally, but there are cases where it is tragically bad, like when the code you are testing is effectively a DSL and the assertions are restatements of the DSL's contents...) and even when it's not, LLMs are often useful for generating decent test suites. Still a good idea to read them, but I give LLM-generated tests less attention and manually exercising code more attention: it seems like a good tradeoff to get a productivity improvement from LLMs.
To me the biggest sin is using LLMs or generative AI and pretending it is your own human expression. Please use your own words. If that's too much effort, I'm afraid I don't really want you working where I work or posting where I post, just for the sake of everyone's sanity. All of your LLM-assisted blog posts read like absolute shit and I'm tired of all of the excuses for it.
Software hasn't been about "real code" (asm) for a long time; yes, this was a common opinion when HLL's and compilers were starting.
You meant actual bytecode?
Assembly doesn’t exactly map to in 1:1. x86’s mov eax, ebx is the classic example that has two ways of being encoded. Not to mention sections, labels and all the other fancies.
I could be wrong, but AFAIK, switchboards^W patch panels were the OG programming method.
Eventually "coding" will simply be prompting skill with the wisdom of architectural decisions.
That's also one way to describe what it's like to code with React et al these days, anyway. Component/hook selection skill with the wisdom of architectural decisions.
If you zoom out and look at other industries, we've seen this before many many times: Fast food completely commoditized the food industry. There are still extremely skilled people making the "highest quality" food. For example those at michelin star restaurants, these businesses typically don't make money by selling food anymore, they stay around for other reasons (hotel needs a fancy restaurant with a famous chef). We've seen the same when it comes to many other products: toys, furniture, most electronics, etc.
Nobody can swim against the forces of capitalism here, just not enough people care about high quality hand crafted software (the only people that really do are people right here in this thread hand crafting software). Sure there will be some corners of the economy where people doing everything by hand will keep their head above the water.
Think of it this way: back when people were sending letters to each others and responses took weeks, people (non professional writers) put a lot of thought into writing these letters. I'm sure if you show these people the average (non AI) emails we've been sending each other the last few decades they will complain about all the slop too (including how we all converse to each other right here). But you can definitely argue that this exponentially increased communication and sharing of ideas has outweighed our decreased ability to write properly (in self defense: I'm not a native english speaker).
This obviously sucks for those who care about high quality hand crafted software, but this is going to open the floodgates in terms of the accessibility of software development. And it's yet to be seen whether this is going to take all our jobs away or not. What's very much true (like the article says) is that the future job of software dev is going to look different, and the change is coming fast.
SQLite is the most popular database in the world. It's maintained by 3 people. There's hope. AI is a great tool that's here to help you if you want, but at the end of the day, the output matters and it's quality not quantity. Don't work for people who don't agree.
GitHub's exponential growth in number of commits and PRs answers your question.
Before AI, if you wanted to contribute to OSS, you had to have _some_ idea of what the code did. At least enough of an idea to compile it so that you could test your changes.
That was the bar. Sure, lots of low quality PRs existed, but that gate kept the influx somewhat manageable.
Also, the diffs were a lot smaller, as bigger diffs meant bigger effort, a risky gamble for a PR that might not get merged. You've lived that life, so you get it.
Post AI (post Opus, really), any hooligan with $200/mo to burn can "land" a Heisenberg sized PR into any project with green tests without having the slightest bloomin' clue what their diff does or how the codebase they're integrating into works. That's impossible for humans to keep up with.
For every SQLite cathedral, there are a hundred corporate projects whose employers are mandating 100% AI generation with manual PR/MR merges.
Before it needed you to jailbreak a console. Today point frontier at a console, and it could also figure it out. The console folks also can do that before release and ensure it's unbreakable.
Now that software is solved, we are faced with the philsophical necessity of our vocation.
> While I may use AI for work, my website, and all the content on it, is entirely written by hand.
I mean, if you're tired of the slop and what AI is doing to the industry, why do you need to use it for a simple personal website?
Our brains’ initial parse of that sentence, while sensible and probable, is incorrect. That is, the mind really wants to interpret “...for work, my website, and all...” as a list, but that leaves a dangling clause!
The sentence is grammatical but confusing.
"While I may use AI for work, my website and all the content on it is entirely written by hand."
I don't think the original syntax is incorrect exactly, but too many commas in a sentence can make it harder to parse, which is why style guides often warn about it and advise thinking of certain commas as "optional."