As one half of the apprentice training team at Quick Left I've been spending a lot of time building and tweaking projects, homework, and lectures to most effectively get apprentices and new hires up to speed. I'd like to share some lessons we've learned along the way about web development training:
It's Not a Staircase
Many skill sets have techniques that immediately build upon each other and have an ideal order. Consider the novice SCUBA diver's first day:
- Learn how to put on a wetsuit
- Learn to use a regulator
- Learn how to jump into the water safely
- Learn to swim around
- Learn to get back on to the boat
The skill has a sequence that needs to be accomplished, so teaching it in order makes sense. This is not true in web development.
Our strategy is to leave the depth of learning for later and to emphasize that the apprentice knows just a little bit about each bucket and how they fit together. Having a sturdy and accurate scaffold to hang knowledge on as they acquire it is crucial in avoiding large 'refactoring' of their understanding later.
Lay Solid Bricks
It is mighty tempting to start an apprentice in a sink-or-swim situation where they are 'drinking from a fire hose' and you flood them with everything you know about a given subject. This is certainly a high bandwidth way to transfer information, but it has some inherent risks. The faster communication happens, the lossier it is, and some messages are dropped or garbled.
If an apprentice mis-learns a foundational concept like HTTP, everything they learn in relation to it will likely be incorrect in some way. When they finally 'get' HTTP months later, it will have an effect on every other bucket and they'll have to reassess everything they know. This is slow, frustrating, and inefficient. We don't want that for our apprentices, so we start them off slowly with an emphasis solid, simple understanding of topics.
Learn How To Learn
In a world of screencasts without typos and blog posts which make the complex seem like it could be done in 5 minutes, it's easy to conclude that every 'good' developer write correct code from the get go, knows the method signature for jQuery's .on(), and never forgets semicolons. This just isn't true, and we make sure our apprentices know it's ok to have a messy process along the way to getting something done.
We spend time coding alongside our apprentices and make sure to let them see us using Stack Overflow, IRC, Ruby Docs, and other resources to solve our problems. Normalizing making mistakes in your code and finding 3rd party help to solve your problem quickly shows our apprentices how we get work done, and also helps them be a bit more comfortable with their own skill levels. Happy apprentices learn more quickly!
Talk to us!
Our training program is still growing, so let us know if you have other lessons you've learned to add to the conversation. Thanks!