If learning something to professional level takes 10,000 hours, then it’s probably important to make time to practice the skills needed for that profession. It’s up to us as educators to facilitate practice experiences, which help our students do this. To that end, I’ve decided to do one less lecture each week for my course on Ruby on Rails so that there is one lecture a week, and the second ‘lecture’ is a ‘deliberate practice’ session that builds on what was covered in the lecture. This is following Kathy Sierra’s dictum that ‘less is more’. Less lecture means more time to embed what was covered with other activities.
I’m trying to build on the learning experience of a code retreat, which we’ve organised in the past, as well as what comes out of coding katas too, and the discussions I’ve had with developers over the years about how they work and learn. Thanks to all of you.
I’ll not go as far as some to explain how deliberate practice should be a process, or that it leads to enlightened software craftspeople, but rather that it’s part of how you challenge yourself to try different approaches as a way to learn by doing.
Each of these ‘deliberate practice’ sessions follows the same format. Students should work with a partner or two so that no one is working on their own. I set out the topic and point to the github repository that we’ll be using. Then follows three rounds of twelve minutes. At the end of each round we pause, compare notes as to what they did, what posed a challenge, and what they’re going to do next. To wind up the session we go over any take aways. I think, however, that I need to change this to a more reflective approach so that the students think more about what they did, and how they might approach challenges differently in the future.
Each of these sessions is somethign simple and basic. The purpose is to offer lots of practice in the basics of Rails development. Create a new app, write some code for a controller and its views. Create a different app, focus on different types of views. Pull down a repo, then run the migrations, now change the models, controllers and views to make it all work better.
The students seem to like this so far, and I’ll keep working on new scenarios this term, and then revise them for improved outcomes next term. The joy of having a course run each term is this faster feedback cycle. Feel free to get in touch if you have comments, or suggestions about this approach.