Spending 3 months coding by hand
Posted by evakhoury 18 hours ago
Comments
Comment by apricot 11 hours ago
Now, they are programming a chip from the seventies using an editor/assembler that was written in 1983 and has a line editor, not a full-screen one.
We had a total of 10 hours of class + lab where I taught them about assembly language and told them about the registers, instructions, and addressing modes of the chip, memory map and monitor routines of the Apple, and after that we went and wrote a few programs together, mostly using the low-resolution graphics mode (40x40): a drawing program, a bouncing ball, culminating in hand-rolled sprites with simple collision detection.
Their assignment is to write a simple program (I suggested a low-res game like Snake or Tetris but they can do whatever they want provided they tell me about it and I okay it), demo their program, and then explain to the class how it works.
At first they hated the line editor. But then a very interesting thing happened. They started thinking about their code before writing it. Planning. Discussing things in advance. Everything we told them they should do before coding in previous classes, but they didn't do because a powerful editor was right there so why not use it?...
And then they started to get used to the line editor. They told me they didn't need to really see the code on the screen, it was in their head.
They will of course go back to modern tools after class is finished, but I think it's good for them to have this kind of experience.
Comment by pipes 30 minutes ago
As a sort of an adjacent point, I worked through a book that is used on a course often called "from nand to Tetris". It is probably the best thing I've done, in terms of understanding how computers, assemblers and compilers work
Comment by zrobotics 9 hours ago
I've had other people look askanse at me, but on greenfield work I tend to start with pen and graph paper. I'm not even writing pseudocode, but diagramming a loose graph with potential functions or classes and arrows interconnecting them. Obviously this can be taken too far, full waterfall planning will be a different exercise in frustration.
I find spending a few hours planning out ahead of time before opening an editor saves me tons of time actually coding. I've never had a project even loosely resemble the paper diagram, but the exercise of thinking through the general structure ahead of time makes me way more productive when it comes time to start writing code. I've tried diagramming and scaffolding in my editor, but then I end up actually writing code instead of big picture diagramming. Writing it on paper where I know I'll have to retype everything anyway removes the distractions of what method to use or what to name a variable.
The few times I've vibe-coded something this was super helpful, since then I can give much more concrete and focused prompts.
Comment by spockz 3 hours ago
All this to say that it is extremely useful to have the program and the problem space in your head and to be able to reason about it before hand. It makes it clearer what you expect and easier to catch when something unexpected happens.
Comment by andersmurphy 1 hour ago
If you're prepared to forgo some portability and pick an architecture assembly opens up a lot if options. Things like coroutines, automatic SIMD become easier to implement. It's also got amazing zero cost C FFI (and I'm only half joking). Linux kernel booting into a minimal STC Forth is a lot of fun.
Not to mention you can run your code on android without SDK or NDK over ADB (in the case of aarch64).
Comment by hiroboto 36 minutes ago
Comment by andersmurphy 5 minutes ago
Comment by drzaiusx11 10 hours ago
Today I program 6502/7 asm for my Atari to help me unwind and it grounds me and gives me joy, while in my day job I'm easily 10 levels of abstractions higher.
Comment by p2detar 1 hour ago
As someone that used to write C and Assembly programs on a sheet of paper for university exams, I chuckled a bit. I finished university in post-soviet country twenty years ago or so and this was the norm. I used to hate it so much.
Comment by mchaver 42 minutes ago
Comment by tikotus 2 hours ago
But a few hours (or days) in, I forget what the problem was. A part of my brain wakes up. I start thinking about what I'm passing around, I start recognizing the types from the context and names...
It's just a different way of thinking.
I recognized the same feeling after vibe coding for too long and taking back the steering wheel. I decided I'd never let go again.
Comment by wffurr 9 hours ago
https://www.gnu.org/fun/jokes/ed-msg.html
My first job out of university I was taught how to use a line editor in IBM UniData. It was interesting getting used to writing code that way.
But it was an amazing day when I discovered that the "program table" was just a directory on the server I could mount over FTP and use Notepad++.
Comment by cobbzilla 7 hours ago
Comment by sagacity 5 hours ago
Comment by TeMPOraL 1 hour ago
Comment by s1mplicissimus 2 hours ago
Comment by juliendorra 1 hour ago
Comment by MattBearman 4 hours ago
Comment by ChrisMarshallNY 8 hours ago
I am currently working in Swift, with an LLM, on a fairly good-sized app, in Xcode, for a device that probably has a minimum of 64 GB of storage, and 8 GB of RAM.
I don’t really miss the good ol’ days, to be honest. I’m having a blast.
Comment by flawn 11 hours ago
Comment by sitzkrieg 4 hours ago
scaring people away w x86 cruft right out the gate is no good for anyone :-)
Comment by MaxBarraclough 1 hour ago
Comment by philipnee 10 hours ago
Comment by ssgodderidge 10 hours ago
Comment by apricot 7 hours ago
Comment by sixtyj 3 hours ago
Comment by sixtyj 1 hour ago
Comment by AstroBen 12 hours ago
But yeah my hunch is "the old way" - although not sure we can even call it that - is likely still on par with an "agentic" workflow if you view it through a wider lens. You retain much better knowledge of the codebase. You improve your understanding over coding concepts (active recall is far stronger than passive recognition).
Comment by fouronnes3 8 hours ago
Comment by estetlinus 4 hours ago
Comment by bdangubic 8 hours ago
Comment by lionkor 3 hours ago
This is bogus. If you think LLMs write less buggy software, you haven't worked with seriously capable engineers. And now, of course, everyone can become such an engineer if they put in the effort to learn.
But why not just use the AI? Because you can still use the AI once you're seriously good.
Comment by vaginaphobic 1 hour ago
Comment by jb1991 2 hours ago
Comment by saulpw 6 hours ago
Comment by cppluajs 4 hours ago
Comment by ksymph 4 hours ago
I hope if/when diffusion models get a little more traction down the line it'll put some new life into autocomplete(-adjacent) workflows. The virtually instantaneous responses of Inception's Mercury models [0] still feel a little like magic; all it's missing is the refinement and deep editor integration of Cursor.
On the subject of diffusion models, it's a shame there aren't any significant open-weight models out there, because it seems like such a perfect fit for local use.
Comment by heyalexhsu 9 hours ago
Comment by oneeyedpigeon 3 hours ago
Comment by AstroBen 6 hours ago
Comment by resonancel 4 hours ago
Comment by bluefirebrand 6 hours ago
Comment by justapassenger 6 hours ago
Comment by latexr 21 minutes ago
Comment by orphea 5 minutes ago
Comment by otabdeveloper4 3 hours ago
Yes, AI unlocks coding for people who fail FizzBuzz. This isn't really relevant to making software though.
Comment by HDThoreaun 5 hours ago
Comment by 59nadir 1 hour ago
I think most people "moved on" because they both thought the agent workflow is cooler and were told by other people that it works. The latter was false for quite some time, and is only correct now insofar that you can probably get something that does what you asked for, but executed exceedingly poorly no matter how much SpecLang you layer on top of the prompting problem.
Comment by wavemode 4 hours ago
> Everyone moved on
> it is not a useful interface
You've made three claims in your brief comment and all appear to be false. Elaborate what you mean by any of this?
Comment by lkirkwood 5 hours ago
I just wish I knew of a good Emacs AI auto complete solution.
Comment by allthetime 4 hours ago
Comment by elAhmo 10 minutes ago
Comment by sph 4 hours ago
Comment by mchaver 38 minutes ago
Comment by andersmurphy 51 minutes ago
The shark is being jumped.
Comment by zombot 1 hour ago
Comment by tikotus 2 hours ago
Comment by Remdo 1 hour ago
Comment by orphea 2 minutes ago
Comment by temporallobe 9 hours ago
Comment by andsoitis 4 hours ago
For me it was GW-BASIC and no editor as we know them today.
That was instant gratification, rapid development, no silly layers. It was pretty pure. It is what hooked me.
In a sense, agentic coding, has brought back the excitement to building software for me because I don’t have to wrangle all the crazy enterprise or other modern development considerations directly. There’s a closer connection between thought and result, which is what was the magic that captured my imagination.
Comment by kolleykibber 56 minutes ago
Comment by mindcrime 10 hours ago
Comment by scarface_74 10 hours ago
Someone thought I was naive when I said my vibe coded internal web admin site met the security requirements without looking at a line of code.
I knew that because the requirements were that anyone who had access to the site could do anything on the site and the site was secured with Amazon Cognito credentials and the Lambda that served it had a least privileged role attached.
If either of those invariants were broken, Claude has found a major AWS vulnerability.
Comment by Terr_ 9 hours ago
Suppose that in normal use a user can visit a certain URL which triggers a dangerous effect. An attacker could trick the user into performing the action by presenting a link to them titled "click here for free stuff."
There are various ways to protect against that (e.g. CORS, not using GET methods) but backend cloud credential management does not give it to you for free.
Comment by scarface_74 8 hours ago
The lambda itself only has limited permissions to the backend. The user can’t do anything if the lambda only has permission to one database and certain rights to those tables, one S3 bucket, etc.
Heck with Postgres on AWS you can even restrict a Cognito user to only have access to rows based on the logged in user.
And the database user it’s using only has the minimum access to just do certain permissions.
Comment by mindcrime 4 hours ago
Do they? Did you write them? If not, how do you know they confirm the desired behavior? If your tests are AI generated (and not human reviewed) then even if you're doing spec-driven development and provide a comprehensive spec, how can you be sure the tests actually test the desired behavior?
Now if you're either writing or reviewing the tests, then sure.
Also, for what it's worth, when I talk about my "responsibility" I'm speaking more from a self-imposed sense of... um, almost a moral responsibility I feel, not something involving a 3rd party like a customer or employer.
Comment by sgarland 9 hours ago
Comment by imtringued 1 hour ago
When I use SAML, I still have to check that the user has some sort of attribute that indicates that access was granted to the application. If this access rule is defined outside the application, then why bring up Claude? If it isn't then Claude is responsible for implementing the access rule, which means the comment is 100% wrong.
Comment by losvedir 9 hours ago
Comment by scarface_74 8 hours ago
Comment by dinkumthinkum 5 hours ago
Comment by Refreeze5224 6 hours ago
Comment by phaser 12 hours ago
Then, when credits run out. It’s show time! The code is neatly organized, abstractions make sense, comments are helpful so I have a solid ground to do some good old organic human coding. I make sure that when i’m approaching limits I’m asking the AI to set the stage.
I used to get frustrated when credits ran out because the AI was making something I would need to study to comprehend. Now I’m eager to the next “brain time hand-out”
It sounds weird but it’s a form of teamwork. I have the means to pay for a larger plan but i’d rather keep my brain active.
Comment by brianush1 7 hours ago
That's an interesting thing to include. I agree with this point in principle, but I've found that Claude, at least, duplicates logic FAR too often and needs nudging in the other direction.
Comment by deaux 3 hours ago
You hit on a very important point here. The linked AGENTS.md is a bad idea for general purpose use because the things it's meant to tackle, including an inherent bias towards or against DRY, is one of the big differences between model families. GPT 5.4 Codex has a very different "coding personality" from Claude Opus.
It's a product of whatever model it was tested on.
Comment by neonstatic 4 hours ago
I can't do it. If I let an LLM write code for me, that code is untouchable. I see it as a black box, that I will categorically refuse to open. If it works, I use it, but don't trust it. If it breaks, I get frustrated. The only way that works for me is me behind the driving wheel at all times and an LLM as an assistant that answers my questions. We either brainstorm something or it helps me express things I know in languages syntax. Somehow that step has always been a bit of a burden for me - I understood the concepts well, but expressing them in syntax was a bit of a difficulty.
Comment by stringfood 4 hours ago
Comment by hgomersall 4 hours ago
Comment by neonstatic 2 hours ago
Comment by Moonye666 4 hours ago
Comment by Moonye666 4 hours ago
Comment by flawn 11 hours ago
Comment by birdfood 11 hours ago
Comment by ACS_Solver 10 hours ago
Once upon a time we wrote code in assembly language. Then we moved to C or other compiled languages. Assembly programming remained a very useful but niche skill. You compile your code and trust the compiler. You can examine the compiler output and that is at times necessary, but that's not something most developers know how to do.
We may be looking at something similar. Most development work moving to the LLM abstraction level, with the skills being writing good prompts, managing the context window, agents, memories and so on. Some developers will be able to examine LLM generated code and spot problems there, but most will not have that skill.
I'm not sure how to feel about it. Since ChatGPT showed up and until a couple months ago, I was firmly skeptical of LLM programming. We had new models every few weeks and I felt like each new model is just a different twist on the same low quality slop output. But recently the models seem to have crossed some threshold where their capabilities really improved and I have now used Claude - still using it sparingly - to implement features in much less time than I'd need myself or to locate a bug based on just log output. I don't yet buy the "coding is solved" hype but we're at least looking at the biggest change to programming since the adoption of high-level programming languages.
Comment by derangedHorse 11 hours ago
I saw this quote when looking at the Recurse Center website. How does one usually go about something like this if they work full time? Does this mainly target those who are just entering the industry or between jobs?
I know the article is mostly about what the author built at the coding retreat, but now he has me interested in trying to attend one!
Comment by nicholasjbs 10 hours ago
Most folks do RC between jobs, either because they quit their job specifically to do RC or because they lost their job and then decide to apply. Other common ways are as part of a formal sabbatical (returning either to an industry job or to academia), as part of garden leave, or while on summer break (for college and grad students). We also get a fair number of freelancers/independent contractors (who stop doing their normal work during their batches), as well as some retirees.
Some folks use RC as a way to enter the industry (both new grads and folks switching careers), though the majority of people who attend have already worked professionally as programmers.
We've had people aged 12 to early 70s attend, though most Recursers are in their 20s, 30s, and 40s.
Comment by wonger_ 10 hours ago
Unless you can swing a six week sabbatical and return to your current job
Comment by fouronnes3 13 hours ago
Comment by culi 12 hours ago
Comment by gregsadetsky 13 hours ago
Comment by tossandthrow 13 hours ago
Comment by beej71 10 hours ago
Comment by linzhangrun 7 hours ago
Comment by brianjlogan 12 hours ago
I am seeing non technical people getting involved building apps with Claude. After the Openclaw and other Agentic obsession trends I just don't see it pragmatic to continue down the road of AI obsession.
In most other aspects of life my skills were valuated because of my ability to care about details under the hood and the ability to get my hands dirty on new problems.
Curious to see how the market adapts and how people find ways to communicate this ability for nuance.
Comment by fouronnes3 8 hours ago
This would probably require cooperation during model training, but now that I think of it, is there adversarial research on LLM? Can you design text data specifically to mess with LLM training? Like what is the 1MB of text data that if I insert it into the training set harms LLM training performance the most?
Comment by dougiejones 7 hours ago
Comment by andsoitis 4 hours ago
Maybe there’s another way…
Comment by inerte 8 hours ago
Maybe text that costs a LOT of tokens. Very, very verbose. I think if there are rules and on the internet, LLMs can eventually figure it out, so you have to make it expensive.
Another way would be to go offline. Never write it down, only talk about it at least 50 meters away from your phone. Transmitted through memory and whisper.
Comment by mswphd 8 hours ago
Comment by imtringued 1 hour ago
Comment by ButlerianJihad 7 hours ago
Comment by myst 33 minutes ago
Comment by abcde666777 11 hours ago
But when it comes to the final act I find myself unwilling to let an LLM write the actual code - I still do it myself.
Perhaps because my main project at the moment is a game I've been working on for four years, so the codebase is sizable, non-trivial, and all written by me. My strong sense even since coding LLMs showed up has been that continuing to write the code is important for keeping it coherent and manageable as a whole, including my mental model of it.
And also: for keeping myself happy working on it. The enjoyment would be gone if I leaned that far into LLMs.
Comment by bschwindHN 10 hours ago
Despite what some might say, there isn't a big moat between those who use LLMs for programming and those who don't. So if I ever truly need to use LLMs to survive, I'll just have to start paying for a subscription.
In the meantime, I'll be keeping my own skills sharp and see how that turns out in a few years. I'm afraid software quality is going to take a nosedive in the near future, it was already on a downward trend.
Comment by linkregister 12 hours ago
I remember writing BASIC on the Apple II back when it wasn't retro to do so!
Comment by ludr 12 hours ago
Comment by bitwize 11 hours ago
I still keep hoping there'll be a glut of demand for traditional software engineers once the bibbi in the babka goes boom in production systems in a big way:
https://m.youtube.com/watch?v=J1W1CHhxDSk
But agentic workflows are so good now—and bound to get better with things like Claude Mythos—that programming without LLMs looks more and more cooked as a professional technique (rather than a curiosity or exercise) with each passing day. Human software engineers may well end up out of the loop completely except for the endpoints in a few years.
Comment by serbrech 10 hours ago
Comment by lrvick 13 hours ago
What scares the shit out of me are all these new CS grads that admit they have never coded anything more complex than basic class assignments by hand, and just let LLMs push straight to main for everything and they get hired as senior engineers.
It is like hiring an army of accountants that have never done math on paper and exclusively let turbotax do all the work.
If you have never written and maintained a complex project by hand, you should not be allowed to be involved in the development of production bound code.
But also, I feel this way about the industry long before LLMs. If you are not confident enough to run Linux on the computer in front of you, no senior sysadmin will hire you to go near their production systems.
Job one of everyone I mentor is to build Linux from scratch, and if you want an LLM build all the tools to run one locally for yourself. You will be way more capable and employable if you do not skip straight to using magic you do not understand.
Comment by adamddev1 12 hours ago
It's not though. It's fundamentally different because TurboTax will still work with clear deterministic algorithms. We need to see that the jump to AI is not a jump from hand written math to calculators. It's a jump from understanding how the math works to another world of depending on magic machines that spit out numbers that sort of work 90% of the time.
Comment by bluefirebrand 11 hours ago
They probably wouldn't think that the calculator makes them faster either
Comment by layer8 10 hours ago
Comment by thesz 12 hours ago
If we assume that there are 50 weeks per year, this gives us about 400-500 lines of code per week. Even at long average 65 chars per line, it goes not higher than 33K bytes per week. Your comment is about 1250 bytes long, if you write four such comments per day whole week, you would exceed that 33K bytes limit.
I find this amusing.
Comment by raincole 4 hours ago
In what way? You're either very young or very old, right? Voice-to-text has been a common way to input text online since iPhone. Someone commented on HN != they typed that many words with their fingers.
Comment by thesz 2 minutes ago
If the person I replied do use voice-to-text, their mention of carpal syndrome is moot and this is amusing. If they do not use voice-to-text, it is still amusing in the sense of my previous comment.
Comment by slopinthebag 12 hours ago
Comment by thesz 11 hours ago
My software engineering experience longs almost 37 years now (December will be anniversary), six-to-seven years more than Earth's human population median age. I had two burnouts through that time, but no carpal tunnel syndrome symptoms at all. When I code, I prefer to factor subproblems out, it reduces typing and support costs.
Comment by lrvick 10 hours ago
That said, I am also actively experimenting with VTT solutions which are getting quite good.
Comment by slopinthebag 10 hours ago
Comment by sho_hn 12 hours ago
So only the old hands allowed from now on, or how are we going to provide these learning opportunities at scale for new developers?
Serious question.
Comment by hallway_monitor 12 hours ago
Comment by SlinkyOnStairs 12 hours ago
Employers were already refusing to hire juniors, even when 0.5-1 years' salary for a junior would be cheaper than spending the same on hiring a senior.
They'll never accept intentionally "slower" development for the greater good.
Comment by jacobsenscott 11 hours ago
That comes post Chernobyl.
Comment by 8note 11 hours ago
my last summer intern did everything the manual way, except for a chunk where I wanted him to get something done fast without having to learn all the underlying chunks
Comment by lrvick 12 hours ago
Always happy to mentor people at stagex and hashbang (orgs I founded).
Also being a maintainer of an influential open source project goes on a resume, and helps you get seen in a crowded market while boosting your skills and making the world better. Win/win all around.
Comment by sho_hn 12 hours ago
Comment by rafaelmn 12 hours ago
I don't think SWE is a promising career to get started in today.
Comment by mwwaters 12 hours ago
But pro-AI posts never seem to pin themselves down on whether code checked in will be read and understood by a human. Perhaps a lot of engineers work in “vibe-codeable” domains, but a huge amount of domains deal with money, health, financial reporting, etc. Then there are domains those domains use as infrastructure (OS, cloud, databases, networking, etc.)
Even where it is non-critical, such as a social media site, whether that site runs and serves ads (and bills for them correctly) is critical for that company.
Comment by 8note 11 hours ago
you dont notice it when you are only looking at your own harness results, but the llm bakes so very much of your own skills and opinions into what it does.
LLMs still regurgitate a ton.
Comment by lrvick 12 hours ago
We have a completely broken internet with almost nothing using memory encryption, deterministic builds, full source bootstrapping, secure enclaves, end to end encryption, remote attestation, hardware security auth, or proper code review.
Decades of human cognitive work to be done here even with LLM help because the LLMs were trained to keep doing things the old way unless we direct them to do otherwise from our own base of experience on cutting edge security research no models are trained on sufficiently.
Comment by jazz9k 11 hours ago
I suppose it's like bandwidth cost in the 90s. At some point, it becomes a commodity.
Comment by teruakohatu 12 hours ago
That is exactly been the situation for years. Once graduated accountants are not doing maths. They are using software (Exel, Xero etc.). They do need to know some basic formulas eg. NPV.
What they need to know is the law, current business practices etc.
Comment by einpoklum 11 hours ago
If that's true, then you likely used to produce slop for code. :-(
> I did things the old way for 25 years and my carpal tunnels are wearing out.
You wrote so much code as to wear out your carpal tunner? Are you sure it isn't the documentation and the online chatter with your peers? :-(
... anyway, I know it's corny to say, but - you should have, and shoudl now, improve the ergonomics of your setup. Play with things like the depth of your keyboard on your desk, the height of the chair and the desk, with/without chair handrests, keyboard angle, etc.
> Job one of everyone I mentor is to build Linux from scratch
"from scratch" can mean any number of things.
Comment by lrvick 10 hours ago
Local models are quite good now, and can jump right in to projects I coded by hand, and add new features to them in my voice and style exactly the way I would have, and with more tests than I probably would have had time to write by hand.
Three months ago I thought this was not possible, but local models are getting shockingly good now. Even the best rust programmers I know look at output now and go "well, shit, that is how I would have written it too"
That is a hard thing to admit, but at some point one must accept reality.
> anyway, I know it's corny to say, but - you should have, and shoudl now, improve the ergonomics of your setup. Play with things like the depth of your keyboard on your desk, the height of the chair and the desk, with/without chair handrests, keyboard angle, etc.
I already type with colemak on a split keyboard with each half separated and tented 45 degrees on a saddle stool, with sit/stand desk I alternate. I have read all the research and applied all of it that I can. Without having done all that I probably would have had to change careers.
> "from scratch" can mean any number of things.
As far as I know I was the first person alive to deterministically build linux from 180 bytes of machine code, up to tinycc, to gcc, to a complete llvm native linux distribution.
When I say from scratch, I mean from scratch. Also, all of this before AI without any help from AI, but I sure do appreciate it to help with package maintenance and debugging while I am sleeping.
Comment by moomin 12 hours ago
> 15 years of Clojure experience
My God I’m old.
Comment by mattdecker100 11 hours ago
Comment by fallingfrog 12 hours ago
Comment by wulfstan 4 hours ago
My ex business partner said “AI won’t take your job, but the person who uses it will”. I don’t agree. The person who isn’t reliant on AI is the one you should really be afraid of.
Comment by bigfishrunning 7 hours ago
Comment by epx 11 hours ago
Comment by bschwindHN 10 hours ago
Comment by delbronski 12 hours ago
Comment by AstroBen 11 hours ago
This is exactly how you learn to create better abstractions and write clear code that future you will understand.
Comment by civvv 1 hour ago
Comment by bluefirebrand 11 hours ago
Comment by pizzafeelsright 11 hours ago
I do the former for fun. The latter to provide for my family.
There is a reason old men take on hobbies like woodworking and fixing old cars and other stuff that has been replaced by technology.
Comment by joewongg 6 hours ago
Comment by huflungdung 30 minutes ago
Comment by dang 10 hours ago
(I swapped the title for the subtitle earlier because I thought it was more informative. What I missed was the flamebaity effect that "the old way" would have. Obvious in hindsight!)
Comment by sho_hn 13 hours ago
Comment by justonceokay 12 hours ago
Comment by phoronixrly 13 hours ago
Comment by tayo42 11 hours ago
Comment by SrslyJosh 11 hours ago
You mean the way that the majority of code is still written by professionals?
Comment by sayYayToLife 10 hours ago
Comment by biglio23 11 hours ago
Comment by edjgeek 12 hours ago
Comment by LeCompteSftware 12 hours ago
> There were 2 or 3 bugs that stumped me, and after 20 min or so of debugging I asked Claude for some advice. But most of the debugging was by hand!
Twenty whole minutes. Us old-timers (I am 39) are chortling.
I am not trying to knock the author specifically. But he was doing this for education, not for work. He should have spent more like 6 hours before desperately reaching for the LLM. I imagine after 1 hour he would have figured it out on his own.
Comment by Gigachad 12 hours ago
Though a lot of the time this is more an inefficiency of the documentation and Google rather than something only LLMs could do.
Comment by nyarlathotep_ 11 hours ago
Comment by alemwjsl 12 hours ago
* Ask someone to come over and look
* Come back the next day, work on something else
* Add comment # KNOWN-ISSUE: ...., and move on and forget about it.
But year spent days on a bug at work before ha ha!
Comment by moregrist 12 hours ago
This is a tried and true way of working on puzzles and other hard problems.
I generally have 2-4 important things in flight, so I find myself doing this a lot when I get stuck.
Comment by ignoramous 10 hours ago
Just a note that, for chronic procrastinators, having 2 to 4 important things going on is a trigger & they'd rather not complete anything.
I wonder, for such folks, if SoTA LLMs help with procrastination?
Comment by justonceokay 12 hours ago
Comment by calvinmorrison 11 hours ago
Comment by j1elo 11 hours ago
This can be set as far as 1h of being stuck. Can also be 5 minutes. But by default it is 30 seconds.
My inner kid was screaming "that's cheating!" :-D but on second thought it is a very cool feature for us busy adults, however it's sad the extremes that gamedevs have to go in order to appease the short-term mindless consumers of today's tik-toks.
But more seriously, where's the joy of generating long-standing memories of being stuck for a while on a puzzle that will make you remember that scene for 30 years? An iconic experience that separates this genre from just being an animated movie with more steps.
I couldn't imagine "Monkey Island II but every 30 seconds we push you forward". Gimme that monkey wrench.
TFA and this comment just made me have this thought about today's pace of consumption, work, and even gaming.
Comment by usernametaken29 11 hours ago
Comment by BodyCulture 3 hours ago
Comment by sho_hn 12 hours ago
Comment by Tanoc 9 hours ago
If anyone remembers middleschool mathematics this is the coding example of the teacher making you write out the equations in their longest form instead of shortcutting. It's done this way because it shows you your exact train of thought and where you went wrong. That sticks in your head. You understand the problem by understanding yourself. Giving up after twenty minutes instead of stopping, clearing your active cognitive load, and then coming back erases your ability to understand that train of thought.
For a comparison it's like being in first person view in a videogame, and the only thing you have is the ability to look behind you, versus being able to bring up a map that has an overhead view. In first person you're likely to lose where exactly you went to get where you are, while with the overhead view map you can orient your traveled route according to landmarks and distance.
Comment by JuniperMesos 11 hours ago
Comment by demorro 11 hours ago
Comment by YesBox 10 hours ago
So, the short of it is that this is a great insightful comment that I can back up with my own experience in making a game from scratch over the last 4+ years.
Comment by Jtarii 11 hours ago
If you want to solve the problem quickly then just use the resources you have, if you want to become someone who can solve problems quickly then you need to spend hundreds of hours banging your head against a wall.
Comment by bhelkey 11 hours ago
Comment by noosphr 11 hours ago
Comment by bigfishrunning 7 hours ago
Comment by thrance 11 hours ago
Comment by dinkumthinkum 5 hours ago
Comment by bsder 8 hours ago
2) There are different levels of debugging. Are your eyes going to glaze over searching volumes of logs for the needle in a haystack with awk/grep/find? Fire up the LLM immediately; don't wait at all. Do the fixes seem to just be bouncing the bugs around your codebase? There is probably a conceptual fault and you should be thinking and talking to other people rather than an AI.
3) Debugging requires you to do a brain inload of a model of what you are trying to fix and then correct that model gradually with experiments until you isolate the bug. That takes time, discipline and practice. If you never practice, you won't be able to fix the problem when the LLM can't.
4) The LLM will often give you a very, very suboptimal solution when a really good one is right around the corner. However, you have to have the technical knowledge to identify that what the LLM handed you was suboptimal AND know the right magic technical words to push it down the right path. "Bad AI. No biscuit." on every response is NOT enough to make an LLM correct itself properly; it will always try to "correct" itself even if it makes things worse.
Comment by agdexai 1 hour ago
For haystack-style debugging (searching logs, grepping stack traces), a fast cheap model with large context (Gemini Flash, Claude Haiku) is more cost-effective than a frontier model. For the conceptual fault category you mention — where you actually need to reason about system design — that's when it might be worth paying for o3/Claude Opus class models.
The friction is that most people default to whatever chatbot they have open, rather than routing to the right tool. The agent/LLM tooling space has gotten good enough that this routing is automatable, but most devs haven't set it up yet.
Comment by th0ma5 11 hours ago
Comment by derangedHorse 11 hours ago
Comment by Trasmatta 12 hours ago
Comment by encrux 12 hours ago
Having a tool that instantly searches through the first 50 pages of google and comes up with a reasonable solution is just speeding up what I would have done manually anyways.
Would I have learned more about (and around) the system I‘m building? Absolutely. I just prefer making my system work over anything else, so I don’t mind losing that.
Comment by Trasmatta 12 hours ago
Comment by glhaynes 12 hours ago
Comment by LeCompteSftware 12 hours ago
Just so many confusing things go wrong in real-world software, and it is asinine to think that Mythos finding a ton of convoluted memory errors in legacy native code means we've solved debugging. People should pay more attention to the conclusion of "Claude builds a C compiler" - eventually it wasn't able to make further progress, the code was too convoluted and the AI wasn't smart enough. What if that happens at your company in 2027, and all the devs are too atrophied to solve the problem themselves?
I don't think we're "doomed" like some anti-AI folks. But I think a lot of companies - potentially even Anthropic! - are going to collapse very quickly under LLM-assisted technical debt.
Comment by chasd00 11 hours ago
Comment by jjice 11 hours ago
The euphoria I felt after fixing bugs that I stayed up late working on is like nothing else.
Comment by mapontosevenths 11 hours ago
Comment by voidfunc 12 hours ago
If you cant fix the bug just slop some code over it so its more hidden.
This is all gonna be fascinating in 5-10 years.
Comment by seanw444 12 hours ago
Comment by SlinkyOnStairs 12 hours ago
But for juniors, it's invaluable experience. And as a field we're already seeing problems resulting from the new generations of juniors being taught with modern web development, whose complexity is very obstructing of debugging.
Comment by badc0ffee 11 hours ago
I worked on a project that depended on an open source but deprecated/unmaintained Linux kernel module that we used for customers running RHEL[1]. There were a number of serious bugs causing panics that we encountered, but only for certain customers with high VFS workloads. I spent days to a week+ on each one, reading kernel code, writing userland utilities to repro the problem, and finally committing fixes to the module. I was the only one on the team up to the task.
We couldn't tell the customers to upgrade, we couldn't write an alternative module in a reasonable timeframe, and they paid us a lot of money, so I did what I had to do.
I'm sure there are lots of other examples like this out there.
[1] Known for its use of ancient kernels with 10000 patches hand-picked by Red Hat. At least at the time (5-10 years ago).
Comment by z500 11 hours ago
Comment by dinkumthinkum 5 hours ago
Comment by echelon 12 hours ago
The time wasted thinking our craft matters more than solving real world problems?
The amount of ceremony we're giving bugs here is insane.
Paraphrasing some of y'all,
> "I don't have to spend a day stepping through with a debugger hoping to repro"
THAT IS NOT A PROBLEM!
We're turning sand into magic, making the universe come alive. It's as if we just got electricity and the internet and some of us are still reminiscing about whale blubber smells and chemical extraction of kerosene.
The job is to deliver value. Not miss how hard it used to be and how much time we wasted finding obscure cache invalidation bugs.
Only algorithms and data structures are pure. Your business logic does not deserve the same reverence. It will not live forever - it's ephemeral, to solve a problem for now. In a hundred years, we'll have all new code. So stop worrying and embrace the tools and the speed up.
Comment by Trasmatta 11 hours ago
This is both a strawman and a false dichotomy.
Comment by echelon 11 hours ago
Too many of our engineering conversations are dominated by veneration of the old. Let me be hyperbolic so that I can interrupt your train of thought and say this:
We're starting to live in the future.
Let go of your old assumptions. Maybe they still matter, but it's also likely some of them will change.
The old ways of doing things should be put under scrutiny.
In ten years we might be writing in new languages that are better suited for LLMs to manipulate. Frameworks and libraries and languages we use today might get tossed out the door.
All energy devoted to the old way of doing things is perhaps malinvested into a temporary state of affairs. Don't over-index on that.
Comment by i2km 10 hours ago
Comment by dinkumthinkum 5 hours ago
Comment by raw_anon_1111 11 hours ago
Comment by raw_anon_1111 11 hours ago
But just today a bug was reported by a customer (we are still in testing not a production bug). I implemented this project myself from an empty git repo and an empty AWS account including 3 weeks of pre implementation discovery.
I reproduced the issue and through the problem at Claude with nothing but two pieces of information - the ID of the event showing the bug and the description.
It worked backwards looking at the event stream in the database, looking at the code that stored the event stream, looking at the code that generated the event stream (separate Lambda), looking at the actual config table and found the root cause in 3 minutes.
After looking at the code locally, it even looked at the cached artifacts of my build and verified that what was deployed was the same thing that I had locally (same lambda deployment version in AWS as my artifacts). I had it document the debug steps it took in an md file.
Why make life harder on myself? Even if it were something I was doing as a hobby, I have a wife who I want to spend time with, I’m a gym rat and I’m learning Spanish. Why would I waste 6 hours doing something that a computer could do for me in 5 minutes?
Assuming he has a day job and gets off at 6, he would be spending all of his off time chasing down a bug that he could be using doing something else.
Comment by grebc 11 hours ago
If you’re experienced as you are, you’re not learning the same way a junior assigned this might learn from it.
Comment by raw_anon_1111 11 hours ago
I also used Codex and asked questions about how the codebase worked to refresh my own memory. Why wouldn’t a junior developer do the same?
I mentioned that I had Codex describe in detail how it debugged it. It walked through each query it did, the lines of code it looked at and the IAC. It jogged my memory about code I wrote a year ago and after being on other projects
Comment by grebc 9 hours ago
Just because it worked this time doesn’t mean it always will.
If you need further explanation of why you might want to spend more time resolving a bug to learn about the systems you’re tasked with maintaining then I’m at a loss sorry.
Comment by scarface_74 8 hours ago
Comment by grebc 4 minutes ago
Comment by LeCompteSftware 11 hours ago
But he was doing this for education, not for work.
That's why he should spend 6 hours on it, and not give up and run to the gym. That's like saying "I shouldn't spend an hour at the gym this week, lifting weights is hard and I want to watch TV. I'll just get my forklift to lift the weights for me!"Comment by raw_anon_1111 10 hours ago
Comment by daneel_w 11 hours ago
Comment by mchusma 13 hours ago
Comment by idle_zealot 13 hours ago
Why would you think that? The landscape is fast-moving. Prompting tricks and "AI skills" of yesterday are already dated and sometimes actively counterproductive. The explicit goal of the companies working on the tech is to lower the barriers to entry and make it easier to use, building harnesses and doing refinement that align LLMs to an intuitive mode of interaction.
Do you think they'll fail? Do you think we've plateaued in terms of what using a computer looks like and your learnings for wrangling the agents of this year will be relevant for whatever the new hotness is next year? It's a strong claim that demands similarly strong argument to support.
Comment by aerhardt 13 hours ago
How? I just open multiple terminal panes, use git tree, and then basically it’s good old software dev practices. What am I missing?
Comment by bensyverson 12 hours ago
Comment by LeCompteSftware 12 hours ago
Comment by baq 13 hours ago
Comment by onair4you 13 hours ago
Claude Opus is going to give zero fucks about your attempts to manage it.
Comment by bdangubic 12 hours ago
Comment by sd9 13 hours ago
It is hard indeed. I find it really quite exhausting.
Personally, I feel like I have always been a very competent programmer. I'm embracing the new way of working, but it seems like quite a different skillset. I somewhat believe that it will be relevant for a long time, because there is an incredibly large gap in outcomes between members of my team using AI. I've had good results so far, but I'm keen to improve.
Comment by sdevonoes 13 hours ago
For the good stuff, there’s no alternative but to know and to have taste. Llms change nothing.
Comment by the_gipsy 12 hours ago
Comment by dyauspitr 12 hours ago
Comment by slopinthebag 13 hours ago
Comment by dinkumthinkum 5 hours ago
Comment by zingababba 13 hours ago
Comment by Marazan 13 hours ago
Citation needed.
Comment by fsckboy 11 hours ago