4 ms·
I'm going back to coding by hand
I have a successful app I built myself with a solid user base. I had been working on a new version via Claude on and off for about six months
In work we use LLMs exclusively. Nobody writes code anymore. It's all hands off and we have a high level understanding of how things work but no more than that.
When it comes to my side project, I was adding features at breakneck speed with Claude but I realized I have no clue how the new code works or what it changes or breaks. I spent many years of my life working on this project and I don't want to turn it into another vibe coded black box, especially without an org of other engineers to help.
So last night, I abandoned my Claude branch with all the fancy new things and started hand coding again.
It was very very satisfying. Sure, there was monotony. I changed some variable names and I had to chase down all the places they were referenced, comment out tons of stuff to get things working and then slowly bring it back in, but it felt like coming home to an untidy house after living in hotels for half a year, and starting to clean up. Yeah there's work to do, but this place is mine. My own. I know where things live.
It's given me love and energy for the project again (at least for now, I hope it continues!) and I'm delighted to say I took a good look at code I myself had written pre Claude and I still found many ways to write it better, refactor, make it more readable and efficient. I haven't forgotten.
If anyone is feeling the despair of not coding anymore, stairs you're losing your edge, I would suggest you ditch Claude for a few days at least and see how you feel. Your mileage may vary, but it's given me back something I thought was gone forever
- dphender 26d agoPlug 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 26d agoThe performance was never in question, it's the control I missed
- krapp 26d 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."
- deleted 26d ago[deleted]
- conartist6 26d agoWelcome 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
- yoz-y 26d agoPower 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.
- abstractspoon 26d agoGoog for you!
- dudewhocodes 26d agoWelcome back and godspeed.
- sgbeal 26d ago> I changed some variable names and I had to chase down all the places they were referenced, $ find . -name '*.c' -exec perl -i -pe 's/\btheOldName\b/theNewName/g' \{} \;
- sfn42 26d agoAny 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.
- donkey_brains 26d agoYeah 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 26d 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 26d 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.
- Tony_Delco 26d ago[dead]
- sfn42 26d agoIt'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 26d agoEven 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?'
- sfn42 26d agoThis 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 26d agoSo do you make the LLM restrict its output to small, individually-reviewable chunks per PR?
- sfn42 26d ago
- aatd86 26d agoUnfortunately 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 26d 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 26d agoWhy 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.
- aatd86 25d agoAI still does not do pattern matching the same way my brain works. I still see things that can be improved where the AI just go with what is most common. If I nudge it, it realizes it. If I don't, I get basic software. Just as I speak, it is reworking a UI compositor design, after I told it to use the reactive framework I have built for damage restoration, because in the end, this is a reactive problem. The implications, it drew on its own. But I had to nudge it.
- 26d ago
- spottedmarley 26d agoThe 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"?
- trencedamp 25d agoWell it's actually not, if you read my post you'd see that I use AI at work for everything, and I'm going back to hand coding for one of my more important side projects. I still use LLMs for less important work
- rf15 26d agoDid the same. First few days was like learning to walk from scratch again. Welcome back, programmer.
- pulkas 26d agoIf 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 26d 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.
- rajeasy 26d agonot going to easy after using agentic ai, as mind get used to it .not easy but best of luck.
- alphaentity 26d ago[flagged]
- dunefox 26d agoI'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 26d agoI hope I never have to use your software
- dunefox 25d agoI'm very certain you have used lots of software, either directly or indirectly, that has ai parts in it. The truth is, that it's quite reliable if done correctly. As if 'human written' software is somehow flawless.
- tp3358 25d agoBut you'll use the mediocre software written by hundreds of mediocre devs, and a team that doesn't fully understand the whole codebase due it's ever-inflated technical debt? I get the angst of AI coding, but it is funny that people think hand written code at scale is somehow not susceptible to all of the problems of code gen. A lot of it isn't artful - it's factory generated slop.
- dunefox 21d agoAlso, I'm checking all generated code, have tests, and have developed a concept that increases code correctness reliably. It works - as good or bad that fact might be.
- huurtehoog 26d agoIt'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 26d agoCoding 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 26d agoI 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.
- Chester2002 26d agoi think its important to do that as you might lose your skills if you only use AI!
- sejje 26d agoAll 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.
- harrisonsmith32 25d ago[dead]
- lolakutty 25d agoI never left, because I knew for a fact that this, what you describe, would be the ultimate eventuality.
- sshussain270 25d agoIt's very much like agriculture: once we figured it out, we settled and the population grew so fast that we couldn't go back to hunting and gathering and migrating again.
- ledo9915 24d ago[flagged]
- shetritr 24d agoI feel this too. It's not only that it's not your code it's that you miss it in your fingers. And I don't feel familiar with the code. I'm not sure I would have written it that way. Something feels off. Before, I knew every line, everything that was happening in the code. Now it feels like I'm not doing anything. I'm just telling it what to do, and I'm not sure it's mine.