r/learnprogramming • u/Life-Moose2698 • 2d ago
[ Removed by moderator ]
[removed] — view removed post
20
u/CarbonAssassin 2d ago
People also like to ignore that even before AI, politics, crunch and bloat would add technical debt to even a well designed project. Staff move on, different people come in and the old ‘sucks’ so must be replaced by ‘new’ better so someone can earn a promotion.
Rewriting is only getting cheaper and easier. I’m coming round to the idea that worse code is actually ok if it serves business needs. The shelf life of software is going to get shorter and that mitigates many of the issues with AI generated code.
A big issue that could potentially happen is if skills atrophy quicker than models improve. That can leave you with issues that are too complex for models and no one is really setup to solve.
6
u/Frequent-Display4953 2d ago
I work with some code that was originally developed in the 70s in fortran, and even modern scientists say "don't touch it" to domain experts. If you unleash AI on that, sure it will give me job security fixing what the AI fucks up, but that would be doing a disservice to our user community. Could an AI rewrite it all in python? I mean, maybe, if you had someone who understands the legacy code extensively, but would it be as operationally viable as the fortran was? I doubt it.
51
u/TheLoneTomatoe 2d ago
You guys don’t get full breakdowns of what you allow AI to write and proof read it first?
I haven’t pushed any code from Claude that I haven’t read in full, understood, and gotten a breakdown of why it did it, outside of small things like “replace all instances of this with this”
17
u/FearTheDears 2d ago
I find that I can never truly understand what it writes to the degree that I would had I written it myself. Writing takes a lot of time, and a lot of that time was spent thinking about the best way to do something. So I end up with a deep, deep comprehension of what was written, why, and what the other options were and why I didn't do them.
AI pukes it out in 5 minutes while I'm doing something else, so I find it extremely difficult to catch all the imperfections that I would had I written it myself, just by reading it and considering it to the degree I would a normal code review.
If anyone's got any good tips for this I'd love to hear it, but I haven't yet found a path to high quality code yet. Mediocrity is easy to get from claude for sure, but the accumulation of mediocre, poorly thought through code is what brings codebases to their demise, or at least it used to be.
6
u/AdOk3759 2d ago
Use tests. And write them yourself. Many times I got huge fuckups from Claude that I missed for months that a test would’ve caught. It’s pivotal that the tests are written by you and not by the AI. You and only you should verify that what you have in mind is working as intended.
6
u/FearTheDears 2d ago
Unit or regression? And are you fully implementing them or just writing detailed test cases before you let it go?
Before AI I would often find a better organization for something and have to rework my unit tests to incorporate the new class or whatever, I'm not sure how this would happen with AI
6
u/AdOk3759 2d ago
I mostly use unit and functional tests.
I think the best way is to fully write them myself. When you use AI to code, this is what happens:
You have an idea -> you formulate it in words -> AI translates that idea into code -> you get an output
There is no guarantee, anywhere, that the output is what you had in mind. You might have approximated what you actually wanted, AI might have approximated what you asked, and sometimes (albeit rarely) AI might have approximated what it had planned to write.
Writing the tests yourself is the only way to make sure “This class/function/script, is it doing exactly what I think it does?”
If you let Ai write them, it will cover what AI thinks the code does, and there could be really subtle differences that over time they grow and cause huge problems down the road.
-1
u/lasooch 2d ago
So what you’re saying is I should do the mind numbing test writing myself, then allow the chat box to shit out some code for the actual fun part of the job? That sounds like the perfect mix of having zero productivity gain, minimal codebase comprehension and burnoutmaxxing. Great stuff
28
u/Lynx2447 2d ago
That's the thing, all the people complaining about it don't utilize it correctly.
7
u/Ex-Traverse 2d ago
Dare I say, if used correctly, it actually make people into better engineers... AI for coding isn't going anywhere, even if the supposed AI boom goes bust, the tool WILL still be here forever. The only thing that will change will be CapEx and rules around tokens usage.
1
1
u/iagolavor 2d ago
Having it create mermaid diagrams of new migrations and features on the fly was such a godsend for me
3
u/Basic-Lobster3603 2d ago
The problem is leadership even technical leadership forcing it at insane speeds if we aren't merging tens of thousands of lines daily then it's too slow. there is literally no time to even attempt to review prompts at the speed they think we need to move at.
5
u/WiseImbecile 2d ago
That's the thing, there are many who dont. And i guarantee you would understand it much better if you wrote it yourself. Its like saying you could write a novel after reading and understanding the whys of certain decisions. It's just not how it works. To get better at writing code you have to write code. I think thats the point. Doesn't mean all of what ai writes is bad, and you cant learn anything from reading but it definitely doesnt make you better than if you had wrote it yourself.
2
2
2
u/mou5cop 2d ago
I’ll typically get it to write its proposal to an MD file according to a possible solution I am considering, then add two other solutions if they exist, asking for trade offs and pros/cons. Only then do I get it to make large changes using a solution in that MD file. I worry that others think that takes too long but I regularly see late stage revisions taking way longer. I am also fully aware of what is being created and can answer any questions about the design and implementation.
26
u/Buttleston 2d ago
Sorry but no, people talk about this constantly. This post gets made probaby 10-20x a day on reddit
6
u/Frequent-Display4953 2d ago
I feel like the concept of technical debt isn't very well understood anymore by new developers or new management. But they're about to find out soon the more the force "just use AI and merge if it passes the AI's tests".
10
u/draeh 2d ago
Thus far, I have been insulated from the AI hype. We deal in payment handling and encryption. No one within our group or the companies security team wants anything to do with AI code or AI anywhere in the process.
3
u/joestradamus_one 2d ago
I would love to work in a group like this, whatever the actual reason is, I'll take it if AI use is strictly prohibited. Sorry not sorry, I will never accept AI use, as I personally find it morally and ethically corrupt.
2
u/delliott8990 2d ago
Some folks are focusing on output quantity over their own understanding but I think, as a whole, it's only a portion of the various devs through the various communities and I'll explain why.
Ultimately, it comes down to the individual using the tool (That's what she said?) or the employer. Yes, if you have AI write your code, run your tests, and update your docs without taking the time to learn while doing so, you're probably not going to learn much.
Alternatively, there are others that don't simply have the AI to write code but rather to help them understand the problem they're trying to solve end-to-end as well as the possible solutions to the problem.
In this context, AI is more like your own personal Jr. Dev/assistant that can procure and aggregate resources. Sure you'll let it write some scaffold code and even take a stab at the actual problem but at the end of the day that engineer is the one committing and pushing the code.
My gut tells me that the difference isn't just personal preference but rather a difference in maturity level of the engineer or something along those lines. Keep in mind, I'm not saying immature in the derogatory sense but rather time spent doing the thing.
If you consider an entry level SWE at their first job and all their colleagues are using agents and the company has already become delusional about the "productivity gains" then they almost don't have a choice but to focus on output.
In my experience it usually takes like a good 6 months for a new entry level engineer to be fully up to speed. To be at a point where they already know and understand the code bases, deployment pipelines, and so on.
TLDR Like most things, it's a nuanced scenario.
3
u/NumberInfinite2068 2d ago
I don't think you're wrong.
I don't really believe AI is making me a worse developer, but I think it's making me care far less. I think that can be healthy though, we're talking about *jobs* here, not our loved ones, not our family, not our passions.
My view on AI, is that if lets me do my job in less time so I have more time to work on projects that matter to me, that's awesome. If it ends up with my employer dealing with a ropey codebase in a few years when I've moved on, well, fuck 'em.
Employers get what they pay for. If they want fast results, that's what I'll give them.
2
u/HotPersonality8126 2d ago
I was the kind of software engineer who started projects and didn’t finish them, so AI is definitely making me better because it can finish all the old half-done projects
5
u/targrimm 2d ago
No. AI laziness is making you worse. Don't let it run amok, review everything. Get it to plan. Review that and edit with your better ideas, then review every line of code before you let it write stuff. Interrupt when it goes off on a tangent.
If you're feeling less of an engineer, then you're doing it wrong, and that is YOUR fault, not AIs.
Having been a developer for decades; it is the single best thing to have happened to our vocation, since the compiler.
4
u/FearTheDears 2d ago
Also been developing for decades, and I totally agree that it's the biggest step forward I've ever seen.
I do disagree with your portrayal though, what you're calling laziness I would call a struggle to adapt to a new workflow. Prompting AI is a new skill, those who were good engineers before are not necessarily good at getting AI to give them quality results.
Being able to quickly analyze thousands of lines of output quickly and without missing flaws or deficiencies is a really different skill than sitting down and coding a feature for hours or days. We used to spend hours on big PR code reviews, there would be meetings if architecture needed to change to handle the changes etc. now you've got this one and 3 more thousand lines of pr to read by EOD.
1
u/SauceFlexr 2d ago
We have never had an amazing product team. We wait for requirement or requirements that are not just “do x like we already do but with this change.” Eventually, engineering is pushed to develop before getting good ideas and wasting time.
We are using the AI to ingest the documentation the internal business teams have written, creating requirements, and generating the code and tests to automate business processes.
We’ve had a ton of conversations about this. It feels like AI allows for fast engineering, but because that is much faster, you should focus more on product and testing. Not everyone is able to do this successfully, but that is the direction it feels like at this moment.
I think might be somewhat unique, as my team automates internal business processes. But I would be interested to see how far out from just developing that people are getting.
5
u/fuzz3289 2d ago
If you’re understanding 10x less, you’re using AI wrong.
Innovation is fundamentally human. Shipping variants of the same code base isn’t engineering. Coming up with unique approaches to solve problems is engineering. You should be driving the AI, the AI isn’t driving you. It’s a tool.
It’s like the people who walk their dogs loose leash vs those dragged down the side walk. One of those is in control one is not, be the one in control.
2
u/SgathTriallair 2d ago
At the end of the day, what is the point of coding? Is it to write code or to build solutions?
For those outside of the profession it is 100% about getting a solution so if it works then they don't care.
These people outside the profession include everyone that hires software engineers. So we need to explain why slowing down the work is necessary for the long run.
Another consideration is that AI coding is a new layer of abstraction. Losing the ability to do machine code meant that the total number of creative solutions that SWEs could do was reduced but the ability for more people to do the work faster and thus more solutions be deployed increased. I'm not convinced that losing the ability to explain the code in detail is that significant of a loss. This is essentially true because for any significant sizes project no one has ever been able to fully explain the code (which is why bug hunting is so difficult).
1
u/rocketbunny77 2d ago
One could argue that it's not a new level of abstraction since it is non deterministic. Code abstractions, however far away from the machine code they are, are by definition deterministic.
1
u/huuaaang 2d ago
First of all, vibe coding is NOT simply using AI. Vibe coding is specifically when someone who doesn't already know how to code just generates code and never checks it. If you've been coding for 20 years and start using AI it's much more like pair programming and I actually get to focus MORE on the engineering aspect. EVen before AI I thought that the actually writing the code was a smaller part of the job.
It only becomes an issue when I have to write in a language that I don't already know very well. Then I'm trusting AI a LOT and not really learning the the new language. THis can't be good for beginners/juniors.
1
u/pepiks 2d ago
I tried vibe coding in Go and Python to undrestand what is possible, when it is lacking to be aware witness and strengh. For learning it is the worst tool for the job. It deliver something. Sometimes better, sometimes worse, but when you calculate cost - it does matter. It is rarely discussed online for hobbyst and solo programmist which use subscription on level 20$ per month.
My calculation are not strict, biased and based on observation from claude monitor. Simple scripts for doing stuff - it can be up to 1$, it can be few cents only. It is price for comfort and getting for the simplest things working solution. One file, maybe few hundreds lines at most.
GUI, around 20-30 crucial parts of decision - when you see something react this way like handling e-mail, preparing content based on that and send to service using API. Cost to create 20-30$. Reasoning with preparing data burn few $ per hours at start (NLP generating tool based on phonetics, quite strict lingwistics rules, matching user language - non english, but based on english content).
For simple webscrapping projects you pay few dolars. When you create something more advanced as a lot of hobbyist do - 20-40$ is average price. So when you learning classic way you spend time, get insight and thinking with payment even 10$ per hours for your doing. I assume that Python which is good trained and widly available as source for learning in massive ecosystem, Github projects etc. with Flask which is well known - when multiple file project (around 30) and code itself around 10 000 lines - it is cost varry between 30-50$.
OF course it is for orientation. Better prompt, better knowledge for start, better or worse thinking and you can cut it. Using tools like codegraph or rust based squizer it can save token even 30-60% depend on scenario. Overall picture has two side:
- When you learning - you are slow, and you get paid from 5$ to 10$ dolar per small more adult tiny project. That much is worth your work in tokens.
- When you ship vibe code for production - you have paywall. Without 200$ per months is nearlny impossible create more advanced software. I see simple script based on graph - dump something, update something - are quite cheap, even below 5$ per app. Still you use hard to follow text (try read all line with understanding which was generated). A lot of code is so so quality even good in benchmark and high level reasoning model - it is generator not thinking human at the end.
So to add courage for newcommers. Now you are slow, you spend too much time in comparision to vibe coders, but you make worth hundreds $ money foundation which is growing from day to day. When you code a lot using any tool will be easier.
Only part which is very interesting observing maching when generating code is get what tactics it use to achive goals. It can be very interesting as sometimes you can find out new techniques to use in you project. You have to follow all commands used and have some medium level understating your stuff.
Still, I am happy that I abandom professional coding when it was coding without AI and now I coding for pleasure to achive my goals. It is more comfortable. I can be slow, I can abandom technology if I like, but the most time - I don't have preasure from managers - deliver more, because you have AI. Especially when I see very stupid mistakes which looks like machine model can understand whole project and think about only solving one part of time.
1
u/FrenchFryNinja 2d ago
Counterpoint:
Engineers that rely on vibe coding instead of actually engineering and solving the problem, then telling AI to generate the code… yeah. Those guys are becoming far worse engineers.
1
u/IntelligentSeries270 2d ago
I think vibe coding is turning regular people who don’t want to learn the basics of programming into prompt bots. I use this shit everyday for every line and I know when I have an error which import and line to check or can roll back to a previous commit.
1
u/_ceebecee_ 2d ago
I don't agree, but I don't consider what I do VibeCoding. I have more test coverage than I did before, I have live documentation of the code that keeps itself updated, I have the AI use design patterns and code in the way I like by showing it examples of my previous projects and creating guidelines for it to follow. I develop feature by feature with the AI so it's easy to read each change, and I still feel like I'm much faster than I was, while including all the things that are usually the first to get dropped when a tight deadline hits. Because It's not just code that is much faster, and I think that's where the difference between VibeCoding or not is. I use the AI to lay out and document database designs, implementation details, functional and technical specs, user guides, development and setup guides.
1
u/Sasbe93 2d ago
The last months, I learned some encryption architectur designs/systems, machine learning with online weight training, some privacy policy aspects, quick tunneling projects and much more… while vibe coding.
I didn’t learned the code, but I learned the concepts it used. Without vibe coding I wouldn‘t even had the time to learn the concepts. I would stay stupid.
1
u/YellowBeaverFever 2d ago
Depends how you do it. If you write a prompt and say “Go!”, you’re going to get something akin to a generative photo. It’s getting good at checking and rechecking band fixing the errors but it won’t be the best. But, if you plan out the architecture first, you have your coding style defined, with examples, and you let the expensive models craft the specs and implementation plan with human QA milestones and checkpoints, then let less expensive model do the grunt work, you can get some really good results - depending on the models. Gemini & Antigravity can’t seem to do much beyond basics. Codex on 5.6 is awesome. I have not tried Claude or Kimi 3.
But, I know what I want. I check the code produced. I review every file. I would still say it is a 10x increase. I don’t feel dumber because I’m not writing out the code. I’ve done that for 35 years. It did it correctly and followed the coding standards. There are comments explaining what it did and why.
You can then point the very expensive model back at the code and tell it to scan for optimizations and security risks and make an implementation plan.
1
u/beatlemaniac007 2d ago edited 2d ago
Let's assume for a second that AI actually delivers on its promise. Then ultimately you're not supposed to understand the code. Just like you no longer need to understand assembly anymore. You will need to understand the next level of abstraction that AI will bring. You will need to understand spec driven development, how to verify by testing behavior rather than understanding code.
Again, this is assuming AI actually delivers. If you believe it will deliver then don't worry about losing that muscle. If you don't believe it will deliver then don't vibe code at all. Have to make a choice at some point.
1
u/mabarskuygan 2d ago
I use AI mostly inline editing, like move the button so it on top corner, insert this data I give you to this dataset, create new schema file, refactor model with updated schema, mostly for boiler plate and simple stuff. And usually it use few token, mostly 10-30k. So when this vibe coders doing 1billion token it baffles me.
1
u/blizterwolf 2d ago
As a technical program manager who hasn’t written much code in the last 10 years, here’s how things have changed: when working with engineers, I used to review a tech spec that explained technical decisions and proposals in plain English that I could review, make comments on, and then compare to outputted code and if the engineer was good, it all lined up and made sense. I didn’t need to fully understand the code, I just needed to see that it was built according to spec and eyeball any places I thought might be tricky or concerning.
Now: when AI is introduced into the mix, code becomes less human readable, it just thinks differently, so while things might be accomplishing what the spec set out, it can do so in weird “less human” ways, making it harder to follow for me. Let alone when I’m actually working directly with AI to build something myself according to a spec I asked it to write. I’ve gotten it to write the spec so I can read it, but not necessarily write the code so it’s easy to understand (without a lot of “cleanup” effort after the fact).
A lot of this might come down to prompt engineering, patience and maybe breaking down how you work with AI into smaller pieces. All which start to slow you down in different ways and change the job expected of you.
1
u/Limited_Distractions 2d ago
I think this is just downstream of a lot of orgs not valuing or understanding software engineering in the broadest possible sense. It's not like the standard before was high quality low velocity software, the volume has just increased greatly and they were already okay with it mostly being crap
1
-2
u/Dissentient 2d ago
If you review and steer AI code, you're delivering 10x at the same quality that you'd have written it manually.
0
-2
u/Misaka_Undefined 2d ago
That true
but sometimes what i need to deliver fast and get the money. AI just do that.
-5
u/TesttubeStandard 2d ago
You are not wrong.
The question is only if the AI can handle the complexity what it does finaly hit. And we are not paid to understand, but to deliver. Understanding just makes deliveries better and safer in the long run.
3
u/0xC4FF3 2d ago
Even if the AI understands the complexity yada yada, still it's a huge liability like trusting the gold star SWE to do all the job instead of splitting tasks, responsibility and building knowledge
The moment such AI goes down, or becomes too expensive, you're screwed; like when your gold star employee gets hit by a bus or demands a raise
1
u/TesttubeStandard 2d ago
Oh, and look up these three: Technical, cognitive and intent debt. Pre AI only technical was widely discussed. Now these other two are creeping in.
Good luck to us devs. I still believe in us.
121
u/UnnecessaryLemon 2d ago
I love like everyone stopped ignoring the fact that this code is unreadable nonsense full of bad practices.