The contents are addictive, because it’s tiny bits of information and I never felt blocked or thinking too much.
The “core loop” could be better designed – while I was never blocked, I was rarely actively challenged, too. I wish the tasks were more advanced and that, at least sometimes, required some additional research.
The course uses a learning method called space repetition – there must be a gap between learning something new and exercising or reviewing to make sure we have really committed to memory. Great idea, though given the basic material, it was probably as annoying as it was effective.
Still overall, I am still enjoying it and I am close to the end:
In addition to the course I started reading Programming TypeScript. Since I spent most of my time on the course, I haven’t progressed much with the book. Another reason for slow progress has been a 2½-hour long yak shaving – once I reached the section on tsconfig.json (page 11/12 :)) I couldn’t help but “peek” at the documentation, then one thing lead to another, I thought jsonfig.json was a typo, so I almost submitted a PR to an internal project, then climbed up the stack to tsconfig.json and various ways people use TypeScript – either as purely a type checker (noEmit) or about the various options for configuring it for a legacy codebase. Of course, composites and more advanced config topics weren’t spared from my “research”.
Honestly, I missed falling in a super deep rabbit hole like this and it reminded me how useful “accidental learning” can be in the long term – how many dots can one connect without even realizing. Having a solid understanding of the config file already helped me when I casually tried to understand how the TypeScript infrastructure at work works.
Since the course will be over soon, the questions is what are next steps. I will most probably focus on finish the “Programming TypeScript” book (especially if I get it on the Kindle), but other ideas are welcome, too.
Stay safe and see you in a week or two (here, not in real life, that would be the opposite of staying safe).
Six years is startlingly long time given my previously dense learning history. I am not sad – change is the only constant and I have enjoyed the people challenges as much as the purely technical ones. Still, the lockdown in combination with the realization that the problem-solving and regular surprises involved in learning a programming language are something that brings be a lot of joy meant it’s time to choose the next language.
I have dabbled with TypeScript before, even wrote a few thousand lines worth of a hiring stats visualization system that ended up abandoned. But this experience was closer to a deterrent of learning more about the language than helped. Here are my reasons for picking up TypeScript:
The dichotomy of having the same codebase and same patterns exist in either typed or untyped form are every alluring. I am super curious what will be the effect on gradual typing on my thinking about problems.
After years of using generic (even if powerful) tools for my languages of choice, the first-class TypeScript support in VSCode is exciting.
People. I don’t know much about the community (yet), but I have enjoyed previous work by Anders Hejlsberg, like Delphi and Turbo Pascal. He’s still number one contributor, which is impressive. Last, but not least, Stefan was excited about it 🙂
My learning strategy is usually to often alternate between top-down approach (first principles first, high-level knowledge) and bottom-up (low-level knowledge, often trivial). This often means alternating between a book, paper, theory, principles on the subject and a lot of hacking, tinkering, trying things out, doing, digging into source code, learning how something works in detail.
Here are the resources I have on my short-list and I am starting with them tonight: