I became a software engineer because writing code is fun. Thinking through hard problems, designing elegant solutions, seeing the things you’ve built working for the first time… these moments are all deeply satisfying, so why in the world would I ever surrender them to AI?

https://davidcel.is/articles/writing-code-is-fun

Writing Code Is Fun

I became a software engineer because writing code is fun. Thinking through hard problems, designing elegant solutions, seeing the things you’ve built working for the first time… these moments are all deeply satisfying, so why in the world would I ever surrender them to AI?

@davidcelis this matches my experience.

The thing that particularly made me realise the speed up was illusory was realising I didn’t actually understand the code it had generated. At least, not to the same level I would have done if I’d written it myself: I could see what it did but I don’t think I could have written the same code myself in future.

(Maybe that’s fine if you anticipate using the LLM in future too? 🤷)

@benjamineskola
Reading “The thing that particularly made me realise the speed up was illusory was realising I didn’t actually understand the code it had generated.”
This experience of “not understanding the code generated” is the experience of the majority of people-everyone else, in a business depending on that code you wrote.

“So how hard can it be to outsource generating code words”? It’s been done in marketing copy, HR, etc. Why not resource expensive & limited code “copy”?

@davidcelis

@dahukanna @davidcelis I think there's a difference between not understanding other people's work and not understanding one's own work.

@benjamineskola @davidcelis

I agree but the experience is similar - an outsider’s incomprehensible cognitive experience.

@dahukanna @benjamineskola @davidcelis

This is really fascinating. Every single person in a company that ships AI-emitted code, policy, product, and so on will be an outsider. The managerial experience of having first hand knowledge of exactly none of the work going on and still being accountable but for every employee.

@dahukanna @benjamineskola @davidcelis there is a difference. Code you have not written is supposed to have been written by *someone else who did*. So there is a logic to it, and you can trust that.

When a devslops vomits "code" no one knows when this stuff comes from and it has no logical structure.

@benjamineskola @dahukanna @davidcelis yes there is. You cant code if you dont understand.
@f4grx that’s what I said.
@benjamineskola yes. That comment was not very much informative.
@davidcelis @benjamineskola I was thinking this today, thank you for posting
@davidcelis thank you. the attitude of like "thank god we don't have to write code any more" is so baffling. why are you doing this in the first place then??
@eevee thank you for reading and appreciating it, that really made my day!
@eevee @davidcelis some people have low desire for code or abstraction. i see them daily. and they love llms .. to them it's just less efforts .. :/
@eevee @davidcelis Writing code was my hobby before it was my profession. The enjoyment I get from it is the writing code part.

@davidcelis I hold the same belief that writing code is fun (including unit tests :-). But I've been repeatedly surprised by colleagues who didn't, at a rather deep level, that I came to accept it's not fun *for everyone*.

(And those folks tend to move to managerial positions, "coding" being deemed junior-level work. They'll be in a position to influence the use of AI.)

@davidcelis dead-on; AI assistants steal the fun portion of the job and leave you holding the bag for all the hard and tedious parts.
@davidcelis I started coding because it was fun, too. I then started using ai, it made stuff boring, then returned to doing stuff myself
@davidcelis boiler plate is usually a symptom of badly designed languages/frameworks/libraries.
Creating tools to write boilerplate faster is a stupid goal.
We should work on reducing the need for boilerplate by improving languages/frameworks/libraries...
@thinkb4coding @davidcelis In my years in this space I heard this so many times, and people usually nod, yet I can’t see any meaningful change. The people who like the coding part still rather build shiny new toys, mostly for themselves. And I mean, sure, you do you, but this isn’t driving adoption for people that try to solve their everyday problems.
@cryptix @davidcelis I understand, but this is still optimizing for solving the wrong problem.
@thinkb4coding @davidcelis I could have made this clearer but I agree that Silicon Valley fueled AI brings out the worst. Yet I also think the problem you outlined was a a thing before llms and vibe coding and we didn’t tackle it then because it’s more of an organizational then technical one. Now people actually have a toy to circumvent the problem, probably making it even worse. See linked in “vibe coding fixers”

@davidcelis @otfrom I look at this from a different angle. AI helps me solve bigger or different problems that I couldn't have solved on my own, or solve them more efficiently - it's not doing the fun parts, it's doing the boring drudgery parts.

That said I respect everyone's choices and preferences in this space!

@davidcelis The same is true for translating, which is a craft that has already been taken over by AI. The real joy comes from decoding the meaning in the source language and then finding an equivalent that uses an appropriate register, style and tone to encode it in the target language. Unfortunately, the only jobs left nowadays are proofreading of AI output, and your are not allowed to change translations if you feel you could do it better. Only remove hallucinations and correct mistakes.
@davidcelis will we really be able to do this in 2 years ? business pressure, market competition .. this may naturally diffuse (psi) llm just about everywhere. and so much management only care about getting more customers, regardless how the product is made...
@davidcelis Nice piece. My experience is different - for me using Claude Code has made coding fun again. I got to the stage in my career where I was overwhelmed by the accidental complexity of programming. Claude's raised the proportion of my time engaged in what I regard as the essential complexity of problems I'm trying to solve.

@davidcelis
My colleagues say that AI helps with boring boilerplate… but I’d rather they used their meaty brains to remove the need for boilerplate, not instruct their clunkers to automate it.

Great blogpost. 100% agree.

@matthew Yah, if AI is actually helpful with "boring boilerplate", then a non-AI tool can do the same, more safely and with way less resources.

If not, it isn't really boileplate.

The more complex frameworks become, the more useful AI can seem, when the true value would be to pick less complex frameworks.

One of my worries is that AI can make people put up with crap complexity we do not need, simply because they feel more powerful having a tool that makes them feel like they master this complexity, rather than trying going for something simpler and better.

@davidcelis

@lettosprey @matthew @davidcelis 100% - it's a much bigger version of the problem "why bother understanding how to do this effectively when I can just add 5 more useEffects and some extra state variables" and instead of figuring out what you need where, you end up getting the same data 3 different times and making the client side experience awful and buggy. Now you don't even have to figure out how to do it wrong, you don't have to figure out anything

@davidcelis Not only is thinking through hard problems, and getting more and more the understanding on how to write elegant solutions fun, it is also the essential part of learning how to write quality code.

This is how "senior software developers" become "senior software developers", and I dread to think how the future will if developers do not go through this learning process...

@davidcelis I'm a believer in handwritten code and the models we build of them, and think LLM generated text is an erosion of both skills and mental models of a project... but sometimes I feel my limiting factor is frustration and burnout rather than technical skill... and even though AI coding will produce worse results with more energy, I still wonder if it could help me be less overwhelmed debugging a massive unfamiliar codebase (I run into bugs often and try to solve them myself, because I've seen that the majority of my bug reports never get fixed).

(I suppose if the LLM results are useless enough I spend as much emotional capacity trying to make sense of the results, it's a pure negative because it still causes environmental harm and feeds predatory companies. Another argument is that you "should" instead set the code aside and find some way to self-care, though it seems a bit dogmatic about the "right" way to do things vs. what helps. And it's frustrating to put down code when there's nothing else that feels worth doing...)
@nyanpasu64 as someone who struggles fairly consistently with burnout in this industry, i definitely see where you’re coming from… but my own take is that reliance on LLMs is a really bad solution. it is, at best, a bandaid that’s environmentally unsafe and overall unethical. we would do better by combatting the actual source of burnout by having better working arrangements and worker protections
@davidcelis worker protections? i broke myself debugging GPU VRAM sleep-wake on my home desktop and drive mounting on my Wii U... maybe this is just a "i need help" thing

I trust that you have a more solid idea about how to manage workplace safety than I do.. What are your ideas on workplace or open-source sustainability?

@nyanpasu64 oh i heard burnout and immediately assumed you meant because of your job lol

and i don’t really have a lot of solid ideas beyond unions are good regardless of the industry

@davidcelis I don't work in tech (though I thoroughly enjoy learning how to code and coding, badly, my own website) but I feel this can apply to any field, and specifically art. Why in hell would you "subcontract" the creative part of your work to an AI? If you consider yourself an artist, then the creative part is what you live for. And if not, then you're not an artist, period.
@davidcelis And I really liked "Just to chase the increasingly demanding productivity requirements of the ruling class? Just to produce a bit more in a shorter amount of time?". That's always what I ask people using AI: what are you actually using the little bit of time saved for?
I'm aware that in some cases (more rare than we want to think), AI is a real help. But most of the time, it's just an illusion, and as you said, it takes the fun out of life.

@davidcelis

These articles miss the point I think. You see it as something lost. These poor people missing out on the fun of a complex and intellectually satisfying profession.

But... most of these millions people who have now experienced "vibe-coding" aren't *trying* to be software professionals and don't miss the satisfaction. They are just suddenly able to do things they couldn't. They're proud of running their first scripts! That's really fun.

#coding #AI

@TheServitor you missed the point I think. enjoyment is obviously personal. people enjoy different things and this is not something i should have to litigate in the comments, but my article even pretty clearly calls out “for people who enjoy being a software engineer”

@TheServitor @davidcelis

At the root of it, vibe-coding is fun like watching hurled spaghetti form shapes is.

@ojrask

And yet a search for "art inspired by spaghetti" would return hundreds of images (much of it pre-AI), and Jackson Pollock inspired a whole aesthetic.

@TheServitor

"Art inspired by spaghetti" and "watching actual hurled spaghetti form random shapes" are two different contexts.

@TheServitor

Jackson Pollock is a pretty interesting example to choose here. Did you know most people disliked their art and style (among other modern artists of the time), but it was artificially promoted by cold war CIA to make the US seem more culturally versatile when compared to USSR and their allies?

Sounds like a similar situation with certain kind of slop that has been doing the rounds lately.

@davidcelis I fully agree with you. I mostly used AI tools to ask questions and to search the web because the current state of search engines is lacking :(
@davidcelis I fully agree with you. I mostly used AI tools to ask questions and to search the web because the current state of search engines is lacking or it get slow to find something meaningful

@davidcelis i dont agree at all:

i had a lot of fun doing advent of code.

but i dont feel any fun in:
doing modern UIs whether they are mobile, flutter, typescript, react, vite whatever;

maintaining tens if not hunderds of templated yaml files to instruct k8s how to deploy my app

instructing CICD how to behave with dumb shell scripts in yaml files.

mapping cli args to fn handlers
mapping fn handlers to parametized sql requests.

writing mock scenarios for my tests with mocked data..

and so on..

@davidcelis dont mean to be rude, but most of our day to day work is not fun anymore 90% of the time.
and i've been in the game since 2000.
@yanndegat what do you want me to say, dude? enjoyment is obviously personal. maybe, just maybe, my article was about me and people like me and not about you?

@davidcelis well. it's simply that there's been a lot of AI Coding Assistants bashing recently. and frankly, IMHO there are issues with power consumption, giving more empowerment to already too much powerful GAFAMs, serious jobs cutting side effects.

but on a day to day basis, these tools can be superpowerful to get most of the boring jobs done.

there are many aspects behind the coding game, from designing / POCing, to maintaining processes up in production. nowadays, most of this job has become kind of boring. and i personnally find that AI coding assistants can free a lot of time si i can be able to do the cool stuff again.

@yanndegat i don’t agree at all

@yanndegat i don’t want to seem like im only being petty/dismissive so let me try to elaborate. i wrote an article about how i don’t like using AI, so “i don’t agree at all” is just a really weird response and a weird way to start a conversation. if i said something like “i don’t really like playing chess” would you jump in with an “i don’t really agree at all”?

but since you brought up energy, yeah, i morally oppose AI too. i think using it is deeply unethical and an abandonment of the craft!

@yanndegat but like, im not gonna sit here and outright tell people not to use these tools. i only wrote this to say “this shit isn’t fun for me.” but yes, i also just think that the tools are bad. they are far too costly for what they produce. they hallucinate and introduce nearly twice as many issues as humans. i worry that people are abandoning learning for an easy way out. but many other people are writing about AI ethics more eloquently than i can. my focus is enjoyment, and that’s personal
@davidcelis well, i wouldnt be that pessimist about people abandonning learning. lastly i've been experimenting a lot of stuff on my own, using coding assistants and i think it helped my learn a lot. i think i wouldnt have even tried to begin some experiments if i hadnt have an assistant to help me bootstrap and prototype quickly, on fields very new to me i didnt even know where to begin. fields such as p2p networks, or how to interact with terminal primitives/ansi codes and stuff like that. emojis rendering.
the very same way: i've always been terrible an at UI stuff, and even more since the JS fwks era, even for TUIs.
@davidcelis and also always was reluctant deep dive into it. so there's been lots of stuff i didnt even start to experiment just because i was lacking at decent prototype UI. now it seems to me that it's much easier to prototype stuff: you can keep your hands dirty on the core of your system/design, but to demonstrate or convince yourself of its value, you need a first decent UI. some other ppl are very efficient at UI stuff, but not at deploying/packaging their appl. i dont think people will stop thinking. or if some do stop, then they were probably not thinking that much before AI.

@davidcelis it seems to me that it was a lot easier to prototype stuff 20y ago than today. and that coding assistants are leveling down the barrier.

so, on my side, very personal, i feel like it's fun again.

@davidcelis I completely agree and I would add (as others pointed out) that I lack the feeling of ownership on AI generated code. "No I can't commit this" I say to myself.

However I'm concerned about the future of what I consider a craft... Our capitalist world is very happy as long it sells, even if it's of a lower quality. My colleagues *seems* to understand how to use AI tooling to be more productive whereas I feel lost, depressed, and ultimately unfit for the company.

@davidcelis Great read! That’s an angle of view on the whole AI topic that was missing, for me personally as I just love writing code since I was a kid.

The terrible thing is, what you explain in your article is pretty much what the evil tech bros (like Palantir) call a „forward deployed engineer“ which they hope will replace teams of devs and POs.

The good thing is, as you pointed out as well, the objectively measurable gains (according to studies) in a single digit percentage, if at all.

@davidcelis “developers” ordering LLMs to write code for them should have been managers in the first place, change my mind
@davidcelis Tbh i understand the reluctance, but this also makes me wonfer if you ever copy-pasted code from SO or elsewhere, ever used a template, ever used code generators,...?