Rendered at 16:51:01 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
aatd86 7 hours ago [-]
Unfortunately I can't do that. My projects are too big now.
In fact, this is how I deal with projects: I build the base manually and then I can iterate with AI faster once the fundamentals are solid.
Sometimes the AI tends to forget those fundamentals or tries to change those and add unnecessary stuff on top. If I stay invested in what the AI is doing, I can usually spot it and nudge the AI back to sanity.
That is how I think it should be done.
nisegami 5 hours ago [-]
>I build the base manually and then I can iterate with AI faster once the fundamentals are solid.
I've had tremendous success with this approach as well.
Towaway69 2 hours ago [-]
Why do we need humans in the loop, what exactly can’t be replaced by an AI in your workflow?
It sounds like having another AI telling the first AI not to “drift” away from the fundamentals would do the trick? Does this activity require some kind of super human abilities that can’t be done by an AI?
What exactly is it that gives satisfaction? Bossing around a junior developer or reviewing code generated by said junior. What's the point of being a “programmer” when one is really just some middle manager defining issues and pushing them out to a factory floor of digital monkeys.
If the satisfaction lies in role playing middle management then I can understand all the hype. Certainly it has nothing to do with programming any longer.
vablings 2 hours ago [-]
With rust a handwritten base sets the standards, and I feel like I have lower usage rolling the first few hundred lines of code and then gradually expanding rather than going in blind.
Also reverse engineering an existing product and using the information to map out behavior and structure is incredibly valuable
huurtehoog 4 hours ago [-]
It's the difference between doing something and asking for something to be done.
Forget all the technology involved. One of them is yours, you made it and know it. The other one is something you bought.
Quite literally, something phoned in.
ramank775 4 hours ago [-]
Coding used to be fun when in use to write things by hand, the complete project mental model was always used to there in mind. With LLM output has increased but that end to end mental model is lost. Nowadays I look for smaller tasks which doesn't touch multiple things and use them as treat to do my hand.
prplfsh 4 hours ago [-]
I still make time to write code by hand.
But I think it's really about finding the right abstraction. As a staff or principle engineer in the beforetimes, I also didn't understand most of the code being written by the org. I dove in where needed, but more importantly I found the right layer to understand what was going on - dependencies between teams and services, data flows and data models, etc. And where I found myself most effective was when I was shaping and understanding those effectively.
dunefox 5 hours ago [-]
I'm not. I just don't want to implement code for reading files, setting up and population databases, logs, etc. manually anymore. I want to automate boilerplate, the occasional frontend code, etc. and focus on the parts that are interesting for me. This way I can get things done that I wouldn't otherwise.
dosisking 5 hours ago [-]
I hope I never have to use your software
rf15 6 hours ago [-]
Did the same. First few days was like learning to walk from scratch again. Welcome back, programmer.
sgbeal 7 hours ago [-]
> I changed some variable names and I had to chase down all the places they were referenced,
Any half decent IDE will change them automatically for you, no need to chase them down. Just look at the git diff if you want to see where things changed.
sgbeal 2 hours ago [-]
> Any half decent IDE will change them automatically for you, no need to chase them down
It's long been my experience that that only works with high-level languages (specifically, those with bytecode), not C (especially once symbols are generated from macros). (OTOH, i've not touched an IDE in well more than 10 years.)
Also, it's long been my experience that any half-decent IDE is still a pale shadow of Emacs.
donkey_brains 5 hours ago [-]
Yeah this is a very very common and fundamental operation in programming. Always use the “refactor” tool in your IDE instead of trying to change every instance of a variable name by hand.
It’s like using a linter: you do it because it’s the right thing to do and doing it without the tool confers no benefit and is prone to error.
sgbeal 2 hours ago [-]
> Always use the “refactor” tool in your IDE instead of trying to change every instance of a variable name by hand.
That _is_ the refactoring tool in my IDE (emacs). i demonstrated replacing _all_of them at once, not replacing them each by hand.
> ... because it’s the right thing to do and doing it without the tool confers no benefit and is prone to error.
There was nothing in my post done "without the tool." Shell/find/perl _is_ the tool for C refactoring, and has been for decades.
exceptione 2 hours ago [-]
> i demonstrated replacing _all_of them at once, not replacing them each by hand.
Not really, that is search and replace. IDE's do typesafe refactoring. If you change the Find method in class A, you should only change occurences of x.foo(), where x has type A. You shouldn't accidentally change all B.find()'s.
That is my advice for everyone completing their first Python tutorial: learn a typed language next if you aspire to do serious work. It also saves you writing many manual tests that you had to make otherwise, as the compiler makes that superfluous. Plus your IDE becomes a superpower.
trencedamp 1 hours ago [-]
I normally would use find replace in vscode but I either forgot that existed or I was enjoying myself too much
dunefox 5 hours ago [-]
Not using an IDE in 2026?
sgbeal 2 hours ago [-]
> Not using an IDE in 2026?
Emacs. Uninterrupted since the 1990s.
yoz-y 9 hours ago [-]
Power to you!
I started building a Claude which retains some brain power. After each pass it ablates a function or a portion of code and forces you to write it out by hand. My hope is that I can get something that deals with boilerplate and makes me focus on the interesting stuff. We'll see.
dudewhocodes 7 hours ago [-]
Welcome back and godspeed.
sejje 2 hours ago [-]
All the stuff you did by hand, you could do with AI. You're not forced to abstract your way into not understanding your own product.
Chester2002 4 hours ago [-]
i think its important to do that as you might lose your skills if you only use AI!
conartist6 9 hours ago [-]
Welcome back! Despite all the prophecies of doom and gloom, little has changed.
You can still very much get ahead by working smarter not harder, even when working with your hands
rajeasy 5 hours ago [-]
not going to easy after using agentic ai, as mind get used to it .not easy but best of luck.
9 hours ago [-]
abstractspoon 8 hours ago [-]
Goog for you!
sfn42 7 hours ago [-]
It's a common complaint that people lose control of their codebase using LLMs. It always strikes me as odd, because this is a choice you make when you use the tool.
You don't have to just give it a task, let it do whatever it wants, then accept the result. You can tell it how to do things. You can read the changes. You can ask it to do things differently.
You choose to relinquish all control and then complain that you don't like not being in control. It's all about the level of involvement you choose for yourself. It's not all or nothing, you don't have to go full vibe coder it's a spectrum and you choose where you want to be on that spectrum.
sevenseacat 6 hours ago [-]
Even with manual reviewing, most of its changes will look relatively reasonable when approving every chunk... until you come across one that doesn't, and then it'll be a neverending chain of 'wait why tf does it do this? Why does it work this way?'
dunefox 5 hours ago [-]
Honestly, this is less of a problem with LLMs than with some colleagues I've had.
sfn42 6 hours ago [-]
This is not a problem I've had. I know roughly what I want before I ask for it, I make sure the result is roughly what I expected. Some times if I'm not entirely sure what I want I'll ask it to plan the change or suggest some approaches etc then choose the one I prefer.
For me it works great. My judgement is that I get things done significantly faster, and generally with comparable or better quality than I would doing it manually. It's important to lay a good foundation, if you are careful with the broad strokes it helps the LLM lay the rest down more consistently. It's also a lot easier to refactor things when the need becomes apparent.
donkey_brains 5 hours ago [-]
So do you make the LLM restrict its output to small, individually-reviewable chunks per PR?
sfn42 4 hours ago [-]
I generally prefer small increments yes but I don't shy away from larger changes where necessary. Just like everyone hated reviewing a 4000 line PR before LLMs, we all still hate it now, provided you actually do review things properly and not just tell Claude to do it or skim it lazily.
I wouldn't say I make the LLM restrict it's output, rather I'd say I just don't ask for a lot at once. If I want to create a new page in our web app I'll split it up into multiple tasks - create the new page with the required layout and add it to the navigation. Create a new component we need for this page, put it on the page so it can be tested. Create another component. Add an endpoint to the API for getting the necessary data. Use these existing components and the new ones to build the final page. At each step I test and verify that it works properly, and review the code to make sure it's reasonable. I might make several pull requests or just one depending on the size of the task and what makes sense to me. In general I want a PR to be testable, just a component isn't testable if it isn't used so it has to be used. I also don't do a PR that isn't production ready, so I won't submit a PR with just a test page.
If it's a very simple page where we have most or all necessary components I might just send a screenshot from Figma along with instructions to use existing components and what data to use, CSS variables and whatever else and have it try to one-shot it. I generally don't want a PR to have more than a few hundred lines total. I review and test the code at each step and finally I review the whole PR myself before submitting it to colleagues.
arkensaw 5 hours ago [-]
I don't think anyone chooses to relinquish all control from a project they've worked hard on. It's a slippery slope. You start with allowing it to help out a tiny bit, being in control and understanding the code the LLM writes, and then you become more confident in the results, and you trust it, and you don't read every line, and before long its refactoring an entire file by itself and you're not reading it.
And then you look up one day and you don't recognise the codebase
sfn42 5 hours ago [-]
I'm able to avoid slipping down that slope, just don't be lazy. If you look up one day and don't recognize the codebase that's because you haven't actually looked at it in a long time. Obviously when you don't pay attention you miss things. Just pay attention, it's not hard. There's plenty of time for it while Claude or whatever is working through stuff for you.
Tony_Delco 7 hours ago [-]
[dead]
alphaentity 5 hours ago [-]
[flagged]
pulkas 6 hours ago [-]
If your idea generation isn’t outpacing your implementation speed, coding by hand probably makes more sense. At least it keeps your brain engaged.
But the right move is to find a way to increase the rate at which you generate ideas and offload the coding almost entirely to AI. Because if you’re not doing that, someone else is. They’ll eventually build something better than your app.
And when people stop choosing your product, if you can’t come up with the next idea and this is your only source of income... well, good luck.
arkensaw 5 hours ago [-]
> If your idea generation isn’t outpacing your implementation speed
For me, it definitely is. Hell, my idea generation outpaces my ability to delegate it to agents. I can't do all the things I want to do because I don't have enough time in the day to vocalise them all, let alone hand code.
But in my case, I choose to handcode sometimes because I value the certainty of the results more than the speed of development.
It's the choice between a well-engineered application that does a handful of things reliably through a well-tested UI, or a rough-around-the-edges app that does 50 different things passably well, most of the time, with an inconsistent UI and lots of small bugs
People here might question the "lots of small bugs" but I have developed some apps solely with LLMs and despite using test-suites and spec-driven development I still face constant regression and UI bugs creeping in with every revision.
A good example - in React Native, in Android, Claude cannot keep the controls above where the onscreen nav appears, no matter how many times I ask it to. It'll solve it until three iterations later when the issue will return on another screen.
dphender 9 hours ago [-]
Plug Claude back into your cleaned up codebase.. Its performance may surprise you once again. Maybe the trick to keep our sanity is LLM only on the odd days of the week.
trencedamp 8 hours ago [-]
The performance was never in question, it's the control I missed
krapp 7 hours ago [-]
>Maybe the trick to keep our sanity is LLM only on the odd days of the week.
"I can quit any time I want to."
spottedmarley 7 hours ago [-]
The debate bothers me. Why anyone feels they need to only code one way or the other is strange. I do both. Actually, there are three options: By hand, hands off, and AI assistance while you code by hand. I'll do any of the three depending on what Im building or how I feel. Why does it have to be a hard line "Im not using AI anymore" or "I have to use AI for everything"?
That is how I think it should be done.
I've had tremendous success with this approach as well.
It sounds like having another AI telling the first AI not to “drift” away from the fundamentals would do the trick? Does this activity require some kind of super human abilities that can’t be done by an AI?
What exactly is it that gives satisfaction? Bossing around a junior developer or reviewing code generated by said junior. What's the point of being a “programmer” when one is really just some middle manager defining issues and pushing them out to a factory floor of digital monkeys.
If the satisfaction lies in role playing middle management then I can understand all the hype. Certainly it has nothing to do with programming any longer.
Also reverse engineering an existing product and using the information to map out behavior and structure is incredibly valuable
Forget all the technology involved. One of them is yours, you made it and know it. The other one is something you bought.
Quite literally, something phoned in.
But I think it's really about finding the right abstraction. As a staff or principle engineer in the beforetimes, I also didn't understand most of the code being written by the org. I dove in where needed, but more importantly I found the right layer to understand what was going on - dependencies between teams and services, data flows and data models, etc. And where I found myself most effective was when I was shaping and understanding those effectively.
It's long been my experience that that only works with high-level languages (specifically, those with bytecode), not C (especially once symbols are generated from macros). (OTOH, i've not touched an IDE in well more than 10 years.)
Also, it's long been my experience that any half-decent IDE is still a pale shadow of Emacs.
It’s like using a linter: you do it because it’s the right thing to do and doing it without the tool confers no benefit and is prone to error.
That _is_ the refactoring tool in my IDE (emacs). i demonstrated replacing _all_of them at once, not replacing them each by hand.
> ... because it’s the right thing to do and doing it without the tool confers no benefit and is prone to error.
There was nothing in my post done "without the tool." Shell/find/perl _is_ the tool for C refactoring, and has been for decades.
That is my advice for everyone completing their first Python tutorial: learn a typed language next if you aspire to do serious work. It also saves you writing many manual tests that you had to make otherwise, as the compiler makes that superfluous. Plus your IDE becomes a superpower.
Emacs. Uninterrupted since the 1990s.
I started building a Claude which retains some brain power. After each pass it ablates a function or a portion of code and forces you to write it out by hand. My hope is that I can get something that deals with boilerplate and makes me focus on the interesting stuff. We'll see.
You can still very much get ahead by working smarter not harder, even when working with your hands
You don't have to just give it a task, let it do whatever it wants, then accept the result. You can tell it how to do things. You can read the changes. You can ask it to do things differently.
You choose to relinquish all control and then complain that you don't like not being in control. It's all about the level of involvement you choose for yourself. It's not all or nothing, you don't have to go full vibe coder it's a spectrum and you choose where you want to be on that spectrum.
For me it works great. My judgement is that I get things done significantly faster, and generally with comparable or better quality than I would doing it manually. It's important to lay a good foundation, if you are careful with the broad strokes it helps the LLM lay the rest down more consistently. It's also a lot easier to refactor things when the need becomes apparent.
I wouldn't say I make the LLM restrict it's output, rather I'd say I just don't ask for a lot at once. If I want to create a new page in our web app I'll split it up into multiple tasks - create the new page with the required layout and add it to the navigation. Create a new component we need for this page, put it on the page so it can be tested. Create another component. Add an endpoint to the API for getting the necessary data. Use these existing components and the new ones to build the final page. At each step I test and verify that it works properly, and review the code to make sure it's reasonable. I might make several pull requests or just one depending on the size of the task and what makes sense to me. In general I want a PR to be testable, just a component isn't testable if it isn't used so it has to be used. I also don't do a PR that isn't production ready, so I won't submit a PR with just a test page.
If it's a very simple page where we have most or all necessary components I might just send a screenshot from Figma along with instructions to use existing components and what data to use, CSS variables and whatever else and have it try to one-shot it. I generally don't want a PR to have more than a few hundred lines total. I review and test the code at each step and finally I review the whole PR myself before submitting it to colleagues.
And then you look up one day and you don't recognise the codebase
But the right move is to find a way to increase the rate at which you generate ideas and offload the coding almost entirely to AI. Because if you’re not doing that, someone else is. They’ll eventually build something better than your app.
And when people stop choosing your product, if you can’t come up with the next idea and this is your only source of income... well, good luck.
For me, it definitely is. Hell, my idea generation outpaces my ability to delegate it to agents. I can't do all the things I want to do because I don't have enough time in the day to vocalise them all, let alone hand code.
But in my case, I choose to handcode sometimes because I value the certainty of the results more than the speed of development.
It's the choice between a well-engineered application that does a handful of things reliably through a well-tested UI, or a rough-around-the-edges app that does 50 different things passably well, most of the time, with an inconsistent UI and lots of small bugs
People here might question the "lots of small bugs" but I have developed some apps solely with LLMs and despite using test-suites and spec-driven development I still face constant regression and UI bugs creeping in with every revision.
A good example - in React Native, in Android, Claude cannot keep the controls above where the onscreen nav appears, no matter how many times I ask it to. It'll solve it until three iterations later when the issue will return on another screen.
"I can quit any time I want to."