The key to success as a junior developer is seeing mistakes as part of the learning process and not as setbacks. The best way to learn is to dive right in, identify weaknesses, and improve your code and process with each iteration. These are the principles Kel Kanhirun applies to learning, teaching, and working in web development. An instructor in our Chicago web development course and quality assurance engineer at Avant, Kel challenges his students to question their assumptions and think critically. Kel’s students appreciate this approach: they voted him Student Choice Award winner for our fall 2015 cohort. According to Carlin Thomas, our program manager in Chicago,
Kel breaks down concepts very simply for students to understand and intuitively knows the perfect balance of challenge and practice for web developers at any level.
We caught up with Kel to find out more about his session on Ruby on Rails, his coding interview tips, and his advice to junior devs entering the field:[bctt tweet="#Mistakes are part of the #dev learning process—they're not setbacks, says @kanhirun"]
Q: Congrats on winning the Student Choice Award, Kel. What do you think makes your teaching style so effective?
A: As the saying goes, “Teach me how to drive, not how the engine works.”
Imagine if a driver’s ed course had little to do with practice. For example, if there were no quota for the number of miles you were required to drive before being certified, I think 18-year olds wouldn’t feel as prepared to drive out in the wild.
This is the case when learning anything new: as children, we hold onto the sides of the pool while paddling our legs before attempting to do a lap.
To my mind, lessons should be designed so that students can run the program early and often, in order to become familiar with how software works. But that’s just the lesson structure. Because learning is a psychological process, there must also be a culture in which failure is acceptable, and humility is growth.[bctt tweet="Learning is psychological. #Failure is acceptable b/c growth comes from humility, says @kanhirun"]
Q: That’s awesome. Do you have a personal teaching methodology or techniques that you use in the classroom?
A: There are three principles that I apply in my sessions. First, I ask my students specific questions and challenge them to think about the question in new ways.
I work to elicit the background knowledge that they otherwise would not have thought to make visible to themselves. Knowledge is revealed through dialogue; some might call this a Socratic method.
Secondly, I ask them to compare two concepts that appear to be the same. This provokes their minds to better distinguish the structure of the program.
And for the third principle, I have students run programs frequently to observe when they break. This tells us there’s something missing in our knowledge.[bctt tweet="#Programming lessons are 3-fold > Access prior knowledge, develop it + identify holes—@kanhirun"]
Q: What’s your favorite part of being an instructor at Startup Institute?
A: I’ve had a lot of creative freedom working at Startup Institute. Because of this, I can iterate over my sessions quickly.
Q: You’re now a QA engineer, having previously worked in a full-stack role. For web developers who are exploring career opportunities, can you talk about that transition?
A: At the time that I moved into the QA role at Avant, testing was one of my weakest areas as a developer. At first, I feared that doing QA would set back or pigeonhole my career, but it turned out to be a blessing in disguise. In my eight months at Avant, I’ve worked through many problems that plague every software team: debugging with RSpec and Git, functional testing, test maintenance, etc. When I began working as an iOS developer, it was easy to adopt XCode’s UI Testing because I was already familiar with its testing patterns and its weaknesses. [bctt tweet="Working in #QA has strengthened my weaknesses in testing, says @kanhirun"]
Q: What type of developer thrives in QA?
A: Those who thrive in QA are developers who are good at avoiding bias.
Q: Learning to code, even in a dev bootcamp environment, requires a lot of discipline. What strategies do you use to motivate students? How can aspiring web developers be sure that they’re keeping themselves on track as they work toward their learning goals?
A: In designing goals for ourselves, we might create obstacles that are more optimistic than what can be managed at a given time. A better goal to start with might be to write code even if you don’t completely understand what you’re writing. For example, in “Learning Python the Hard Way,” students are asked to go through each lesson, type in the words exactly as they see them, and then run the program. That could be a better start.[bctt tweet="Set short benchmarks to stay on-task with your learning goals, says @kanhirun"]
Q: What skills are most important to master before pursuing your first junior developer role?
A: I interviewed roughly 50 times before I got my first software position. Each iteration showed me where my process was weak, and the first ten were just to get the jitters out of my bones.
Q: What do you look for when you’re interviewing web developers? How do you identify the talent and mindset that will make a successful developer on your team?
A: I look for growth—not necessarily talent—in a junior developer. After the candidate submits their solution to a coding challenge, I ask for a walkthrough to understand where they’re coming from, and to get rid of any preconceived notions I may have. The goal is not to grade, but to understand the person. I provide feedback to observe how a candidate responds and reflects on their understanding of code, and to encourage them to continue learning.[bctt tweet="I look for growth—not necessarily talent—in a junior developer, says @kanhirun"]
Q: What advice do you have for junior developers in their first three months in a new developer role?
A: In the right culture, pair programming is probably the most helpful way to learn.