3 Things I Learned Teaching Coding to Veterans at Code Platoon
By Ben Golden on June 19, 2017
By: Ben Golden, Software Engineer
I recently had the opportunity to teach for Code Platoon, a non-profit coding camp that
trains veterans to become software developers. It was a tremendously rewarding
experience, and I’m grateful both to Code Platoon for bringing me on and to
Cultivate Labs for allowing me some
time off to teach. I’m a graduate of a coding camp myself—I went through
Dev Bootcamp as a student three years
ago—and going through the process as an instructor brought back memories and
also helped me view the experience in a different light. A few key insights:
Coding camps (can) have an amazing energy
Dev Bootcamp had a shortcut in and out of the building, a secret-ish elevator bank that saved a bit of time on my commute. I almost never used it. Instead, I’d take the slightly longer route, because I loved the feeling of walking through the front entrance and getting a full view of my fellow sleepless students working. It was a strange energy that I rarely experienced in college or high school, but I felt this energy pretty strongly again while at Code Platoon.
There’s something fundamentally different about an educational experience where all the students are investing their own money, time, and energy. The students, generally early- to mid-career adults are looking for and working towards a new profession and ultimately, a better life. As a result, they fundamentally care, not just about assignments or assessments, but about learning as much in the time that they have, and becoming as good of software developers as they can.
The positive energy doesn't just come from the students, though, and I don't believe a positive learning environment is automatic. Ultimately coding camps develop a unique culture based on an investment of time, energy, and attention from their founders, staff, volunteers, and community partners. I’m confident that Code Platoon, in particular its founder Rod Levy and lead instructor Jon Young, is dedicated to cultivating a positive culture and creating a rewarding experience for future students.
Teaching is hard
I’ve been interested in teaching for a while now, but had never done it professionally before. One thing that always confused me when talking with other teachers was how much they talked and complained about time spent creating and maintaining lesson plans. I’ll admit my reaction was often akin to basketball player Allen Iverson’s when a reporter asked him about practice. Lesson plans? We’re talking about lesson plans? I always imagined that by knowing the material well and being decent at improvising, I could get by without even creating lesson plans.
And it’s true, I can! I can get by. I gave a number of freewheeling lectures/presentations that students largely responded to well. When something unexpected happened, as it often does in software development, I could work my way through the issue and explain as I went. The problem is, I didn’t want to just get by. I didn’t want to be passably decent at teaching; I wanted to do the best I could. Over time I found myself thinking, and sometimes losing sleep over, how best to illustrate a certain point or idea. I’d decide on a certain approach, but then later reconsider and not remember what I’d wanted to say when. Often after I taught something, I'd mentally review how the lesson went, thinking about what I could do differently, and how to improve. If only there were some sort of document I could have used to keep track of a lesson’s objectives, key points, topics for discussion, etc. What would such a document even be called?
The fundamentals of programming are important and beautiful
Coding camps initially focus on teaching the basic building blocks of programming before moving (remarkably quickly) into more advanced material, and I found this time really rewarding. The problems that students face in the early stages of Code Platoon are relatively simple, though rarely easy, and allow students the opportunity to discover solutions, and to also focus on improving their solutions once the problem is solved.
Much of the challenge inherent in maintaining large software applications like Cultivate Forecasts or Cultivate Ignite involves keeping things simple and organized. Software not only must function as designed, but it also needs to follow certain practices so that other developers, when necessary, can make future changes. Code needs to be concise, readable, and in the correct place, all of which can be challenging for students new to programming.
Working with students to help make their code clearer, more readable, and more efficient, and discussing with them why the changes are important, helps me see opportunities to improve our code at Cultivate Labs. Better code is better for our clients, and also far more enjoyable to work with.
We are constantly learning through our work. Keep up with our learnings:Attempted Manipulation of our French Election Prediction Market: Here's What We Learned