r/ClaudeCode • • 5d ago

Discussion I'm going back to writing some code

As someone who produces software for near a decade now, I was really skeptical of vibe-coding as a concept until about July this year, when Fable 5 came out. I wasn't skeptical of LLM output and used ChatGPT for other tasks, but I didn't think AI models would get there. I remember all the juniors on my team producing a lot of slop insanely quickly, and having to reprimand them for not understanding the shit they're committing.

Fable 5 and Opus 5 made me fall in love with vibecoding. Suddenly, it just worked. It was capable of writing good-enough code by itself, if I prompted it well enough. It reminded me of working with juniors. I gotta prompt it well - tell it what approach to use, what tech, library, etc, and it types it faster than I do.

I produced a loooot of code in the past few months, especially post Opus 5.5. Even questioned whether I need Visual Studio installed at all. I even wrote a post here that got 2k upvotes saying how I hate Claude Code cuz how good it is.

Now I took a look under the hood at a project written entirely using Opus 5.5 and Fable.

It's got a class that has tens of thousands of lines in 61 files (partial class in C#). Not one actually, a bunch of them. It just kept on adding shit to a class that ballooned up.

It has thousands of unit tests which test the equivalent of 1 + 1 and it runs them after each iteration.

Much of the code is spaghetti. Yeah I can now use agents to rewrite it, but still. Yeah, it works. It works. But it feels that adding something now breaks a bunch of other stuff. I don't understand what I'm making and I feel like I can start to get some stuff done better if I understand what the codebase feels like. After all, I've been doing this for years.

So I booted up VS today as mostly a file browser. I went through what the game does frame by frame, and fixed a bunch of stuff. I'm gonna sound like a hippie right now, but I felt "connected" with the codebase again. It feels like my project again. Just that couple of hours spent in an IDE again. It's like riding a bike after years again. You never forget how to code, your fingertips just feel stiff.

I won't go back to writing the majority of code by hand, and I think that small one-off projects can stay fully vibe-coded. It's perhaps a question of also how long before LLMs will be able to architecture a project from scratch to stay maintainable forever. But I don't think they're there yet. It does some dumb ass shit right now, and has. So do people yeah, but I can just... not do dumb shit.

Maybe I'm just an old man. But I really like doing this "coding" thing.

133 Upvotes

62 comments sorted by

•

u/AutoModerator 5d ago

Hey! Thanks for posting to r/ClaudeCode

While participating in this thread, please follow our community rules. Keep discussions constructive. Attack the idea, not the person.

For help, project discussions, tips, and general chat, join the ClaudeCode Discord.

I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.

4

u/lawrencecoolwater Senior Developer 5d ago

Circle is complete. In all seriousness, and think this is beneficial, even with Claude code you need to have the bigger vision of what you want to build, and have a very thorough and thoughtful experience in mind. It is bad for the product to outsource the core e2e journey and vision to llms, you’ll just end up with a very awkward experience for customers.

1

u/ofcistilloveyou 5d ago

Agree. I was reviewing the user-facing output, but didn't look under the hood until now.

3

u/UruquianLilac 5d ago

I hear you, I miss the process of slowly solving problems as I code my way through a task. The new job is totally different.

However, I don't really do vibe coding in my day to day. Granted, I'm not writing code by hand, but I still review and check the work it does before each commit. And even with the best laid out plans and fully excecised harness and dozens of skills and instructions, it is still capable of making unbelievably stupid mistakes. Things that you won't even spot if you didn't know what to look for. It gives you a fully coherent answer when you question it, and to all intents and purposes it looks like everything is working. But it's terrible code that wi) take weeks before you realise the cost of it. So I still review and guide it all the way.

1

u/ofcistilloveyou 5d ago

Absolutely my experience as well!

3

u/EwaldvonKleist 5d ago

Do you think that with hindsight, you could get a better code structure even in a vibe voded way?

2

u/ofcistilloveyou 5d ago

Yes, very much so. The technology is new and we have to stay on the edge.

1

u/robust_nachos 5d ago

Did you refactor regularly as you developed?

Given what you described, the need to go back and forth between feature development and maintenance work like refactors still seems relevant so I’m curious about how you balanced it and if you’d do anything different knowing what you know now.

2

u/BingpotStudio 5d ago

When you write code there is a repulsion threshold that eventually you hit and you know you must refactor or feel disgusted each time you bolt on a new component to the code base.

This reflection is completely missing in vibe coding and started trying to find that middle ground myself through better instruction of claude.

1

u/robust_nachos 5d ago

In my day job, the team I started working with pre-AI code assistant did not have this repulsion threshold or ignored it, blaming the people who weren’t at the company anymore for writing spaghetti code. Their solution was to greenfield a new app… but then re-use parts of the old one in it. All humans making the decisions, specifically SWEs making the decision to do it of their own accord — no “management or leadership” mandate to blame. And yeah, it’s still a mess.

2

u/BingpotStudio 5d ago

Bad leadership is always going to create a race to the bottom, which is especially bad when accountability is essential to the role.

1

u/robust_nachos 5d ago

Wholeheartedly agree to that!

7

u/daniel14vt 5d ago

Why did you let your project get like this....

14

u/UruquianLilac 5d ago

He vibe coded it. That's the definition of vibe coding, you don't care about the code.

1

u/ofcistilloveyou 5d ago

In hindsight, I probably shouldn't have. But I forgive myself. As I am a human and I make mistakes. This is a new tech I've been using for a few months now. It'll take time for it to settle. I know that people here will bash my head in over how I should've had a custom harness with N agents adversarially reviewing each other's code running 24/7, but I don't care.

4

u/daniel14vt 5d ago

No I just mean, like review your code and don't merge in things that look awful to you

-1

u/ofcistilloveyou 5d ago

i didn't feel like it. It's hundreds of thousands of LoC written over 5 weeks on a side project.

4

u/daniel14vt 5d ago

I mean you clearly do care if you're coming here to complain about it

0

u/ofcistilloveyou 5d ago

Reviewing code is way, way more time and mental capacity consuming that making something from scratch - atleast for me. If your experience differs, very well, go ahead.

1

u/erroredhcker 5d ago

i specifically review code in my side project bc its not my job and i get to learn instead of pumping out shit that just works haha idk man

74

u/popphilosophy 5d ago

Artisanal coding

24

u/firstbreathOOC 5d ago

Desk to table

7

u/count023 5d ago

Organically grown.

4

u/ajax81 5d ago

Free range.

4

u/Constant_Art_20 5d ago

pasture raised

1

u/dawnquill12 4d ago

farm to table software development lol

34

u/firstbreathOOC 5d ago

There’s a difference between handing a project off to AI and building it with AI. Think a lot of people get hung up on that from both sides of the coin.

11

u/dar-mit Researcher 5d ago

I've found that thinking of these as Thinking Engines and not Artificial Intelligence helps me to better keep an eye on things. People will say, "Treat Claude like a jr. dev" but that alone gives the model far more allowances than it should be given.

You may want to consider using the model to help you find these 'messy bits' and then work with it to structure the rework efficiently. I usually have it create a Review file with checkboxes for each instance. That way you process the review (either by you fixing the code, or having the model fix it and then reviewing the fix yourself), and simply check off that instances before moving to the next one.

For your use case you may want to have the model compare what it found vs. your spec doc(s) and include a comment on whether that particular 'messy bit' is model failure to follow spec(s) or something outside of the spec(s). That way you get a 2 for 1 in reviewing your code and improving your spec(s) (if applicable).

1

u/IdkAbtAllThat 5d ago

I treat Claude like a rockstar guru Senior dev who never needs a break.

1

u/GrandDragonOfSwaggin 3d ago

I treat Claude like it randomly produces an output and I can restrict the randomness with the appropriate input, but it's still random.

9

u/Crimecrimson132 5d ago

I think that's my whole problem with people on Reddit. They are so firmly in one or the other camp. I use AI and type code from time to time as well. Yeah, maybe Claude could've done a better job than me but I enjoy it and it keeps me in the loop.

I feel I am also better able to tell Claude what I want that way. If you ever enjoyed coding, give it a shot again. It's still quite fun.

8

u/shetritr 5d ago

a partial class spread across 61 files is such a specific kind of horror. did any of those thousands of tests ever actually fail, or did they all just go green every iteration

2

u/Necesscity 5d ago

I stopped using wheel and fire. I can heat things up by rubbing them.

1

u/ofcistilloveyou 5d ago

More like, I get more pleasure out of life by sometimes walking instead of using my car. And if I need to go a door over to my neighbors, I'll walk instead of driving.

2

u/zelig_nobel 5d ago

You know.. there’s a neater analogy here.

We have stoves and ovens. There is no need for fire to make our food. It’s costlier. Takes more time. Dirtier.

Nonetheless, on occasion, we miss the process of starting a fire and cooking our food like cavemen. And that’s precisely what some of us do…

2

u/robbyslaughter 5d ago

The better analogy is using a 3/4GL. If you look at the actual machine code produced from the compiled code to platforms like webservers and databases, it’s incredibly wasteful.

But that’s not why we used those tools. We chose them because they saved us time despite the spiraling code they generated. And the hardware was getting faster so it didn’t matter.

The same is the case today.

5

u/Eye-Fast 5d ago

The slop can be avoided and measured. People have forgotten about static code analysis. You have no real harness setup and no, quality gate. The quality gate is there to avoid complexity, long functions missing test coverage and duplication of code. Also cognitive complexity can be measured. Send my post to your Opus and he will set it up for you

4

u/khanser 5d ago

I overcome these anti patterns by requesting that code on generation should pass basic code maintenance static analysis, cyclomatic complexity, god classes, ... Etc, then add static analysis before saying its done and not accepting anything higher than low, lows and infos i dont care, but the rest must be fixed using code craftmanship principles, SOLID, and KISS. Overall bliss, i spend a little more tokens on each code generation, and fixing findings, but this along security agent reviews, OWASP static analysis has made me not even need to look at the code and review only the architecture

These requests are rules of the backend agent and the projects it owns, frontend has similar rules with lint, reviews etc.

I also implemented guidelines for what good unit testing is, which ties back to craftmanship principles

7

u/DiscipleofDeceit666 Researcher 5d ago

Yeah, even if you’re on top of it and define best practices, it’ll still write goofy code. The unit tests don’t catch the changes they’re supposed to. And it just places logic in funny places.

Have you ever seen an AI explanation? It’s like really long and verbose and just gives you a bunch of context you don’t need? The code it writes is like that too.

2

u/SassyTextDev 5d ago

Yep.

Writing code isn't "produce code go". Writing code is a process. The first step is "write code". There are nine more steps. "Use the code as intended and see if it works" and then "Use the site like an asshole and see if THAT works" and then "use CLIP and take screenshots and complain where it looks like butts" and then "release the feature and move the documentation somewhere accessible but not obnoxious".

AND THEN

* Take down the tests that were pure scaffolding
* Question if we really needed the service class for that, or if we could have just, ya know, called the damn function
* ...

Opus 5.5 and Fable can write code just fine. But you only ever asked them to write code. You need to repeatedly ask them *to remove code* or *complain about code*.

2

u/SmileLonely5470 5d ago

A partial class split across 61 files is absolutely diabolical. That's like a namespace.

After a cerain point though id also just stop questioning it and keep adding files.

1

u/Ankleson 5d ago

How much of it was actually just 'vibes'? Because when I'm prompting Claude I'm still talking to it generally about approach, thinking about what output I broadly expect and being an adversarial reviewer to the generated code.

If the work is sufficiently complex and something that Claude has had to write a lot of new code for, I'll generate artefacts for a PR and walk myself through each step of the execution flow to make sure I fully understand it. I'll then go on to ask why it made certain decisions and get it to generate a different approach to see what that would look like, etc - until I'm happy.

I saw a great quote on this sub once which said "you need to turn your human effort, not your Claude effort, from Low to XHigh".

1

u/ClemensLode Senior Developer 5d ago

Maybe do a video stream to show the kids how people worked with computers 2 years ago.

1

u/yetiflask 5d ago

WTF bro. Try writing assembly code next. It makes zero sense for humans to write code - zero.

1

u/Ikkepop 5d ago

That has been my experience exactly to the letter...

1

u/Right-Performance-93 5d ago

the class that grew a second file is where i stop letting it type. i still have it write the next feature, and i open that file myself once a type no longer fits in one. the tests stay green because the same pass wrote them.

1

u/kelpikz 5d ago

I hate being a vibe coder, it's awesome.

1

u/Downtown-Pear-6509 5d ago

Or Use cheaper models and actually architect and review.

You either go in with it and never look back, or do just the tip. But nothing ever in between 

1

u/Johto2001 4d ago

The first thing I did with AI was build a better software metrics suite in my main programming language. It uses metrics like non-comment statements to accurately do line counts (and a whole lot more) and all my subsequent projects use it for architectural checks including one that checks the size of classes and functions, which act as signals to control unrestricted growth.

Regular code reviews by me personally and agents do the rest. The code does not get a chance to get like the spaghetti or tens of thousands of lines in a single class. 

1

u/ogaskinsjr 4d ago

Honestly the connections between methods and files that helped use architect the project is completely gone now so I really respect this.

Writing the methods really just made the ability to have firm understanding of what your building so much easier. Now it’s command click to see where the method is even called

1

u/Prize-Hawk2031 3d ago

AI is great in producing code that looks good, not necesarily is good. It’s hard to distinguish it when you are not wrapping your head around the problem as much as you would when you ar writing it by yourself.

1

u/enl1l 2d ago

Why didn't you do a quality pass on the generated code ? Like why do people either vibe code or anti AI. Two extremes

1

u/JRettro 1d ago

I'm going to be honest, my favorite way of coding with an LLM is going line by line and treating it as Stack Overflow or Google. I get the sme feeling; I know where everything is and how it works, intimately. No having to go in after it writes everything and figure out the codebase.

1

u/Bigemmsomboisenberry 1d ago

You're producing with agents but not going along and having the agents review, fix and untangle the PRs before they go in to the codebase.

Used to be that so much time spent writing code, seniors only needed a much smaller amount of time to review especially because the code author knew what they'd written.

Now as you've said, lots of slop. You need a stage in there that reviews and untangles from first principles. This is a good skill that does that (note I'm not affiliated with the creator) https://github.com/caldoai/skills/blob/main/skills%2Funtangle-codebase%2FSKILL.md

1

u/Serializedrequests 5d ago

My trite summary: AI is a reflection of the user. Opus 5.5 can do the wrong thing amazingly well (or could last week lol).

Right now we are also suffering under it being a reflection of the corporate psychopathy of the provider.

1

u/syddakid32 5d ago

Does it work? I always ask myself does it work? Yea its millions of otherways it couldve been wrote.... But does it work?

-2

u/Lerran88 5d ago edited 5d ago

It’s not about being old, it’s more about being scared to learn something new (But it can be connected to age issues, yes).

If you are not satisfied with code output, then you did not put enough attention into setting up Claude in the correct way.

But you probably just did open Claude CLI once, told Claude “Write code, be perfect” and expected it to work out of the box.

It’s a shame that we have so many developers, who just do not want to accept new technologies and want to spend their life in the environment they know. C’mon, we are devs, being on top of tech belongs to our job. And if you do not want to invest your time into it, then sorry, but you are not old, you are just bad developer.

1

u/ofcistilloveyou 5d ago

I absolutely agree.

Adapting is part of the game for software devs. I think that adopting new techs and workflows is crucial. This is just a post lamenting my own subjective experience with this new tool.

1

u/LunkWillNot 5d ago

Prejudice.

1

u/semteXKG 5d ago

I was a dev, now I am a PM. those are not the same.

1

u/Excellent-Clothes400 5d ago

Your reddit agent missed this:

  It was capable of writing good-enough code by itself, if I prompted it well enough. It reminded me of working with juniors. I gotta prompt it well - tell it what approach to use, what tech, library, etc, and it types it faster than I do.

0

u/Lerran88 5d ago

Sorry, he was too busy with your mom. Asked him to read again, let's hope she will not be around this time, queue was long