Code Apprentice
A crazy experiment in learning JavaScript (mostly)
The idea:
I had this crazy idea: programming should be taught (or learned) more like a sport or like a craft, than like a seminar. And you might say, "sure, build projects, practice, everybody agrees". Well, no, that's not what I'm saying.
Even the books, tutorials, etc, that claim to teach you in a practical, project-based method go in a completely linear path: learn about variables -> data types -> operators -> math -> arrays -> functions -> classes... and so on, and occasionaly after every few chapters build some "safe" project.
The problem with this is the bottom-up approach, from particular to general, that creates a gap between the learner and the developer because the learner never really gets to see what real production code actually looks like. That creates tutorial hell.
I propose to turn that around completely: go from the general to the particular, top to bottom. Like a kid learning how to play soccer doesn't start by learning what the ball is made of, he starts by playing a friendly game, a real game, and getting told "stand there and if the ball comes to you, kick it that way". In the same way, a young apprentice who starts learning a craft like pottery doesn't start by learning material science, he starts with a menial job, yes, like cleaning the equipment, but embedded in a real context, long before he is told to create a mug by himself.
That is the idea in a nutshell.
The proposal
This is an experimental method that I'm testing on myself, really. And it's probably not for everyone either, but let me tell you where I'm at: I've been learning on and off for years now, never really getting too far, forgetting almost everything in between each new attempt. So I'm what in a (natural) language-learning context is known as a "false beginner", which means that I'm vaguely familiar with a lot of concepts, but proficient in few or none.
So if you are in a similar position, I invite you to follow along and try out this method, see if we can escape tutorial hell for good.
What does this look like concretely?
The basic process is this:
- Grab a real program, with good, professional practices, or as close to that as I can find. Start with simple examples and gradually move to more complex ones.
- Analyze that program and learn everything I can from it. Hence the "top-down".
Small warning because I know some people get itchy about this: I'm using AI to generate the scripts, maybe just at first and as I move on to the more complex code, I'll place more emphasis on finding real-world examples; the first ones are in fact what most programming courses would suggest as begginer-friendly projects, except I'm doing it in reverse: start from the full code and break it down to its components. Also, I won't be doing just one project per learning stage and then move on to the next level of difficulty, I'll be doing several small projects around the same level before scaling —that's also part of the "apprenticeship" style of learning: repetition and fluency. It's not enough to just say "I understand this now", then use it once in an abstract, isolated example, and move on to the next concept. You use it many times until you internalize it and it really becomes like a living language.
What you see here are basically my notes —somewhat edited for sharing— from studying and experimenting with these example projects, so if it's a little all over the place, going from one thing to another, without a coherent structure... that's kind of the point. I invite you to do the same, but use this site only as an illustration of the method, you should create your own notes and observations.
That's it, that's the whole method.