13 Comments
User's avatar
Michael Oche's avatar

Hahaha exactly, faced same problem during my BSc years as a computer Science student. The lecturer would make us write Java code on paper and it was so boring and annoying, but that made us stick to every syntax and when we got the opportunity to write code on the computer we faced less syntax errors.

Expand full comment
David Sullivan's avatar

Hmm, you talking about limiting tools reminds me of that interview last week by Dwarkesh Patel with Richard Sutton. Richard was talking about learning from experience when you have no knowledge of the world. No training or education. Just be an animal start some task and get better at it by making mistakes and improving. The philosophy of reinforcement learning is really soothing when you keep it in your mind when you're making mistakes on a new skill you're developing.

I was learning plastering over the weekend I was making mistakes, particularly losing a lot of plaster onto the floor. It was frustrating but I did remember back to Richard, and it changed my perspective as I was making mistakes. I was seeing each error as an incremental improvement in acquiring a new skill, not another failure in a series of failures.

Expand full comment
Tivadar Danka's avatar

That's why I like to build things from scratch! I only understand neural networks because I've built my own framework.

Expand full comment
Vaibhav's avatar

The one-shot analogy really got me ngl! I had similar experience during Uni entrance exam preparation back in 2015. We had to solve Definite integrals and 3D geomtry derivations, all on paper. I knew each step had to be careful so no error propogates further, it brought so much discipline and precision to the process that after a point in time, I knew the answer I got was right whether it was 0 or 2789. It wasnt just beautiful as process but even on paper anyone could see the flow of the derivation steps like a painting.

Expand full comment
Unni's avatar

We had the same in India. Predicting program output with nothing but pen, paper and your mind was also a great training regime!

Expand full comment
Phil's avatar

Atleast you had a fancy keyboard while handwriting code.

Expand full comment
Tivadar Danka's avatar

I love my Keychron V3.

Expand full comment
Frank's avatar

This is very true, I’m learning to code(backend engineering), I turned off every AI tool in the IDE. It has helped me a lot in learning.

Expand full comment
Stephen Gruppetta's avatar

I’ve had the same transition over the years. And when I thought coding to kids live I sometimes did a “comprehension” exercise on paper—not quite the same as writing code, but still a useful unplugged exercise

Expand full comment
Tivadar Danka's avatar

Speaking about kids: as a parent, the strangest experience I often have is knowing how my kids feel, how they'll feel when they are older, and knowing they won't believe me anyway.

Just like my teachers telling me about the importance of coding on paper. We believed that we knew better. Now I see we didn't.

Expand full comment
Robert C Culwell's avatar

👨🏻‍💻✍🏼 Thank you for this insight into how these incredible machines process and think. Please pray for Translators.....🌐✨📚

Expand full comment
David Gretzschel's avatar

"(By the way, this was the same in our math courses. The first sentence of our linear algebra class was “let F be a field, then V is a vector space over F if…,” leaving our heads spinning.)"

Oh, I can relate too well. I certainly have had my head spun for several years!

But do not fetishize those uni scripts as being "artifacts of higher rigor and clear thought". The entire syntax and notation of mathematics is an overloaded and incongruous mess. Too much legacy notation, a linearity fetish, obscurantist terminology, extreme overloading of terms and syntax with conceptual scope declaration being "up to the reader, because it's implicit, lmao you stupid pleb". Bad notation for nesting. Random greek letters. A completely unnecessary direction-switch, between the declarative and the expression-level for maps and morphisms, making category theory and linear algebra diagrams, needlessly disorienting. Needlessly convoluted ways of working with trig ratios, because we avoid complex numbers, due to terrible notation. The overuse of matrices and vector fields for most of 3-dimensional geometry (lines, planes, distances, rotations etc.), instead of using Quaternions for modelling 3d space like Hamilton advocated for.

I'd add more or go into the excessive details, but I'd be here all day.

Besides, by the end of the year, I'll be done with the bulk of refactoring and I can offer something better, instead of being a whiny bitch about it.

Expand full comment
wanty leo's avatar

Mmmmh.

I had some pen and paper writting code too, but I'm not that convinced about the pertinence outside structuring your thoughts.

Very usefull for:

- drawing sketches and blueprints that abstraction your code

- iterate fast and light on algorithms' structure

- force to imagine and visualise data structures

- some very structured languages like SQL are worth writing on paper, forcing you think about what you want as outcome

That being said, it is terrible at :

- code langage implementation details

- librairies and feature discovery (that makes you win tons of time)

- as you said, trial and errors that forge experience

In a nutshell, pen and paper is good for abstraction, far less for learning a new code langage as it slows learning soo much and make the evaluation so frustrating...

Expand full comment