I’ve just hit the end of my second semester teaching at The Iron Yard here in Durham. (Well, it’s a week from the end, but I got knocked out of commission early because of this guy. Thanks to everyone on staff for being supportive and letting me snuggle my new little dude a lot.)
I still have a lot to learn, but here’s some lessons I’ve learned teaching adults – most of which came in with no programming background – to be developers.
- Prework works. We don’t have an expansive prework program at The Iron Yard. That is, we don’t make you go through months of work in order to attend or even to apply. Each teacher does send out work for students to do in order to get ready for their class: here’s mine for next semester. Some students come up with their own prework as well.
The students who have done best spent their time before the beginning of class getting as ready as possible. I still believe face-to-face teaching is the way to go, and assigned prework should be no more than 40 hours, but that initial prework gives us a shared vocabulary to start with.
It’s hard to be a top-down thinker. A huge amount of programming is reducing a large problem to its smallest component parts and then building those parts. Being able to think from the bottom up is almost a necessity when building software in teams. Especially when learning, the need to understand the whole of a problem before you can begin it is a real struggle.
But top-down thinkers who persevere are the best. In both classes, people who self-identified as top-down thinkers struggled so hard for the first 2-4 weeks. Once they had enough knowledge that they could understand the whole of a program, though, it suddenly became much easier for them. I would venture to say that once over the hump, top-down thinkers were some of my best students.
Teamwork creates breakthroughs. I’ll go on record as a firm believer in pair programming. My best programming experiences have all been in pairs, and I prefer to work that way. With students, though, I wasn’t sure about using it at first. I even shied away from group projects, where people might not pair, but would have to coordinate. What if one student overshadowed another? What if a prospective employer wanted to see a project the student had done all on their own?
I now prefer group assignments for students over solo assignments. As developers, we almost always work in teams in the real world. Knowing how to coordinate code changes, review each others’ code, and pair program are essential skills and I’m glad my students get to practice them.
An even bigger benefit is that students learn so much more when working together. Batting ideas back and forth is inspirational and breaks you out of the cycle of frustration. This is why I love pair programming: I personally have learned so much more as a developer when pairing.
- In-class exercises are hard to create, but worth their weight in gold. My instruction style tends toward demonstration and explanation: I’ll often ask a rhetorical question about how to complete some task, then I’ll write code to do it, and then walk through the code. This works most of the time, but isn’t always optimal. When I’ve had exercises for students to do in the class, they struggle very hard with them, but once they have, their brains are primed to absorb later demonstration so much better. Creating those exercises takes more time than any other prep task I do, though.
I also have a ridiculous line of thought I have to quiet down. I’m afraid to give in-class work because I’m not talking, and if I’m not talking, the students aren’t getting their money’s worth, which is so false, but thoughts aren’t always logical.
- Walks fix everything. Can’t figure out some code? Walk. Falling asleep because you were up all night coding? Walk. Feeling stressed? Walk. Take a buddy. Going on walks with students is some of the most valuable time I’ve spent with them.
There’s plenty more things I’ve learned, but those are some of the most important. I’m really looking forward to next semester and the chance to apply the lessons I’ve learned so far.
these jokers, seriously