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.
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.
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.
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
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.
"(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.
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...
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.
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.
That's why I like to build things from scratch! I only understand neural networks because I've built my own framework.
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.
We had the same in India. Predicting program output with nothing but pen, paper and your mind was also a great training regime!
Atleast you had a fancy keyboard while handwriting code.
I love my Keychron V3.
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.
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
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.
👨🏻💻✍🏼 Thank you for this insight into how these incredible machines process and think. Please pray for Translators.....🌐✨📚
"(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.
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...