I agree. There’s a reason that we don’t teach kids swimming by dumping them at the beach with a pair of flippers and directions to the French coastline, as hilarious as that might be. It is good to have a strong end-goal in mind, and many people are driven to learn because of projects. They provide strong motivation to learn, give direction and narrow the field of study, but as beginners we need to do some practise first.
The article suggests creating your own mini-projects based on the concepts you’ve just learnt. This is an intriguing idea, but I want to make a small observation: if you have to create your own training exercises, your first thought should be to look for better resources. In most cases, someone else has already done all the hard work and there are sound reasons for using pre-written exercises and tutorials.
In the TV show ‘Dogs might fly’, viewers got to see a dog fly an aeroplane. Leaving aside the twin mysteries of how this guff got commissioned and why they didn’t put flying hats and goggles on the dogs (I mean, really!), it’s very telling that we don’t see the dogs complete the routine safety checks and pre-flight routine. Sometimes it’s much better to start in the middle, not only to get motivating ‘quick wins’, but also because experiencing core concepts first hand makes it easier to understand the entire subject. As a complete novice you’ll have limited ability to make good choices about what you should learn, the order you should learn it in and where to start.
You are peculiar. I don’t just mean the way you slurp soup, although that is distressing; we’re all subtly different in how we perform even simple tasks. You might not realise that you’re doing something uncommon in an uncommon way, until you start looking for help. On these occasions help is still usually available but finding it takes more effort than a quick Google search. Well written tutorials, on the other hand, should cover everything you need to duplicate their results (including configuration and versions for software development).
Even exercises which sound simple on paper may have hidden ‘gotchas’ which lead you in circles. Without clear instructions to fall back on, troubleshooting is up to you, whereas a quick check in the comments section of an on-line tutorial will tell you how well battle tested it is. In the digital age there’s even the option of requesting help or advice direct from the author. As a side-note, it makes sense to work with the most common set up whilst you learn the basics, even if you intend to use something more esoteric later down the line. Access to relevant support will generally outweigh the irritation of migration.
CodeSchool introduce concepts using videos, then immediately provide challenges that allow you to apply what you’ve just learned in a realistic environment. The grunt work for the challenge is already done for you, so you don’t waste time doing repetitive configuration and there’s enough guidance to keep things achievable. It’s worth checking out, if only to give you a way to benchmark other study materials.
If the available resources are more basic, you need to be able to work with them in a way that challenges yourself. This isn’t difficult, you just have to remember to do it.
Once a tutorial is working, riff on it. Look to understand a small part of it, then try to change it a little and see what happens. It’s much easier for a beginner to modify something which is already working, than it is to build it from scratch. Playing around in this way gives you instant feedback and can help you understand how things fit together. Once you’ve tinkered with all the individual pieces, put the tutorial away and try to recreate it for yourself. You can always refer back to the instructions if you come unstuck.