Ryan is a mentor for online coding bootcamp Thinkful, which means he works one-on-one with students in the Web Development Career Path. Like most Thinkful mentors, Ryan balances teaching with his full-time job as a Front End Developer for a Washington D.C.-based machine learning company. Ryan tells us about how he taught himself to code, what inspires him about mentoring at Thinkful, and why he is his student’s “first and best friend in the software development industry.”
Tell me about your background in programming and education.
I went to college for economics until 2008. I got into programming in 2009 and was lucky enough to get a job as a web developer without any experience or knowledge. It was a unique situation that may seem ideal, but it was also very stressful, and I had to learn how to create websites on my own in a self-directed way. Part of my job was to actually teach web development to other employees, which ended up making me a better developer. I spent a lot of time teaching as well as learning and building. Teaching in a field like software development helps you retain those concepts; because knowledge is cyclical, not a simple linear progression.
What resources did you use to teach yourself how to code?
StackOverflow was a big one. I think solving real problems is the best way to learn, so asking and answering on StackOverflow was a great tool. I mainly learned by Googling, finding resources, and following people on Twitter to learn about new techniques and libraries. Googling is key. Learning how to describe a problem and search for a solution is an incredibly important skill for a software developer at any level.
The other resource that helped was Github and reading other people’s code. While coding, you learn how you think about and solve problems. But by reading other people’s code you learn how they approach problems and you learn about other problems you didn’t know existed. I often tell students that taking the time to read code is my best advice about learning to write code.
How did you decide that teaching programming needed to be part of your career?
In 2014, I started teaching a 10-week, part-time front-end developer course at General Assembly. There, I learned how difficult it is to keep a whole class on the same technical level, moving forward at a similar speed. If you care about student outcomes, you end up working with a lot of students one-on-one to help them catch up or get ahead. So I taught one course, then took a break.
When I decided to go back to teaching, I wanted to find a service where I could teach online one-on-one. When I Googled it, Thinkful was the answer. I applied to Thinkful and started teaching there in June 2015.
Looking back, do you think a program like Thinkful would have been useful when you were learning to code?
Back then I needed mentorship; someone to teach me best practices. I was a pretty lax developer for two years, until I started reading other people’s code and learning best practices that way. To have a mentor pointing out the best approaches to code (and why) would have been really useful for me. Having some structure and direction helps students progress a lot faster. I see that in students who do Thinkful courses– they develop and grow so much faster than I did.
When you’re not mentoring at Thinkful, what is your full time job?
I work full time as the lead front-end developer at a company called IT.com in DC. We do machine learning applications that center around search. My job is to architect our front end applications and help implement them alongside other developers. I’ve been there since November 2012.
How do you balance your full-time job with mentoring at Thinkful? How many students are you working with?
I teach in the evenings and the number of hours I work varies depending on how many students I have. Right now, I have three students, so that’s nine hours a week of work just for one-on-one sessions. Outside of one-on-ones, I’m also reading students’ Githubs and answering questions. Thinkful has an active Slack community of all Thinkful students so I’m very active there, and I’m always communicating with students. I also do workshops on weekends and Q&A-type sessions.
How are you matched up with your Thinkful students?
There is a queue of students who are looking for mentors, and when I graduate a student, or they switch mentors to learn something I don’t know about it, I go to the queue and pick up another student. Students have profiles they fill out to indicate what technologies they want to learn and their long-term goals. I read those, and if one matches what I teach, I’ll take on the student. It’s very self directed from the mentoring standpoint. Thinkful also takes an active role in making sure students are matched with mentors – most of my students were introduced to me by Thinkful.
Do you have set times to meet with your students? How does it work with different time zones?
We do have set times, but it turns out we rarely keep them. Something will come up for me or them and we work around it. All of my students have been within the U.S. so far, and I’ve had a few students on Pacific Time three hours behind me. Thinkful does have a lot of international students and mentors, and other mentors teach students in different time zones. I did have a student who took an extended vacation to Israel so he was in a very different timezone, but we made it work.
Do students just have one mentor while they are at Thinkful?
Not always. For example, when it comes to frameworks, I teach React but I don’t teach Angular. I’ve never used Angular in production so I can’t teach it as extensively as other mentors. So if a student decides they want to learn Angular, they can learn from one of the other available mentors who teaches Angular.
Are you responsible for job placement and career readiness?
Thinkful has a dedicated team to help with career placement, resumes, and interviews. I focus on the student’s portfolio, helping them build and refactor projects that showcase their skills. I also cover skills like issue tracking, and use of source control – skills needed in a professional development environment. If you’re applying for a job and the employer sees that you can code, and you also understand how to work as part of a team even when working alone, that will set you apart.
Other mentors also do mock technical interviews, and I prepare students for the problem component of those mock interviews. Students practice with actual problems and learn to look at problems in a high-level, abstract way. I tell them if you can approach the problem at a high level, the code will come if it’s going to come. And then we also work on basic web development fundamentals, terminology, and concepts so students can answer questions about them.
Do students at Thinkful work with other students at all? Is there a collaborative environment, even though they’re learning online?
We just started a project making games around stamp collecting that a lot of students are working on together. Students also find each other through Slack and collaborate together. I didn't realize at first that students communicate a lot, but they all seem to know each other. It’s great because you really get the chance to treat people like coworkers when you’re working on a project together.
What is the format of a lesson when you’re interacting with a student?
It really depends on the subject matter. Thinkful’s curriculum is very project-based, so students work on projects in between sessions. Often they’ll come prepared with questions they’ve encountered, specific bugs, and problems. Usually at the outset I’ll answer any questions they have, and I’ll help them debug. Debugging is such an important skill. Other times if I’m introducing a new concept, I will just talk about something for an hour. Or if the student hasn’t had enough time to really work on something, we’ll pair program, but I don’t take the driver’s seat.
We’ll move on to the next part of the curriculum when the project is completed to a point where they have grasped the concepts. If there is something they’re not getting, we can stop and go over problems, and do some more specific work to catch them up on it.
What is your approach to teaching online?
While we’re learning, I structure the lesson like I’m a senior developer and you're a junior developer and we’re working on this project together for work. I’m more experienced so I’m going to lead and help you, but in the end I’m going to let you do your own work. That’s how it works in a real development environment so I think that’s good preparation.
How long do students usually take to graduate from the Career Path?
The target is four to six months and I think that’s about accurate for my students.
Can you give us an example of a student you worked with who had an interesting project or experience at Thinkful?
I have had students who have worked on their own startups during Thinkful. I have one student who already had a startup which centers around MCAT preparation. So we’ve been working on expanding upon that idea, and we’ve built a lot of functionality around it. That’s a really cool project.
Are you starting to see your Career Path students getting jobs as developers?
I have two students who have gone on to get jobs so far. One is starting at IBM as a front end developer. The other is working as a software developer in Montana. I definitely keep up with students after they graduate. I’m not just a mentor, I’m also your first and best friend in the software development industry.
Do you have any input or influence over the curriculum you teach? How flexible is the curriculum for students?
Yes, 100%. Our curriculum is hosted as a private Github repository. We all have the opportunity to make contributions so it’s very much a collaborative curriculum. And it does have flexibility built into it. I’ve been very flexible in terms of what I’ve ended up teaching students and the technologies we’ve used.
When I started the Career Path was a very new program but it’s been refined over time. It’s the same in teaching as it is in software development, you start out with a prototype and you iterate and make it better. It’s evolved a lot and I think it’s in a very good state right now – students are getting a lot out of it.
How do you know when a student is ready to graduate and start the job search?
The main requirement for graduating from the Career Path is having a certain number of projects that are portfolio ready, which is important not only for a check mark to graduate but also in the future when students are trying to get jobs. We want to make sure students have those projects to show for their time.
Online MOOCs are infamous for their low completion rate. How do you approach retention/attrition at Thinkful and ensure your students are motivated to complete the program?
I’m very much a cheerleader for my students in an honest way. Most students never feel like they’re moving fast enough, but in fact they are making a lot of progress. I focus on helping them see the progress they’ve made, and understanding the end goal. It can be easy to forget that and get lost when you’re stuck. I help them realize that they will get stuck, but the only way to know something is a mistake is to make that mistake. Thinkful also has a very active support staff, which keeps an eye on student progress. They are very responsive if a student is falling behind, and they reach out to me and the student to figure out how to help.
How often do you meet and interact with other Thinkful mentors? How does Thinkful help you become a better mentor?
We have a Slack channel specifically for mentors. We communicate all the time, and I know a lot of other Thinkful members through that community. And Thinkful mentors are encouraged to be students themselves, so all the resources and curriculum for students are also available to mentors. I’ve learned a great deal from other Thinkful members.
What is the feedback loop like between students, Thinkful admin staff, and mentors?
Students have a direct line to Thinkful and people who are close to the curriculum. There is a strong connection there to give feedback about the course. And if students talk through Slack about projects, that’s publically available for Thinkful to observe. As far as giving feedback about me, there is a survey. All the feedback I’ve received about my teaching at Thinkful has been positive.
What’s your favorite part about being a Thinkful mentor?
It’s being able to work with students one on one. Not just my students, but all Thinkful students through our Slack organization. I think that’s what I missed in teaching a classroom class; the ability to tailor my answers and teach to the needs of individual students. It makes teaching more rewarding because you’re more effective. And that’s what you want as a teacher, to be effective, and to help people keep moving along this path.