It's really clear to me that short feedback loops and visual output are what make programming accessible.
In middle school I was in the most advanced computer class offered. It involved lots and lots of typing practice and basically just doing office-work projects in random Mac programs. My biggest regret was that the promised "programming" lessons consisted of typing printed Java code from a piece of paper and into a text file. No explanation of what the symbols were, what Java was, nothing. I was pissed. I failed that module. I felt so misled that I flat out refused to do the assignments.
From then on I resolved to teach myself. I somehow convinced my mom to buy us a computer. Once we got dial-up, I struggled with VBA, Flash Actionscript, C++, Tcl, Python and on and on. None of it had a manageable learning curve for me.
One day, I discovered Game Maker. The day Mark Overmars introduced the C++/JS mash-up that is Game Maker Language changed my life. I learned how to plan projects, how to invoke spells of hyperfocus, how to read technical documentation and on and on. It taught me algebra concepts way before I knew what algebra even was. That was all possible because I could type some stuff into the editor, and within a few minutes, actually see sprites move around and respond to my input.
Damn. It's been 20 years. I feel like I should be a coding God now. It's funny because I don't expect myself to be Shakespeare just because I've been writing words my whole life... Anyways, my mind wanders.
Oh, tutors. I never had a tutor. If you want to make your kid a genius, get them a 1:1 tutor. That provides social modeling, mentorship, immediate feedback and personalized lessons. I would venture to say that tutors may still be valuable, even to adults...
"Damn. It's been 20 years. I feel like I should be a coding God now. It's funny because I don't expect myself to be Shakespeare just because I've been writing words my whole life..."
Thats actually a good point, why do we have this assumption in tech?
I think some people can actually achieve continual improvement if they can master reflective/deliberate practice. I've been wracking my brain trying to think of what the discrete components of my coding are. Do I judge my functions, files, PRs?
In writing this comment, I think doing a short code review of what I produced in the last session might make sense. The more quickly I advance at some skill, the more quickly I can add/tweak my code review.
From my understanding and experience, that sort of reflection on each output of skillful work turbo charges improvement. I did it at a phone center job, where I kept a spreadsheet with a prediction of what service rating the customer would give me, and a short blurb of what I did well and what I could improve. That seriously blasted me to the top. This also worked when I was in a band. When rehearsing, we would play through our set in full while recording, then afterwards we would immediately run to the computer to listen back and discuss what to work on. Within weeks we were able to meet our goal of playing with our main influence, a band called Protomartyr.
In middle school I was in the most advanced computer class offered. It involved lots and lots of typing practice and basically just doing office-work projects in random Mac programs. My biggest regret was that the promised "programming" lessons consisted of typing printed Java code from a piece of paper and into a text file. No explanation of what the symbols were, what Java was, nothing. I was pissed. I failed that module. I felt so misled that I flat out refused to do the assignments.
From then on I resolved to teach myself. I somehow convinced my mom to buy us a computer. Once we got dial-up, I struggled with VBA, Flash Actionscript, C++, Tcl, Python and on and on. None of it had a manageable learning curve for me.
One day, I discovered Game Maker. The day Mark Overmars introduced the C++/JS mash-up that is Game Maker Language changed my life. I learned how to plan projects, how to invoke spells of hyperfocus, how to read technical documentation and on and on. It taught me algebra concepts way before I knew what algebra even was. That was all possible because I could type some stuff into the editor, and within a few minutes, actually see sprites move around and respond to my input.
Damn. It's been 20 years. I feel like I should be a coding God now. It's funny because I don't expect myself to be Shakespeare just because I've been writing words my whole life... Anyways, my mind wanders.
Oh, tutors. I never had a tutor. If you want to make your kid a genius, get them a 1:1 tutor. That provides social modeling, mentorship, immediate feedback and personalized lessons. I would venture to say that tutors may still be valuable, even to adults...