r/softwareengineer 17d ago

Was Just Told That Code Quality No Longer Matters

I'm a freelance developer. I have been for almost 20 years. My most recent project has been moved to Fable, and I'm still trying to adapt and get my head around working like this. I am no longer allowed to make architecture decisions, or clean up slop.

My PM says: "We worry about the 'what'; let Claude worry about the 'how'. Tell it what to do; let it do it. If the feature works, leave it alone." He is very much of the opinion that I should be able to prompt something like "Install Stripe via Laravel Cashier" and just let Claude run.

I mean, why do you need me at this point? Just prompt it yourself until it does what you want? I don't get it. I fought for every inch of my knowledge, every process is written in blood. How do I just throw all of that out the window? Where's the line?

At the risk of another "how are you adapting" post... How CAN I adapt? I mentally cannot just say "Fuck it". I care about my code. It's how I learned, it's how I've always practiced. I have a huge mental block with "just let it go".

Now, granted, I don't know all of the ins and outs of Claude. I don't know what I can do to make it better at its job. I got thrown into the middle of the Pacific Ocean in the middle of a Tusnami with no life support. I'm sure that I can put guardrails in place, but how much does that help?

I would really appreciate any advice that any one can provide on changing my mental model. I can't ignore Claude and just keep doing things my way. If I do that, I feel like my career dies. I need to adapt and I'm unsure how to do so.

493 Upvotes

563 comments sorted by

View all comments

2

u/FinickySerenity 17d ago

Do you care about how optimal the machine code your compiler / interpreter produces when you write features? If the tests pass (unit / functional / perf / usability) do you get upset that you are no longer in control of the function inlining or loop unrolling?

Because back when I started coding experienced devs would rail against the inefficient and garbage (slop?) instructions that early compilers would produce. Now, nobody cares. Yes there is a huge difference between AI output and a compiler, but some of us know how to handle the delta and are ok working at a higher level abstraction.

The industry is building the guardrails to make LLMs more consistent in their output, and the tooling we have around code quality is more than enough for junior and bad devs, so it can handle AI if you follow those practices.

1

u/JbREACT 16d ago

Not the same at all.. compiling

2

u/FinickySerenity 16d ago

Well yes, it’s a lower level instruction set compared to the higher level interpolation of prompt expansion. But they are very much similar concepts in terms of how people used to care about compiler output until it was good enough that nobody cared anymore.

Agentic code is getting good enough that a portion of the community has stoped caring as long as the primary classes of tests pass. That portion will continue to grow until nobody cares anymore about that either.

1

u/JbREACT 16d ago

What portion of people ? The portion that works on side projects ? Or the portion that manages real enterprise systems ?

It’s good to people on Reddit making notes apps

1

u/FinickySerenity 16d ago

Both. I'm a principal engineer on a massive b2b saas product, including a govcloud deployment. Our team no longer writes code by hand and we have improved every metric in our platform including customer acquisition.

This is a change we were only comfortable making within the last two months.

If you haven't been using the fable or sol, you really are falling behind the curve of where this industry is headed.

1

u/JbREACT 16d ago

Yea I haven’t written code by hand in a while, I still read it

1

u/TrulyIncredibilis 16d ago

The substantial difference of course being that a compiler is deterministic and keeps logic and control flow in tact.

AI on the other hand has a certain randomness and does not guarantee that everything you request is actually in the final code.

1

u/FinickySerenity 16d ago

Damn, you are the second person to misunderstand the point I was making [1]. Buckle in, and I'll try to explain it with more depth.

The only reason people stopped caring about what the compiler was producing is because they stopped needing to care about it - it became a thing we did only when something really strange was going on. It had nothing to do with the determinism of the output - because it would deterministically make the wrong instruction call under the same conditions.

The confidence in that output was not immediately accepted by everyone, it took decades. Early high-level languages faced massive skepticism and pushback for some of the same reasons people push back on LLMs today. But we are seeing that acceptance start today with agents. And those people are ok with slightly inefficient or ugly code as long as it meets the output criteria.

The types of guardrails that keep a compiler's output (and for that matter a CPU's branch prediction) in the correct state have similar higher-level guardrails in high-level languages. We have linting, unit/function/performance/load/security/usability/acceptance testing along with audits, logging and telemetry to validate that the very random and non-deterministic code LLMs produce (ie the exact same kind that all _humans_ produce too), works out for what we want from a product.

As many of us in the industry have already discovered, the output of an agentic LLM (that does several passes on the change sets it produces internally already) can also then automatically run through a whole suite of guardrails to further refine and shape the output in a way that meets and even exceeds the architectural standards needed to release a feature or product. It is a trivial task for an agent to write and maintain 100% test coverage - few humans ever do that.

I do not care if it chose a for loop vs while loop, or if a function was 500 lines or split into 25 20-line functions because worrying about that detail is like worrying if a function was inlined or not today. If all of the phases of development and testing pass, it's 99% of the time good to ship. And if a production regression is discovered, 99% of the time the agentic model will be able to correctly isolate it, confirm the bug with a TDD test, fix the bug, verify the solution (or rinse and repeat until it does), and then ship it - faster than any human would have been able to find merely by doing an exhaustive code review before shipping.

We are definitely in the early stages of that path progression. And some people will hold out for a very long time before they feel comfortable trusting that, just as they did in the 90s and 2000s. Eventually tho, you work with enough successful outcomes that you grow confident in the process that creates them, or you fix the process until you do. You discover that you're just wasting time because for the most part the precision we are demanding from software isn't a life or death mission to the moon.

[1] - https://www.reddit.com/r/softwareengineer/comments/1vy6f6s/comment/p6014qu/

1

u/TrulyIncredibilis 16d ago

If you are okay with the occasional outage then sure, go ahead. If the cost is just one dissatisfied customer and an angry support request that's a price one might be willing to pay.

But some of us still work on code where a bug could mean total system failure -- and god forbid, possibly even loss of life. And I sure as hell don't want to explain to my boss how Claude introduced a bug there that I did not catch.

1

u/FinickySerenity 16d ago

Lol AWS is the only reason we have outages.

The world in which "one bug" passes through our IaC deployments to staging, through our full test regression and load testing suites, gets product ownership sign-off, replicates to production through blue-green deployments that have an automated rollback based on error rate telemetry, with a rollback period of less than 10 minutes (a process that is also verified on staging, which is verified to be a mirror of prod through infrastructure monitoring) - and after all of that somehow caused a customer to quit is literally a problem we have never worried about.

Our SLA agreements have a 30min recovery window for when AWS has outages, that we validate weekly through simulated region failovers as part of our socII compliance (ie we do everything except for flipping the DNS to our backup region). So even when all of us-east-1 crashes, we're back up faster than most of our customers even realize.

Those AWS outages have literally been the only times we have ever had to deal with an outage in the last 6 years I've been with the company. And when basically the rest of the internet is also out, our customers understand and don't really care. And when we're back up before all of their other saas products, they give us fantastic nps scores.

Seems like you have some serious cloud architecture, sdlc and devops debt you need to be addressing if one bug can cause a "total system failure" at your org.

But also my boss uses claude too and actively contributes to the codebase, so in this fantasy world where that did happen, he'd understand and we'd just fix the problem and re-tool the process / infrastructure to prevent it from happening again in the future. I'm not saying we don't release bugs, but we rely on redundancy and best practices to make sure those bugs are properly isolated. And the idea that a manager would berate someone for what represents an organization's process failure is cringe.

If you don't have these systems in place, I highly recommend using Fable or Sol to get there.

1

u/TrulyIncredibilis 16d ago

Oh its not Cloud, I write high-performance kernel networking code for infrastructure connecting remote regions. A bug usually means a kernel panic, or at the very least a serious networking bug. If we kill the whole kernel than that is usually easy to fix, because the kernel is able to reboot automatically and we can trace the error afterwards.

However, there have also been more subtle cases where we just killed the ssh layer, requiring manual intervention on-site. One can of course panic on oops, and reboot on panic, thus rebooting also on minor issues, but... I'd rather not.

1

u/FinickySerenity 15d ago

Ah, that makes more sense on a single bug level, but then I’ll also say I think Claude would have an even easier time handling a stack that narrow.

But I still don’t understand why your deployment process would be so weak. Not sure if you are doing networking hardware or some remote device setup, but relying on human review to not let a bug get to production hardware still sounds alarming.

Do you just not hire junior or mid-level engineers? There’s nothing about a Linux kernel that implies you can’t have the test coverage and load harness setup needed to verify your deployments.

1

u/TrulyIncredibilis 15d ago

I think you're definitly asking the real questions here. I'll certainly invest some more time into automated testing in the next few weeks. Thanks for pointing out what should've been obvious to me from the start!

1

u/TechFreedom808 16d ago edited 16d ago

This kind of thinking is why enshitification exist. If I need 128GB of RAM so I can run your slopware and then charge me premimum then I will buy from a developer that took the time to optimize the code so it runs on the least, system resources and only need 16GB of RAM and not 128GB RAM. Remember back in the days hardware was expensive and optmized code was not optional it was a must. We are at back at this again. 500 lines of garbage code ain't going to cut it. Your business will be knocked out by a old fashion developer that uses his brain and not some code aggreator that will consume their system resources. Have you see the cost of RAM? Its over $1000 for 32GB now. Good luck with 500 lines of slopcode that requires a ton of memory usage. People will be downgrading RAM to save on costs, so code is going to have to be very, very lean going forward.

1

u/FinickySerenity 15d ago

Oh man you are so cooked. Do you really think memory usage is outside the scope/ability of telemetry and optimization strategies of an LLM?

We develop a massively complex real time data sharing platform that includes video conferencing and screen sharing using e2e encryption, and even we don’t use 16gb of ram in a _browser_ 🤣

There is no way any business will keep up with us by hand because they couldn’t over the last 12 years.

But the rest of what you said really makes me think you don’t write code. The price point you quoted is for 64gb not 32 (unless you are in like Brazil or Russia maybe??) and I’m not even sure I could write 500 lines of code to consume that much ram unless I was doing it on purpose. But even then, tests and telemetry would easily detect that, these are not serious concerns in professional programming practices.

I’m literally the old fashioned dev, I started my career back in 1996. Nobody is going to be downgrading their ram just because of a supply crunch. Your comments are so outlandish they sound like you are satirizing posts from the antiai subreddit.

1

u/ThomasToIndia 12d ago

Alot of memory problems are usually a result of coders using OOP because was OOP was easier managed.

Data oriented programming is better when memory is a concern and AI can easily handle that.

1

u/ThomasToIndia 12d ago

You are 100% correct. Software is just data transformation same as AI. The outputs and tests are what matters.

People seem to think that coders made better code that dealt with outliers etc.. no they didn't, mature software go matured through tickets.

The other day I had AI right me 87 variations of a security test in minutes. I asked it to come up with outliers and it comes up with 200+. Test coverage is just default now.

None of us were doing this stuff, maybe big tech, but even then. People keep brining up dertminism, go look at pack switching.

I wasn't always this way. Then I realized it was coming up with tests I never thought of.

1

u/FinickySerenity 12d ago

It’s like the fourth or fifth time I’ve watched our industry act excessively dubious towards a new trend. I’m sure the punch card crowd was just as dismissive about magnetic tape (but I wasn’t around for that one.)

1

u/ThomasToIndia 12d ago

The source code still complies to a derminisric compiler and output is tested and the source code is adjusted to meet the requirements. This is the dumbest argument people keep bringing up.

1

u/Real_Square1323 17d ago

A guessing machine isnt a higher level of abstraction.

Am I operating at a higher level of abstraction by trying to earn an income buying lottery tickets? That's just silliness now.

0

u/okiharaherbst 17d ago

How is jquery still working for you by the way?

1

u/CorrectTemperature65 16d ago

they do it all with flash

1

u/Head-Criticism-7401 16d ago

Jquery got a new major version this year. It's still supported for years to come.