from 87Six@lemmy.zip to programming@programming.dev on 15 Feb 18:28
https://lemmy.zip/post/59163715
Context: ~3.5yo Drupal / Prestashop / Plain PHP dev
I tried Cursor because our company paid for it, and it does bloody everything near instantly.
If I need to write a module for some custom data report UI, or a data importer of some variety, this thing just needs to know the detailed spec and it gets me probably 80% of the way to the feature in minutes. It’s ridiculous. The rest is just me picking some UI libraries, fixing bugs, and probably optimizing the code a bit.
I really don’t know what to do with the information that this thing can do what it took me so long to learn, in minutes, rather than hours, while I stumble around plugin declarations as if I just started to code.
Even the off-usage limit Cursor works really good. I can just keep coding with it past the $20 mark and it’s fine.
Of course the code it generates is pretty shit and full of comments…but it works.
I’ve integrated it into my work almost entirely along with the rest of the team. We all spam it daily. We pretty much never write a feature ourselves anymore. From what Cursor says, most of our code in GIT from the past few weeks is AI generated (like 70-80%…)
Before you say it, yes, our codebase is shit, and was shit. We have practically no devops, no real team structure, and something is always on fire, though I’m under the impression that this isn’t very uncommon nowadays… (For context, we just wrote our first documentation for a project more than 4 years old, and it’s all generated by Cursor, and there’s more hardcoded shit in our code than configurable stuff)
I keep trying to manually write code that I’m proud of, but I can’t. Everything always needs to be shipped fast and I need to move on to the next thing. I can’t even catch my breath. The only thing allowing me to keep up with the team is Cursor, because they all use it as well. The last guy that refused to use AI was just excluded from the team.
How the hell do I deal with this information? Where do I go from here? I’m fucking terrified and I need some advice from somebody that isn’t all up in the latest Opus model paying $80 (tax included) monthly to code with AI… I love my team, they’re great people, but our obsession with AI is REALLY concerning.
PS: If somehow I leaked who I work for somewhere and this can be crossreferenced to my company please let me know. I don’t want to be found talking about this, just because I don’t know how they would react, but I really need a different perspective.
EDIT: Thanks all for the responses. You’re confirming my fears. Idk how to feel about it…
#programming
threaded - newest
I’m a big fan of pair programming. I’m also a fan of rubber duck programming when solo.
I’ve found that an LLM agent can be useful as a rubber duck that can respond and sometimes as a more experienced pair that already knows things that I’m less experienced in.
This isn’t the AI’s fault, it’s the culture of your employer. A 100% human workforce would write poor quality code too. Using an LLM is just making you more productive in terms of what productive means for your employer: churning out rubbish faster.
Thanks for responding and validating what I’m believing already, god I feel insane only talking to my team about this…
What do you think I should do? This whole situation, to me, reeks of a dead end job long-term, and I feel like I should be looking to bounce to an employer more willing to create quality tools that take more time.
It’s a dead-end job because of PHP. But if you insist on using that language, drop all AI usage and learn with some good code, and add some CI/DevOps automation to clean and check everything.
I disagree with this. Maybe one of the few good things to come out of LLMs is that a smart developer doesn’t need to care as much about language, because the AI can abstract so much of that away. If you’re a good problem solver, it’s much easier to switch from PHP to Java to Python and let the AI handle the language specific details (up to a point, and not always optimally)
Start now. It’ll take a while to find one. When you’re interviewing, grill the prospective employer on how the team operates. IMHO field experience is less important.
I avoided saying as much in my reply because I think opening with “get a better job” is a dick move, but if you’re considering it… start.
thanks man
God, I dread it haha
I hated it. Consider the first few practice. You’re interviewing them too!
Good signs are employers asking how you work, asking for interesting stories.
Become more product centric. In my company product managers have been mocking more features because they can talk it over with an AI who builds it, even if only a prototype. I think that ability to describe what a system should do will continue to be valuable for a while and is something that LLMs are still not very good at. They can talk about UX, but their “experience” of a product is always going to be different from a human’s.
This is it for me. Rubber duck programming with an AI is like talking to a brilliant idiot engineer. They have no knowledge of how things work but have enough “experience” to say “this looks weird, why did you do that?”
Also “explain why it won’t work doing it thus way”.
Yea I find it really useful for that too.
Also for banal stuff like boilerplate or writing some code to make a page support AJAX, before I dig in and make everything work properly.
Also it’s pretty good at tracking things down. I’ll often ask it “what the hell can I use in this plugin declaration” and it will list me a whole bunch of stuff it finds in the core codebase that would take me at least a few minutes to find. (No docs for some of it even in Drupal core, unless I missed them)
Your code is shit, you are stressed and anxious, you have no devops and most likely no best practices, and you exclude people who don’t comply with your shitty behavior? Sounds like an awful company. Are you proud of something?
You’re spot on. I guess the only thing we’re proud of so far is partly migrating part of the project to a more modern framework (and a framework at that…not just plain PHP with random libraries sprinkled in)
Here. Read this …wordpress.com/…/the-software-quality-and-product…
Do your customers ever complain about your software? If so, what does your team do when it happens? Is this what “something is always on fire” refers to?
Yes. We have issues constantly. It’s an internal product and we have devs on support for issues all the time, because only a dev can even fix the issues that arise.
When it happens, we fix the one instance of the issue, add or remind about a tichet that already exists for this issue, and move on.
The underlying issue rarely gets addressed.
The issue is usually so deeply rooted in our ecosystem that the only way to fix it would be to rewrite / refactor half the platform.
We’re working on rewriting the whole project but more features are almost always considered a priority over that.
Does Cursor actually help with any of that?
Not really, not with putting out fires. For that, the guy helping pretty much needs to know the way the entire codebase works in order to help. Cursor isn’t up for it.
What it does help with is creating new features, or porting old features from legacy into the more modern Drupal code. It understands 80% of what it needs to do and then we go in and finish up the feature with the context of how the whole thing works.
It can help implementing stuff independently from the legacy stuff while still respecting the way legacy works, but again, obviously only on the surface level. We always need to intervene.
Though a lot of what is requested is pretty generic stuff that is mostly CRUD in some way. We haven’t implemented any interesting stuff in a long while.
If Cursor doesn’t help with that, but you constantly have several devs on “putting out fire”-duty, you have a pretty strong case for taking the time to make the software not be constantly on fire. i.e. it’s probably going to save you time (man-hours) to write some proper code, and time is money.
Not that I expect your superiors to care about that.
yea we know and we have been. We’re making progress but ofc it’s slow and they hate that…
It’s exactly why we started using Drupal but porting to Drupal has been paused yet again.
Cursor is pouring gasoline on the fire.
Here’s my take: Like google, stackoverflow, and so on, AI is yet another tool in your toolbox. It can’t replace humans yet, and in fact it’s a ways off from that if you ask me. Not that it won’t eventually be able to do it, but it can’t yet. You said yourself, there are still elements that the AI just can’t do yet.
I like that I can say “hey AI, here’s what I need” and have it generate what I would consider a good framework to start from. It helps me eliminate the boring, time consuming stuff that I could easily do on my own. Your value comes in that other 20% now. The stuff that requires higher level understanding.
A big problem is that AI is creating technical debt in the form of deep understanding and expertise. You have the benefit of years of experience. You are the guru now.
I really see it that way too. I wish we could spin this into more quality code instead of churning things out faster.
Writing the 100th Drupal module, service, plugin, whatever, is boring at this point. Making it do whatever it needs to do is the fun stuff which Cursor can do partially but we need to finish.
It seems your team is not ditching AI anytime soon, but you can still use it to tame technical debt. In fact, with the higher rate of code generation, I’d consider trying to write the best possible code when using AI a requirement.
Look into “skills” (as in the Anthropic’s standard) and how to use them in Cursor. Use custom prompts to your advantage - the fact you’re still getting code with lots of comments as if it was a tutorial, tells me that this can be improved. Push for rules to be applied at the project level, so your colleagues’ agents also follow them.
Make heavy use of AI to write regression tests for covering current application behavior: they’ll serve as regression warnings for future changes, and are a great tool to overcome the limits of AI context window (e.g. most times your agent won’t know you fixed a bug last week, and the changes it’s suggesting now break that again . The test will protect you there). Occasionally use AI to refactor a small function that’s somewhat related to your changes, if that improves the codebase.
Stepping away from AI, try introducing pre-commit hooks for code quality checks. See if the tools of your choice support “baseline” so you don’t need to fix 1000s of warnings when introducing that hook.
AI can write code that’s good enough, but it needs a little push to minimize tech debt and follow best practices despite the rest of the codebase not being at an ideal quality.
I am sorry fellow human. It seems the only way out is through. Document all the time you spend putting out fires or any time anyone else does. Add all those hours up, and present it to some manager who doesn’t give a shit. Then become manic with me and laugh as the invisible flames encroach on all territories.
In Big Ball of Mud projects, it's easy to not notice AI generated code introducing more bugs into the codebase, slowly bringing the project to a halt and its inevitable death due to the rising cost-to-profit ratio of producing new features.
I'm guessing the project doesn't have the tests, tooling or practices to catch even the more obvious bugs before they go to production. Now consider that LLMs are great at producing code that looks just right, but may behave differently than expected.
Finally, LLMs are said to be a productivity multiplier. Now what happens if you multiply bad practices...?
You seem aware of issues within the company. I assume you either voiced them and were ignored, or felt it was unsafe to do so.
My advice would be to think about what you would want your next project to be like. Something with more of a focus on quality, I imagine. Perhaps using DDD? Maybe remote, with less focus on churning out code and more focus on the actual requirements? Write your wishlist down, then start looking at job postings. Apply when one seems "good enough". It will take a long time, you'll get rejected a lot, but I bet you'll eventually find something better.
It sounds to me like you have two viable options:
Accept that your role at the company is now “prompt ‘engineer’” and do your best to optimise your workflow for quick turnaround, since the business is prioritising speed. If you want to do programming, start a personal project.
Optionally, you can think about how to frame the issues with code quality in terms of financial risk to leadership–but be prepared for them to continue not giving a shit (and maybe start viewing you as “not a team player”).
Find a new job.
3.5 year old developer? Damn they start them young now. /s
Two suggestions.
First, take on a hobby project that you can build to your personal specifications, instead of having to push to meet deadlines and put out fires. This will allow you to learn rather than ride herd on an AI. You’re never going to get the time to write code properly at work, so you’re going to have to find time to do it yourself - or you risk losing what skills you have as you outsource your mental load to AI.
The downside of AI is that it doesn’t learn the same way people do. It can churn out code real fast, and if the language has a ton of examples on the internet it can do a pretty decent job of it, but it will never get better, and in fact it will get worse over time as AI output continues to flood the internet and gets scraped for training data. You need to get better, because without actual human learning and knowledge, programming skills will nosedive over time.
Second, understand the limitations of how your workplace runs and accept that. If you cannot accept that, then look for work elsewhere. Lots of workplaces operate on the ‘always move forward’ principle. Tech debt is something that will always be put off, shoring up your processes is going to get in the way of productivity, and as a result, your job will gradually become putting out fires more and more until it’s all you’re doing. This process will only accelerate with AI coding, especially because it means the people doing the work won’t know all the internals of what they’re ‘writing’. This will be your life, eventually. Get ahead of it if you can, and if you can’t, then it’s time to start looking for another job.
I’ve found LLMs are impressive at first but as you start to dig through the code it’s quite shit. Give it a day or two and come back and try and really understand how it’s laid things out and your start to see the “six finger” of the LLM code slop world.
It’s great for
Funny enough one of the best use cases I have found has been for information retrievel then generation.
Alot of these models store vasts amount of info in their weights. You can get get pretty good results asking it basic questions about new tools.
My rule of thumb is that if it’s something someone would give you to answer a stake overflow post it’s something a LLM can do. These models function by re-composing their training data and inputs but they can only do it so well. The more specific you get the more it starts to fall apart.
AI (through agents, but even completions to an extent) extends your reach and reduces your grasp.
For some sectors, that’s perfectly acceptable. There are plenty of codebases that don’t need to worry about keeping devs accountable.
There are also plenty of business models these days (especially in the Trump era) that face no downside from failing to keep devs accountable even if they should. VC-backed vaporware looking to exit before they drown in tech debt, private equity acquisitions that just need to bleed existing customers dry while disemboweling the productive capacity of the firm, or even publicly-traded brands that are chronically unable to think past next quarter’s P&L. And especially if they’re already a monopoly.
The trouble is really when a CTO misunderstands what kind of business they’re running, and considers the wrong folks to be their “peers”. There’s a big incentive to just copy whatever Amazon/Microsoft/Google says. It’s the new “nobody ever got fired for buying IBM”.
Idk if that’s your situation or not.
If it’s shit but it works, it’s still shit. You are building technical debt that will eventually have to be paid when you get more customers, and current codebase starts surfacing bugs, security and performance issues.
Sounds like your team doesn’t have a strong technical leadership, or they’re prioritizing expansion rather than stability. Maybe you’re working for a startup and have yet to turn profit? Or your clients don’t care about quality and reliability.
At only 3 years experience you are still learning, and it’s telling that you can already recognize AI slop code. I feel sorry for you and hope you cna find more fulfilling work that will let you grow, but I dont’t know what the job market is like right now. I believe that if all you do is interface with AI all day, your job itself can be replaced with AI, so the experience you’re getting now may be of very little value as a software engineer. But who knows, AI is a real disruptor, and being able to review and scriutinize AI code can be a skill in itself.
was up until midnight last week thanks to AI generated code that decided that database indexes were not important in critical path code.
Slop-herding is not engineering. If you want to do real engineering then join a real engineering company. Otherwise stay where you are and tend the herd.
Feeling embarrassed is a weird reaction. If it actually helps you in your job, there’s nothing wrong with that. Get that money. Whether you like programming enough to actually get good at it is a personal choice. I’m someone who has been extremely passionate about it my whole life, and when I was younger, I had a much lower opinion of people who only did it for a paycheck (the “9 to 5 people” who didn’t know the difference between Microsoft Office and Microsoft Windows until they took computer science in college). These days, I couldn’t care less. The tech industry stopped being a meritocracy long ago. This recent wave of AI slop is just the boot stomping on the population of people who exist within one standard deviation from the average.
But as you’re sitting around scratching your balls while the agents generate your code for you, take the time to think about this bit of doomer outlook:
The “vibe coding” thing is a fad that won’t last. The only reason it exists now is because the current state of LLMs isn’t good enough to do everything on its own. These agents currently need a human in the loop to babysit them when they fuck up, as you’ve no doubt noticed. They’re also highly subsidized because the AI companies want to collect data in order to train them and make them better. If/when they’re truly able to build a product on their own from prompt to ops, then the price hikes and layoffs will come. Maybe they won’t even raise prices, maybe some billionaires will take the company private and only give access to their friends, family, and the young white christian men they’re using as blood donors in their longevity experiments…
Write shit code, tell managers it’s shit, go on to next project. The only thing that will end this cycle is worker owned co-ops.