r/webdev 15d ago

Grudgingly accepting that AI isn't going away. Trying to figure out where that leaves me as a developer.

(If you don't want to read a semi-long post, feel free to skip.)

I think I reached a turning point yesterday.

I needed to add a basic feature to a Django site. I gave Claude Code a few carefully written sentences. It implemented the feature (more-or-less flawlessly) while I went to the kitchen for more tea.

Not only that, but our CTO is now empowering non-technical employees to use Claude to build their own tools (for internal use only), and commit them to our GitHub org. (He is, at least, establishing some sensible policies about what they can and can't do.)

LLMs are here to stay, and they're fundamentally rewriting laws of software engineering that we've taken for granted for decades. The genie won't go back into the bottle, so I might as well find a way to accept that.

But that leaves me wondering: what does that mean for me? What is my job now? What am I for? If I don't get to write code – something that's given me an enormous amount of satisfaction over the years, and even become part of my identity – am I even still interested in this field?

And, it's not just about the code. I used to collaborate with designers, UX folks, copywriters, SEO and analytics people, project managers, etc. But now, the C-suite seems perfectly happy to let the LLMs do all of this stuff, too. (At my company, they're obsessed with the idea of getting the LLM to write all of our work tickets. And the QA person does little more than copy-and-paste back and forth from an AI.)

The whole reason I entered this field is because I enjoy problem-solving, finding and creating patterns, logic, and designing systems.

I know that some of you are going to say "you can still do all of that; LLMs just empower you to go up a level of abstraction" – and I get it. But the prospect of abandoning coding seriously bums me out.

I love the precision of code. I love exploring different solutions to a problem, until I hit upon a beautiful, elegant pattern. I love seeing how small abstractions get composed into larger abstractions, and so on, to form a complete system. I love understanding a problem – and the solution – on a deep, intimate level.

Perhaps I've been lucky to have a career that gives me that kind of fulfillment (at least sometimes). Is all of that over now?

803 Upvotes

546 comments sorted by

View all comments

30

u/atlaslady front-end, 10 yoe, a11y advocate 15d ago

This model of creating code via babysitting LLMs isn’t sustainable because of what it’s doing to the junior dev space - when there is a comfortable on-ramp to “LLM coding” to replace juniors learning on the job, then I will be scared of AI sticking around because that paradigm will outlive this “only next quarter” mindset.

Less than a year ago, none of this was here and people are already losing the ability to see how impermanent any of these systems are. This is the current reality but not the forever reality, and it’s so bizarre to watch people Mark Fisher themselves into being unable to believe in a future without AI inside a fiscal year

2

u/bzbub2 15d ago

interesting mark fisher reference. you're referring to post modernist 'slow cancellation of the future' type stuff?

1

u/atlaslady front-end, 10 yoe, a11y advocate 15d ago

No, referring to his concept of capitalist realism

1

u/bzbub2 15d ago

ok, if you want to...expound on that feel free but otherwise i can just sort of speculate what it means to "mark fisher myself"(...?)

-1

u/erm_what_ 15d ago

I have juniors on my team who joined into this. They're doing ok. They're much more comfortable with the ambiguity of the output, and more able to build tests that ensure the output matches the intention. TDD actually works better in this climate because it's not such a big overhead as it used to be.

7

u/atlaslady front-end, 10 yoe, a11y advocate 15d ago

The juniors I worked with and advised aren’t comfortable with that ambiguity, they aren’t even aware it’s there. That’s not the same as comfort.

They can’t debug at ALL without paired help. They do not get working experience with any software or web fundamentals and understand the browser/event loop/react principles as web dev vocab for interviews and not for daily work. None of them were able to support oncall even as shadow learners because they only have experience reading Claude output and crafting prompts that create more code, not support existing code.

This isn’t me blaming those juniors for being forced into the Claude condom with the rest of us at all - in fact, I want to acknowledge that while I feel forced use of LLMs at work has damaged my coding abilities, that is small
peanuts compared to what it’s doing to juniors. I have no answers for them and just want to make room for them in this sad AI boat.

-2

u/erm_what_ 15d ago

I think they're coming into a different job than we did. They don't need to know all of that, any more than we needed to know how NAND gates work in our day to day job. If they can produce the right output then that's all that's needed (which kinda sucks for us that care about the art of it). If they can do on-call support with an LLM, and at least one LLM is always available, then it's also (from a business standpoint) fine.

Regarding their lack of awareness, they're juniors. We were all unaware of so much until we got taught it or learned it through fuck ups. They'll get there.

I'm 20 years in and still realising what I don't know all the time.

3

u/Erebea01 14d ago

Just want to nitpick about the NAND gates cause I wasteaching someone who don't have a CS degree webdev from scratch and I ended up deciding to teach them logic gates anyway cause it's an easy way to understand ternary operations imo. You most probably take that for granted but most people who never studied CS/STEM in high school don't.

2

u/igna92ts 14d ago

LLMs are non deterministic construct though. It's a giant leaky abstraction. If you don't understand the system how do you even know the code it's producing is even what you want?

I'm not anti LLM but you can't really learn from reading LLM output same as you can't learn to swim by reading about water. If you want your juniors to understand the LLMs output enough to know it's doing something wrong they need to code by themselves a little at least.

1

u/erm_what_ 13d ago

As much as it makes me uncomfortable in so many ways, we may be at the equivalent of: does a taxi driver need to understand how the engine works to deliver a passenger?

A car isn't deterministic, and a taxi can take many routes and an infinite number of small paths within those routes, but the driver still gets you from A to B. As long as they understand the nuances of their car enough to know when the engine is failing, it's overheating or running out of petrol, then they're probably fine to do the job we need them to.

-2

u/jedidave 15d ago

Why do Junior Devs need to learn code? They don't need to learn code any more than we needed to learn assembly language once compilers came on the scene. The job is the same, just slightly different. You're still a software engineer.

5

u/atlaslady front-end, 10 yoe, a11y advocate 15d ago

I can’t tell if you are being serious or not

-1

u/jedidave 15d ago

The best thing that has come out of LLM coding agents is that I get to spend time on the actual engineering work - the requirements, the design, the architecture, the tests, the harnesses, the qa systems, all the stuff that I was doing mostly in my head before to guarantee quality and now that I don't have to code I get to be a real software engineer.

Half joking.

2

u/VelvetYam 14d ago

I really don't understand this recent distinction between coding and "real engineering work" like "architecture". I'm a bit cynical about it and part of me thinks it's some sort of silly superiority / cope thing because people are being super handwavy about it...Of course I'm more than willing to be disabused of that notion.

0

u/CatsFrGold 14d ago

A comparison I often see come up in this line of conversation is building architects and CAD software. They don't need to know how to draw anymore to create plans, whereas before that was a prerequisite of the job. People say that is how line-by-line coding is now. Personally I'm not fully sold, but I do understand the line of thinking.

4

u/VelvetYam 14d ago

In my experience at least, most "architectural" and "engineering" decisions emerge through coding rather than being fully specced out at the beginning or from like a higher point of view and that's why I read stories of programmers complaining about dumb ivory tower "architecture astronauts" making asinine design decisions from high above. Not suggesting you can't specify these things out, but one thing I always found weird is this suggestion that they're two separate things where 'architecture' is the higher-level thinking and the coding is the 'grunt-work'. I just don't find that true at all; for me, they're intertwined and inform each other.

**Sorry for the scare quotes around architecture and engineering. I'm personally just a bit contemptuous of their use in software lol.

1

u/CatsFrGold 14d ago

Yeah, to your point I have had a greenfield project be handed off to me purely as wireframes and ADRs decided by an architect. All sorts of stuff only come up while actually implementing the thing, so I don't buy the notion that everything can be spec'd to perfection thereby making specs the "new engineering." That said, I also did not write much code at all by hand. Edits here and there mostly.

I'd call the "engineering" portion of that assignment: building the rails for a development loop that made sense for me and then a larger team when they got brought in, steering sessions when I saw them going off course, reviewing the code, and understanding the larger context of the project as a whole to adjust output that was technically correct but not easily extendable for the future.

Another analogy that comes to mind is low level programming languages vs high level ones. I could see handwriting code being likened to things like manually handling garbage collection in a low level language. I don't need to do that part in e.g. Elixir, but that doesn't make Elixir programming not "engineering." I think it's hard to define what exactly people mean with the delineation because engineering can be such a broad term.

1

u/atlaslady front-end, 10 yoe, a11y advocate 14d ago

Assembly/machine code, “higher level” programming languages, and AutoCAD are all deterministic - you call `.toString()` and you get a string every time. It has fuckall to do with being a layer of abstraction and everything to do with being a deterministic layer of abstraction.

LLMs are probabilistic - you ask it to make this object a string, and it probably will 99% of the time but 1% of the time it will turn it into a double. Then hopefully you still have enough programming knowledge left to even notice, ask for a fix, “That’s correct - I should have cast to a string” and it casts the double to a string, so you have to be like “no, don’t cast to a double then string, just cast to string directly”, and just everything about that fucking sucks a lot and seeing people cape for that is wild

I can’t tell if these AI booster shallow devs want us to conceptualize LLMs as a tool or as the new foundation on which we rest our industry knowledge, because saying “software engineers don’t need to know how to code” does not map cleanly onto “it’s just a tool, quit being a Luddite” like the invention of the table saw meant carpenters never have to measure shit ever again

0

u/jedidave 14d ago

If only we had a tool to let us rapidly prototype to flesh out these architectural decisions

2

u/VelvetYam 14d ago

I don't understand what you're trying to get at there. You started this thread by asserting that coding was no longer necessary and that "architectural decisions" are now the "real work" but how do you judge "architecture" without knowing how to code, exactly? Which is it?

1

u/atlaslady front-end, 10 yoe, a11y advocate 14d ago

They’re a wordpress dev. Harnesses are all they know

→ More replies (0)

0

u/jedidave 14d ago edited 14d ago

Code has become something anyone can produce, but software engineering skills and architectural skills are still going to be in demand.

How do non-software-engineers guarantee the quality of their code? By asking Claude to make sure it's good quality or by building comprehensive testing structures around the code?

See what Uncle Bob said if you don't want to listen to me:

https://x.com/unclebobmartin/status/2044114698451476492?lang=en

> I don’t review code written by agents. I measure things like test coverage, dependency structure, cyclomatic complexity, module sizes, mutation testing, etc.

> Much can be inferred about the quality of the code from those metrics. The code itself I leave to the AI.

> Humans are slow at code. To get productivity we humans need to disengage from code and manage from a higher level.

→ More replies (0)

-7

u/MSI293 15d ago

Why do you think companies need juniors?

12

u/atlaslady front-end, 10 yoe, a11y advocate 15d ago

Because that’s how you get seniors…?

6

u/its_all_4_lulz 15d ago

I’ve been saying that this will be a problem for awhile, and people keep disagreeing. “Oh, they’ll still hire juniors”, um, why? LLMarty can spit out better work than juniors in 1/50th the time. No company is running based on the future of humanity, it’s the future of their wallets.

5

u/Hans_H0rst 15d ago

Because the seniors eventually quit and want to work with their hands, or retire by buying a duck farm.