upvote
When I was learning to code at college, by myself (I did a Business degree), I bought a book on iOS development[0]. This book mandated that you type all the examples out line-by-line. I thought the idea was a pretty silly one, but I stuck with it because I didn't know what I was doing and wanted to learn.

14 years later, as a software engineer, I still think about that book and the way I can trace back a lot of my initial improvements to its requirement that code got written line-by-line. I still maintain the habit of rote text copying as a way to pick up new tools and commands (i.e. copying documentation examples exactly into my editor), and also when people make an assertion like:

> It's like trying to retype calculus solutions — you don't learn from it.

Maybe not everyone learns that way, but I sure did!

[0] - https://www.amazon.co.uk/iPhone-iPad-Apps-Absolute-Beginners...

reply
Very much similar experience to yourself, when I was learning from YouTube tutorials I refused to copy/paste from their repos and instead typed everything out. Maybe changing variable names or structure.

I can definitely say it helped me learn a lot more than just blindly copy/pasting everything over.

reply
> When I was learning to code at college, by myself (I did a Business degree), I bought a book on iOS development[0]. This book mandated that you type all the examples out line-by-line. I thought the idea was a pretty silly one, but I stuck with it because I didn't know what I was doing and wanted to learn.

It seems like an exercise to force you to attend to the details. I had a similar experience with a "certified X programmer" exam my employer bought for me. I wouldn't say passing such an exam makes anyone a good programmer, but it was an unexpectedly valuable experience because it forced me to attend to a broad set of details (instead of getting a spotty command of them, due to path-dependent experience).

Similar thing happens with notes: I rarely reference them but taking them keeps my mind from wandering.

reply
I like coding katas (or even trying leetcode problems) when learning new languages.
reply
> you don't learn from it

Except that you do. Otherwise you could just sit in school or university and just listen and do nothing, but that way you just learn A LOT less, instead of taking down the lecture/lesson.

reply
deleted
reply
Of course you learn more if you retype material than if you do nothing, but it's still a waste of time, comparatively speaking, because there are much better ways of engaging with the material like solving practice problems.

Having to spend 95% of the time taking notes of things that could be distributed in a PDF has only ever hindered me academically. It's mechanical and boring, my mind tunes out and I get nothing out of it.

reply
Taking down the lesson/lecture does relatively little, you can do it on autopilot. If anything, it distracts from listening to the content. When I took computer science at university (mid naughties) we were given digital lecture notes anyway. (Mathematics lectures did have to be written down but there were no typed notes to start with so it was just out of necessity.) It's the exercises afterwards that are useful for learning. Or summarising notes in your words.
reply
When I did a CS degree in the 1980s we had one lecturer who handed out copies of hand-written notes but then would talk about stuff that wasn't really in the notes - sort of verbal annotations.

Guess what he would ask about in the exams?

reply
Even better would be to rewrite it by hand with a pen.
reply
Yes some people teach C this way, for a little while, I don’t forget semicolons as much as people around me later seemed too, may or may not be related
reply
I started programming this way as a kid with books and notes that I'd then periodically would be able to enter into a computer to see if it runs.
reply
I programmed this way my first year of community college because I didn't have a computer. I'd retype all of my work in the computer lab.
reply
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.
reply
I think the disconnect here is that you can't only retype the solutions. You have to already sort-of know what's going on and you have to also care to understand the gaps.

So transcription can definitely be helpful when part of a broader, intentional process, while also being insufficient to do much on its own.

And the next logical question to ask is whether there's a better form of intentional behavior that might be more effective.

reply
Retyping calculus solutions is a great way to remember your LaTeX.
reply
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.

reply
It is far, far less effective than deriving the solution yourself. Don't take my word for it:

> If you absolutely cannot do it then go home and think but for heavens sakes don't look it up in a book till you give up. Looking it up in a book is giving up. > > Paul Halmos (https://www.robots.ox.ac.uk/~adutta/blog/quotations-powerful...)

reply
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.
reply
At the beginning of my professional journey I was coding along youtube tutorials to learn, and I can tell you for a fact that all writing reinforces is syntax, which is reinforced regardless when you build your own projects while you develop your decision making skills at the same time.
reply
Writing certainly reinforces more than that when you're not just starting out. It's a poor learning tool. When you have no grasp at all of the meaning, yes, it'll only enforce the syntax you can grasp at that point. I'll maintain that it's a good reinforcement tool, especially to the ends mentioned in the article.
reply
> you don't learn from it.

I strongly disagree. I used this strategy for learning how to reverse engineer and hook functions in a game with C++ and learned a ton.

I also used this strategy to learn Imgui and it worked great. Before LLMs I did this when learning from books too.

reply
You have implicit assumption that the person rewriting does nothing else. Understanding intention and solution is in there too for most people.

A lot of calculus is rewriting blocks of solutions and applying them to problems. There is a huge chasm between how calculus and real analysis are taught. By your logic calculus should be of very low value. Yet somehow it opens a lot of doors for people to learn other things based on it.

reply
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.
reply
After typing in the program, I found that single stepping the program in a debugger greatly helped with understanding.
reply
I think it depends on what type of cognition you want to stimulate. It's probably useful to familiarize yourself with a suite of API calls, or get a big picture view of how an algorithm runs.
reply
I'll note this one down. I was under the impression that yes, retyping helps learning something about a language and architecture, but I found myself forgetting it after a while...

Trying it first sounds slower, but definitely better for cognitive training :)

reply
Wouldn't it maybe make more sense to try to use Cursor-style auto complete if you are trying to learn a language in this day and age?

Having Codex/Claude write all of it won't really benefit you imho.

reply
Everyone learns differently. Retyping was extremely helpful for me. The key, for me, was to look up what I didn't understand.
reply
How do you build intuition about something you cannot remember?
reply
deleted
reply
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.

reply
One thing it taught me was that sometimes the corrections would be in next month's edition, so I had that long to figure out for myself why the program didn't work as stated.
reply
> Retyping things is inefficient for learning. It's like trying to retype calculus solutions

Says who? You're saying this unequivocally like you have research that supports this.

I used to re-write the notes I took for studying and it was like night and day for how well I did on tests. IT also gave me a chance to tighten the information I was receiving. And it's exactly what's happening here.

reply
OC out here denying the actual learning and reinforcement research because of vibes
reply
It’s very common here on HN from the threads I’ve engaged in - everybody has an idea how learning works but it’s usually based on perceived personal experience and not actual research. I.e. you’re completely right with calling it vibe learning.
reply
I had to re-read it a few times to make sure I was actually interpreting it correctly because I couldn't believe someone would make a claim like that for everyone.
reply