80 pointsby mpweiher2 hours ago37 comments
  • f311a34 minutes ago
    This does not sound fun. It's better to work on your side projects with manual coding. You will learn more.

    Retyping things is inefficient for learning. It's like trying to retype calculus solutions — you don't learn from it. Even if there is an explanation of why the code is written in such a way, you did not come up with it, and you don't know alternative solutions. It is a practice for memorizing, not for building your intuition.

    A better option is to write it yourself first and ask LLMs for better options. They are pretty good at it, especially when you need to optimize hot loops.

    • ainch30 minutes ago
      I'm not sure I agree about retyping calculus solutions. I often find that writing out a proof or derivation forces me to engage with some minor detail that I hadn't fully appreciated beforehand. That usually raises productive questions.
      • WJW16 minutes ago
        In which case it would be the engagement with minor details that does the productive work. Retyping is merely a gateway to (sometimes) trigger the engagement.

        The solution in TFA feels like an on-ramp to cargo culting somehow; observing that manual typing and good results often go together, but then thinking that it's the typing that directly causes the good results rather than the thought process that accompanied the typing.

        There's a much better article hiding inside the current one that's titled "Prevent cognitive debt by understanding deeply the code that your LLM spits out", but that sounds like hard work and would probably not be very popular. It's much better for audience engagement to provide a simple solution that anyone can do and does not require a lot of deep thought like "manually retype everything the LLM generated", even if it doesn't actually work.

      • mathgeek20 minutes ago
        Retyping calculus solutions is a great way to remember your LaTeX.
    • rootsudo2 minutes ago
      For fun I typed out code from old old magazines and it taught me quite a few things.

      Also essays too and other texts non code from llm or books, it helps.

    • jdiff27 minutes ago
      Writing reinforces. You won't learn from blind uncomprehending rewriting, sure, but when you already know the field, writing gives you the space to comprehend and digest. Certainly more than copying and pasting or blind acceptance of generated code. It doesn't have to be fun to be better.
    • 14 minutes ago
      undefined
    • trentor28 minutes ago
      I had fun and also learned a lot when I retyped programs from magazines back in the day. I am not sure if it's suitable now but there is certainly some merit to the idea.
  • wahernan hour ago
    Good advice yesterday, good advice today, and good advice tomorrow.

    I don't remember if I read this advice or just intuited it myself (perhaps after some hard lessons), but it's a programming habit I've kept for as long as I can remember (I started coding in the 90s). If I feel rushed, e.g. someone looking over my shoulder, and I copy+paste something, it always leaves me with a sense of unease. It creates a memory & comprehension hole that sticks out like a sore thumb, even for seemingly simple snippets. You can't really be sure it's simple without stepping through it carefully, and simple can be deceptive because it's usually the interactions and assumptions wrt surrounding code that lead to surprises. Typing out code manually gives you time and space to consider the broader picture.

  • petcat18 minutes ago
    > manually retyping LLM-generated code

    This is just a miserable career of "paint-by-number" because people can't be bothered to have a creative thought about their professional work or programming hobbies.

    Software developers think that they are being clever with these kinds of strategies to "keep their skills sharp", but unfortunately the entire industry knows about this, and especially the upper management who are already eliminating these assembly line, JIRA-ticket-taker software jobs en masse.

  • jspdown10 minutes ago
    I never had so little free time as I have these days. Most of my time is spent at work or with my lovely family.Love my family, and work is great.

    The thing is that, probably like many of you, I love going deep in a side project, even if it lands nowhere. With so little time, working on them has become a very frustrating activity.

    This is where I found my trap... do more with very little time by delegating to an LLM. You get dopamine shots, the feeling of achieving something but the cognitive dept is just crazy. So much that the activity becomes almost meaning less. After couple of months doing this, I'm not even sure it's a good use of this time. I get very little satisfaction on the long run.

    I don't have a solution to this problem, not even sure there one. I think I have to accept that this is an activity that takes time, and only time gives the real gratification.

  • sltr10 minutes ago
    I am also worried about "cognitive debt". I hardly remember what I had Claude do, even hours later. Back in May, I advised of a similar mitigation, citing the "generation effect" as the reason typing the code would make you remember it better:

    > For your next ticket or feature, engage with your LLM as you normally would to produce a design and implementation plan, but with that plan in hand, make the mechanical edits yourself...You can expect this to improve your knowledge retention compared to merely reading a diff. You want to go slower now so that later you can go at all.

    https://www.slater.dev/2026/05/type-your-code/

  • a21289 minutes ago
    As someone who, at a point, would copy homework from someone else, copy book reports from online, and use the answer sheets to complete assignments, I can tell you this strategy is long known to accumulate and not prevent cognitive debt
  • bandrami43 minutes ago
    As an aside, back in the days of Stack Exchange I would always type out manually whatever answer I found to make sure I understood WTF I was adding to the system.
  • jruzan hour ago
    What I did is kinda similar, I downgraded to $20 plan and just ask questions and almost never let it write the code, and if I can I use the web ui like the good old days and not spend my CLI tokens.
  • r0ze-at-hn19 minutes ago
    When I was younger and took over a codebase I open it up in one window and then type it back into another window. Not only did I catch/fix a crazy number of bugs, but I became a near expert overnight. Doing the typing would cause me to question everything, ask why we import something, why x is used and not y, etc.

    I also tried where I would print out the code (with color) and then go read it with a red pen. Faster and similar results of forcing me to be able to read it enough to be "an editor" to the code.

    And I have done the same for LLM-generated code and text, back in '23 this meant more taking their so-so output and then turning it into my own, but between now and then come up with a number of techniques to improve the AI output to more acceptable out of the gate so more learning than being inspired.

    These are good techniques as it causes your own brain to rapidly learn the material, but no matter how good it is I have never met anyone else that does it so the real ponderable is assuming that everyone else doesn't do this and what does that mean?

  • K0nserv39 minutes ago
    I'm taking a slightly different approach. I've started a project where I intentionally don't use agentic coding. I use LLMs for researcher and to learn, but write all the code by hand.

    The goal is to maintain the taste, for lack of a better word, that I've developed over decades of programming.

    Claude put me on to the concept "Étude", so I've taken to calling it my Étude project.

  • 17 minutes ago
    undefined
  • Kim_Bruning16 minutes ago
    Manually typing in code is an underappreciated trick in a lot of circumstances. It's one of the fastest ways to get to grips with a certain piece of code, a new library, or some methodology.

    This was true when I first learned to program, and is still true today. And I do find myself manually typing in really critical code. In those cases even if I do have an LLM alongside these days, LLM suggestions also then get manually typed.

  • gste20 minutes ago
    I already wrote my opinion on this, which I don't think anyone read, but my idea is to let AI code the working system, and then prompt it to teach you, give you challenges, and grade your work.

    If you write, you should write in your own words, to demonstrate your own understanding - the so-called Feynman technique. Never verbatim. That's as true for coding as it is for study notes.

  • baalimago22 minutes ago
    "Prevent sub-optimal code by manually retyping compiler-generated assembly"

    I don't think this is a practice which will be sustainable for very long

  • pcwelder22 minutes ago
    The most I enjoy working with AI is my special workflow.

    I ask it to plan the feature in a separate worktree.

    In parallel I start coding without being biased by AI and vice versa.

    At some point I read its plan and iterate on it all the while I am in implementation mode. This helps me improve my own vision.

    Finally I ask the AI to review my implementation. It flags off bugs and gaps which are usually straightforward for it to fix.

  • m4xp19 minutes ago
    Hard disagree, it's proven that its the actual discovery process that's makes us improve at tasks. Blindly typing will make you just good at typing.

    I do think there is absolutely no way a learner should be using ai for code generation. I think code analysis is the only acceptable usecase.

  • ArekDymalski19 minutes ago
    I wonder how effective it finally will be. At first glance it reminds me painting by numbers a d I'm not sure if that will help the real painter to keep his skills and surely won't teach aspiring painter much about the craft.
  • throwthrowuknow22 minutes ago
    Pair programming with the LLM is a better approach. You can take either role and even take turns. It’s slower but gives ample time to read everything and push back on decisions or receive feedback and review on your own decisions.
  • daun_geean hour ago
    This is a new form of prayer for those who can't break their religious addiction to LLM code generators.
    • frankcan hour ago
      It could easily be the other way around - religious addiction for people can't let go of the code.
      • podgietaru16 minutes ago
        I don’t think so, because it’s being used as a way to try to remedy one of the new problems brought in by agentic coding - loss of context of what code does.
      • 36 minutes ago
        undefined
  • ozgrakkurtan hour ago
    You are cooked if you can’t actually write better code than llm. Try reading some books or documentation
    • mystifyingpoi21 minutes ago
      What is "better code"?
    • jdw64an hour ago
      I think there are far more people who can't write better code than an LLM. Of course, there are a few exceptions, but it's a fact that LLMs are already handling PhD-level mathematics and papers.

      I also think I write better code than an LLM in certain areas, but in most programming domains, the LLM knows more than I do across many dimensions. As prompts get deeper, LLMs are already producing PhD-level code—and that's been shown in research. The vast majority of people don't have that level of education. Of course, having a PhD doesn't guarantee good coding, but at least it's clear that LLMs can handle that level of capability.

      People might disagree, but my view is firm on this.

      • maccardan hour ago
        > I also think I write better code than an LLM in certain areas, but in most programming domains, the LLM knows more than I do across many dimensions.

        Remember that the quality of the LLMs code in the areas you don’t know is as good as the quality as the area you do know. You’re only able to gauge the quality of what you do know.

        • jdw6416 minutes ago
          Your main target seems to be the view that software quality is a matter of 'aesthetic intuition,' but I see it differently. I think because it's 'engineering,' there must be measurable indicators.

          Executable specifications

          Unit, integration, and property tests

          Official API documentation

          All of these provide ways to judge quality. There are so many metrics that the problem is actually choosing which ones to use.

          1.Does it produce output A for input B? 2.Can it process 100,000 records within 5ms? 3.Is memory usage within the defined limit? 4.Does the protocol handle error conditions properly?

          You don't need to be an expert to test these. People forget that programming is one of the few fields where judgment criteria can be easily translated into machine executable tests.

          The biggest problem with epistemological objections is that they often assume a binary: 'experts can judge, non-experts cannot.' But in reality, it's a continuous process.

          You run the code, notice something odd, look up the terminology, compare it with official documentation and reference implementations, add tests, and gradually build up judgment in that area. Rewriting LLM generated code compresses that entire learning curve.

          In the past, entering an unfamiliar domain meant starting from a blank file and reading documentation. Now, you start with a working hypothesis and modify it. That's far cheaper than starting from scratch.

          If you treat LLM generated code as executable teaching material and a falsifiable hypothesis, it's a very powerful resource.

          I feel uncomfortable when people reduce programming to aesthetic quality alone. We were all trained to measure things.

        • jdw6442 minutes ago
          >You’re only able to gauge the quality of what you do know.

          That's not true. You can follow the logic step by step, search for similar domains, and form a comparison group.

          Realistically, if we take this logic to its conclusion, it's like asking: 'You're just a spectator, so can you really judge whether a football player is good at football?

          Realistically, LLMs write code well. I'm a C# programmer, and as you know, the current trend in modern programming is to refine error handling—using try/catch at higher layers, working with monads, preserving computable contexts, and branching accordingly. That kind of code typically takes 1 to 2 hours of modeling before you even start writing.

          But an LLM can do it in just 5 minutes.

          So I think the opposite way: if LLMs can do this well in a domain I'm familiar with, they're probably just as capable in other domains too. And that makes them feel trustworthy.

          And more importantly, no matter how great a human programmer is, once you step outside your domain, you're in unknown territory. In those areas, LLMs are surprisingly helpful.

          Epistemologically, it might be true that you can't evaluate code in a domain you don't know. But people keep forgetting the fact that you can learn through that code. This very post is itself an example of learning through LLM-typed code.

          And programming actually provides clearer results than many other domains. It's not based on subjective UX like UI design. You have:

          1.Executable specifications

          2.Performance measurements

          3.Comparisons with official documentation

          These are clear engineering outcomes that allow for objective comparison. For example, you can verify whether a program produces results within 5ms when executed.

          Many epistemological arguments tend to overlook this.

          A lot of code is open source. You can find mature implementations anywhere. Finding a repo from someone claiming 10 or 20 years of experience and running a differential comparison is not difficult at all."

  • klaussilveira41 minutes ago
    Whenever I don't know something, I ask it for a tutorial, programming-magazine style. Then I just follow the tutorial.
  • witx41 minutes ago
    We're leaving in such a stupid time.
  • docheinestages44 minutes ago
    If you can afford it, why not. For certain phases of projects like a proof-of-concept, you need to move fast and validate several ideas. Once it's locked down, rewrite from scratch, and here, if you can afford it, type or write the code manually.
  • dsignan hour ago
    I like the "cognitive debt" term. With the latest models, what I've observed is that they are really good, but I don't use them to write main code because I need to know what I'm doing.

    The article is not wrong though that it pays off to have some imagination on how to use the models. For example, I want to use SIMD instructions in an ESP32-P4 CPU. Those instructions are undocumented for the most part, with just a couple of handwavey blog posts and some infuriatingly vague marketing material. So I just asked an LLM to create a `SIMD_P4.md` document with all the details. Lo and behold, it practically reverse-engineered the ISA. Now I can program in assembler by hand all I want and build that skill in my own brain, and whenever I find a slightly unclear op in the document, I ask the LLM to refine the documentation in that op.

  • nzxt210an hour ago
    Nice workflow! I'll give it a try. I'm struggling with building mental model of AI-generated code. And code review fatigue is real. This may be the way.
  • KSteffensen24 minutes ago
    Why use LLMs at all if you're doing this?
  • utopiahan hour ago
    If you copy/paste code from a teaching book, you will probably not learn as well as if you type it.

    Typing itself is irrelevant, it is the timing spent, even if only seconds, pondering at what each word or syntactic element is and why use it.

    Being slower does not automatically make you learn better, focus on the learning is what makes the difference.

    If you don't have the opportunity to learn, the time to actually think, then a faster tool is not helping.

    TL;DR: what matters is why you are doing something, is it solely to get the task done or is it primary to learn, or both?

  • Garlef29 minutes ago
    nah thanks;

    my workflow:

    - ask not only for a solution to a problem but also for specific code (= tell the agent about your mental model of the codebase)

    - ask for small stacked 'PRs/branches' and review/refactor heavily also using the agent (= refine your mental model of the codebase)

  • jatins18 minutes ago
    I don’t disagree with this if you code for a hobby.

    Buy if you code for a job, good luck justifying this to management. “Yeah Claude already gave me the solution, I’ll take the rest of the week to type it out”

  • dncornholio21 minutes ago
    I just give them smaller tasks
  • orangecoffeean hour ago
    But this way you move way slowly even on personal projects, like you will not even get the basic UI for the app done in a few days? Is that OK for you?
    • voidUpdatean hour ago
      Depends what they're doing... I can crack out a basic UI in a few hours at my job, and I don't use LLMs at all, and I wouldn't class myself as an expert developer or anything
    • pringk02an hour ago
      It is meant to offset not knowing why everything degrades and you can't make progress after the first month. Is that OK for you?
      • orangecoffeean hour ago
        No you misunderstand me. I support such a view but cannot hold it because my pace at work is so much fast. And hand coding like this will make personal projects s slow and choreful with no visible progress. Like where is the joy in that?
        • regularfry22 minutes ago
          The bottleneck is very rarely the typing.
      • user43928an hour ago
        Has this been your first hand experience?

        And if so, in what work, and have you tried debugging issues with SOTA models?

        From my experience it is certainly not the case that you cannot make progress after the first month.

        I work on native mobile applications.

        • noodletheworld38 minutes ago
          I work on mobile native applications.

          Without an active harness (eg. Appium) that can end-to-end deterministically verify the changes you make continue to work correctly it is almost impossible to continue to keep the same pace on the app.

          Unsupervised LLMs (even fabel) are categorically incapable of running parallel unsupervised mobile app feature development.

          That is my personal, first hand experience working in a team in this space.

          What you are (I guess?) experiencing is user-in-the-loop light touch LLM development where you can 80% most tasks quite quickly (much faster than without assistance!) with a small number of human developers working on largely unrelated features and manually verifying they are correct and manually fixing the platform specific issues you encounter.

          Maintaining a strong appium end-to-end test suite is still extremely challenging with notifications and maps.

          Honestly, it blows my mind you could even being to claim that of all things, native apps using obscure languages like swift are suitable for this, compared to the much much easier path of web + react.

          You might say “yeah yeah, but one month? Come on!”

          …but have you actually seen how much code fabel can write in a month?

          Its a lot.

          So sure, you say, work at a slower pace. Don't just endlessly run a frontier model in unsupervised feature development mode.

          Yes… you see, thats the point. Thats what the op is saying.

          Move more slowly, and you can avoid building a spaghetti castle (ok sure! If you dont wanna, maybe don't retype every character by hand, but the point of that practice is not upping your wpm typing speed. :p It is to take the time to think, design and collaborate, not rush rush rush)

    • Bengalilol42 minutes ago
      AKA preventing cognitive debt
    • squigzan hour ago
      Do you really find your typing speed to be the bottleneck in getting things done? I suppose that's pretty easily fixed, at least.

      Anyway the author did address that

      > Using LLMs this way allows me to work faster than not using LLMs at all, but I'm still slower than those who are willing to allow the machine to think for them. Instead of being 10x faster, I'm probably only 2x faster. But what I lose out on in terms of speed, I gain in terms of a deeper understanding of my code.

  • PunchyHamster3 minutes ago
    ...what, that's terrible advice. If you gonna waste time on that just waste time on writing the code from scratch
  • an hour ago
    undefined
  • podgietaru19 minutes ago
    I feel like this will do almost nothing?

    Mindlessly typing something is not much better than copy and pasting?

    I could maybe see it if you asked it to spit out pseudocode you had to rewrite. At least there’s some translation there…

    But this is bizarre. Write it yourself at that point. Is it any faster (or faster at all frankly) to prompt what you want, manually write it out, and maybe even make adjustments as you go? I’d argue not.

    The way I wrote code in the past was to just first comment out what I wanted to do, and then underneath write the syntax for it. You could maybe do this too? Take the LLM code, and go through commenting what each section does to be able to effectively break it up? It still seems dumb.

  • jdw64an hour ago
    This method doesn't seem bad.

    Realistically, LLMs write code much better than most people. In my domain, there are areas where I still write better code than an LLM, especially when it comes to physical constraints it might not understand, but there are far more domains where the LLM writes much better code than I do. In that sense, writing code with an LLM and keeping track of it feels more helpful than I expected.

    Practicing solo coding for an hour a day often ends up being mechanical and not very useful. This might actually be more helpful.

  • an hour ago
    undefined
  • _davide_an hour ago
    there is a simpler way, make a complete mental model of the changes and ask questions to confirm your understanding. so much faster.