“Attack, Attack, Attack” — Three Top Resources to Conquer TypeScript
The best resources to help you overcome fear and procrastination. Improve your learning speed and approach to conquer TypeScript.
“Attack, Attack, Attack”, that was what my instructor was shouting at me. I stood frozen, glued to my bike looking down the steep trail. The narrow path was covered with obstacles. Tree roots everywhere, loose gravel and narrow gaps between tress. People say you never forget how to ride a bike but this was different. I hadn’t ridden a bike in two years. And now I was taking a mountain biking lesson at Glentress Forest in the hills of Scotland.
I’d completed a “basic training” on flat ground. This involved riding round a skater/biker park area, practising positioning and technique. An embarrassing experience as small kids flew past at three times the speed in perfect control. Meanwhile I wobbled along, insecure and unnatural.
But finally I was here, at the top of the hill ready to go. After years of owning a “mountain bike” this was the first time I would be using one in it’s natural environment.
On one hand I hadn’t started but by other measures I had already achieved a lot. I was on the mountain. A lot of preparation had been required to get this far. How long had I been thinking about this holiday? How long planning travel and accommodation? How many times did I question myself “Can I actually do this?” How long had I spent on the internet looking at equipment and the various types of knee pads? How long in the the hire shop looking at all the options for bikes?
Now as the moment of truth. I released the breaks, I started to role and soon I was hurtling down the hill. My instinct was to lean back to protect myself. That’s natural but it’s also wrong. If you lean back then you lower your control. It makes you more likely to fall not less. It means sudden bumps will affect you more.
The solution is to lean forward. You need to overcome your natural fear. Put your head forward, closer to the danger. Lift your body up so you have space to absorb the shocks. Focus and stay alert so you can stay up. This is not a spectator sport, it requires 100% focus or you’re going to hit a tree root and fly over your handlebars.
What can my biking adventure teach me about my challenge to learn TypeScript?
I like to think of myself as a developer, but that would mean coding. Over the past few years I’ve spent far too long in meetings and with other management tasks. This needed to change. I decided it was time to do some coding and learn a new language. Here’s my top resources and advice for conquering TypeScript.
My goal was to learn TypeScript, I had some requirements about how I wanted to learn:
- Transparency: I wanted transparency, especially on the new things I was learning. I wanted to focus on coding in TypeScript and not get sidetracked.
- Inspection: I needed to be able to analyse what I’d done and get feedback so I could learn. I needed to be able to pinpoint the things that worked and didn’t and have confidence in my code. (This meant I wanted to use unit tests)
- Adapt: I wanted to be able to quickly learn from my mistakes and update my code. I wanted fast feedback cycles so I could learn faster.
If you’ve noticed, you may recognise these as from Scrum Theory. But I’m learning here and I wanted to go fast. Feedback cycles in seconds not two weeks!
Like the mountain biking I also needed to make sure I was taking action. I need to be riding down the mountain, not wasting hours and days preparing for a holiday or looking at equipment. That would be “fake” learning. It may look like real learning. You may be able to pass it off to friends or colleagues as a good time investment. But let’s face it. Are you going to learn more in 5 hours looking around a bike shop at equipment or in 30 minutes of downhill on the mountain?
With coding it’s so easy to get distracted in similar ways. Another new tool. A different editor that has more features. Or the hidden perils of myriad of dependencies that need to be installed to get things working! What can you do to stop these distractions and get to the real learning?
After numerous excursions and tests I recommend the following three resources:
- ExecuteProgram: “Learn programming tools fast. Then remember them.”
A new site that totally rocks. Minimalist design. Simple explanations in short bursts followed by questions to ensure you’ve learnt the content. Instant feedback. It also has a spaced repetition of the content with email reminders. This boosts long term retention so that everything is not immediately forgotten. You’re restricted to just the content you need for that lesson in bite size chucks. There’s no opportunity for distraction by flipping through to future content.
- CodeWars. “Achieve mastery through challenge. Improve your skills by training with-others on real code challenges”
Once you’ve got the basics you can jump straight into real coding challenges. Each challenge is given a difficulty rating so you can start at the appropriate level and track your progress. You can test your solutions instantly and see if your code works. Providing you pass all test you get to see the solutions from other developers. This is a great way to see different styles of coding and different approaches to the problems. The whole time gamification keeps you motivated.
- CodeSandbox “CodeSandbox is an online editor that helps you create web applications, from prototype to deployment.”
CodeSandbox allows you to create more than just TypeScript code. It allows you to create a whole website. You have windows to enter TypeScript, HTML, CSS and get instant previews of your website. I extended one of the standard templates to add unit tests. Unit tests are critical. They require extra effort to setup at the start but then increase your productivity. Forcing you to think in a more structured way. Giving you instant feedback and far more confidence in the accuracy of your code. Here’s the TypeScript template I created. It’s a website with sample Jest UnitTests: https://codesandbox.io/s/typescript-jest-test-template-nj0ky. You can easily extend and fork any example you find.
These three solutions complement each other and provide a great way to conquer TypeScript. Whether you have previous programming experience or not they will enable you learn and build up your knowledge in a structured way. They meet my learning approach criteria:
- They provide transparency. They each have clear methods and goals. Execute program is extremely restricted and focussed. CodeWars provides more choice but each challenge is extremely clear. CodeSandbox provides you the complete freedom to experiment with your ideas.
- They enable you to inspect your work. As they’re all web hosted there is no setup time. You can focus directly on what you’re trying to learn. You have the feedback so you know how you are progressing towards your goal.
- They enable you to adapt. There is instant feedback with tests or live previews. This feedback enables you to adapt so you can increase your learning speed.
There is a final advantage of combining, transparency, inspection and adaption. It forcers real action. Looking at articles on new programming languages is interesting and exciting. How much are you actually learning? To learn you need action.
Some courses are all theory. They let you skip the practice. With ExecuteProgram, CodeWars and CodeSandbox that option is not available. You have to “Attack, Attack, Attack”, face your fear and get coding.
It can be an uphill struggle to learn a new language but with the right resources and approach you can reduce the time it takes.
All these sites offer far more than TypeScript. ExecuteProgram is new but already offers RegEx, JS Arrays and TypeScript. CodeSandbox has the most popular JS Frameworks, eg React, Vue, Angular, Gatsby and more, the full list is here. CodeWars supports an ever increasing number of languages including JS, Java, Python & Ruby.
What are you waiting for? “Attack, Attack, Attack.” Skip the procrastination phase, start with ExecuteProgram, click here and start learning TypeScript now!