Michael is a veteran programmer who loves working with people and helping change their lives. He joined Coding Dojo’s new Chicago campus as the lead instructor and captain in June 2016, and has already found his own unique teaching style. Michael tells us why teaching three stacks at Coding Dojo mimics his own career learning multiple languages, why Python is an ideal first language to learn, and why he believes anyone can learn to code.
What was your background and experience before you joined Coding Dojo?
I've been a developer since I graduated from college in 2000, so about 16 years. I've been primarily working with Microsoft technologies, .NET, C#, MVC, ASP.NET. And before that, Visual Basic 6, and VB.NET.
My career has gone from large Fortune 500 companies all the way down to startups with under 20 people. I did about five years of independent consulting, one-on-one with a few clients, so I've had a pretty wide variety of experiences in the IT world.
How did you first learn to code? Did you teach yourself or did you go to college to study computer science?
I started tinkering with computers in high school. I got a computer for my 16th birthday, and ripped it apart, rebuilt it, and upgraded it. When I was in college, I was a communications major and wanted to be a sports broadcaster. I had helped my English teacher with her email and she told me the computer center was hiring consultants to sit and moderate computers.
So I was working at the radio station and at the computer center. One day, I got promoted at the Computer Center and became a campus technician, and my manager said, "Mike, you're the only one who works here who isn't an engineering or MIS major. Why?" I said, "I was told to do what you love and I want to be a sports broadcaster." He responded, "Mike, change your major." Then that same week, the college cut the radio station from its budget.
I saw the writing on the wall, changed my major to MIS (management information systems), and I can pretty confidently say it was the best decision I've ever made.
What did you learn in the management information systems major?
Half of the degree is coding, database, and networking, then the other half was accounting, finance, and management. It was a very good degree. The languages I learned in college were COBOL, C++, PowerBuilder, and Visual Basic 6.
How did you become aware of the bootcamp model and what made you want to become part of that?
I used to play basketball with Coding Dojo’s current VP, Kevin, in Seattle about six or eight years ago. We kept in touch and when he joined Coding Dojo he reached out to me about this position. He knew me personally and he knew my background so it was a pretty natural fit.
What did you think of the bootcamp model at first? Did you have to be convinced of its effectiveness?
It seems like there is a stigma out there about bootcamps. Are they really producing a quality product? In comparison to a four-year CS degree, can you really learn in 14 weeks what universities are teaching in four years?
Once Kevin explained to me what the Coding Dojo was, and even the bootcamp industry, I instantly understood. Coding is one of the few occupations that: A, You don't need a big bag of heavy or expensive equipment other than a laptop. And B, You don't have to physically be anywhere. You're not required to be at a factory or a hospital or a courtroom to do your job. And C, most importantly, computer programmers are IT nerds. They have a utopian view of society. They think information should be freely available to the point where the software they write should be freely available, with Open Source licensing. It's a unique position to be in the world, so when I got my head around the bootcamp model, it made instant sense. I started in June 2016.
Was there anything specific about Coding Dojo that attracted you to that particular bootcamp?
I liked the three-stack model. I do believe that that's the best way to learn. It relates completely to my career in that in the 16 years I've been out of school, I've had to re-teach myself several times going from C++ to C#, going from VB 6 to VB.NET, going from ASP1 to ASP2, even iterations of the .NET framework and also teaching myself new languages on the fly, like PHP. So you're constantly retraining yourself. When the opportunity to become a bootcamp leader presented itself, it seemed like a natural fit for me.
Did you have any kind of mentoring or teaching experience before you started teaching at Coding Dojo?
Yes, unofficially. For a while, I coded when I was traveling and built software for this drilling company in LA. My contact there, Frank, was learning to code, taking night classes. He would ask me questions when we would talk about the product I was building for him. He even tried to contribute as a developer on the project. It wasn't a classroom experience, but it was one-on-one mentorship.
What stacks are you focused on teaching at Coding Dojo Chicago?
Here in Chicago, we started our second cohort on September 19th, so we have one cohort that's currently in Python, which I'm helping teach. Then next month when the next cohort starts, our first cohort will move on to Ruby or MEAN. One of our instructors will be teaching that and I will remain and teach Python to the next cohort.
So are you personally mainly teaching Python? What’s your background in Python?
For the first two or three months, yes, but in the long run, I’ll be teaching all of the stacks. We do a rotating schedule where instructors teach the same track for three or four iterations, become a master at it, then move to the next track, and become a master of teaching that.
I learned Python in my training at Coding Dojo’s Seattle campus. For me, coming into this job, I love the idea of working with students and helping change their lives, but at the same time, it's an excellent opportunity for my own career development. I’m going to learn two more stacks of technologies I didn't know previously, and know them well enough to teach them.
For two weeks I sat in the Python track as a student. I went through the entire platform and did all the group activities with the students. I then taught our web fundamentals course. So I got some experience as a teacher and a student. It was very valuable to put myself in the student's shoes and see through their eyes.
Why does Coding Dojo teach Python first?
We teach Python first because we find, from a student perspective, it's the easiest of the stacks that we teach. By easier, I mean the syntax is more like English. Python is very popular in the non computer science world. A lot of scientists and people who use their minds for things other than programming find Python to be very easy to work with.
Then once we get fully stacked here in Chicago and are learning at full steam, the students will have more choices. We require that Python is the first stack, and then you have a choice of what stack you would like to do afterwards. We teach iOS at the end, and we're going to bring that on as a primary offering starting next year.
In the three months you've been at Coding Dojo, what have you found is your personal teaching style?
I try to relate the subject matter to my own experiences. I try to come up with examples from situations I faced as a developer. I find that students hunger for that kind of knowledge. They want to know what it's like in the industry. And so I try to bring examples of problems I faced in my career into my teaching style. But I also like to make analogies, and references to situations that everybody can understand.
How do you help when students get stuck on a problem?
We teach with what we call a “20 Minute Rule”. If a student is stuck on a problem, we ask them to spend 20 minutes on it by themselves. If they can't fix it by themselves in 20 minutes, then we ask them to spend another 20 minutes with the people around them. And then if they still can't solve the problem, all of the students come up to the instructor and say, "We're having this problem." So it creates a teaching opportunity for the instructor to stop what everyone's doing and talk to the whole cohort about the problem.
Can you tell me in a little more detail about why you think it's important for Coding Dojo to be teaching three stacks?
In almost any situation, 20% of your effort is going to produce 80% of your result. And that's really a founding principle at Coding Dojo – we're going to teach you the 20% that you're going to need to know to get 80% of the job done, and we're going to do that through three different technologies. The byproduct of the three stack model is that you will then be prepared to learn a fourth stack or any other additional technology you will certainly, eventually need.
We're teaching you how to learn. We are teaching you a subject matter, and we are making you a subject matter expert, but we're also teaching you how to teach yourself. We are creating self-sufficient developers. You not only know how to write code, but when you come across a problem, you know how to solve it. You know how to go to Stack Exchange, Stack Overflow, or Google to find the information you're looking for. You know how to extract the necessary information from a blog post about a subject, and you distil it down into the information that you need to apply to your problem.
How does having three stacks help students in their career?
You're going to be a self-sufficient, full stack developer in each one of these technologies, which is what employers are looking for. When you're starting out in an industry, you want to have as many doors open to you as possible. The 80-20 rule gets you enough skills to get you in the door of your first job and with three stacks you have some choices as to which direction you want to go. A career progression is shaped like a pyramid. You’re a generalist when you’re starting out, and as you progress you gravitate to your preferred area and become an expert in that more specific subject.
How do you assess students?
At the end of the third week of each stack, we have belt exams. This is our evaluation model. We give students a set of requirements, wireframes, and written instructions, and we give them four hours to build a full stack application. And then we grade them on a scale of 1 to 10 based on a set of criteria. If you get 9.5 or better, we consider you a black belt. If you get from 8 to 9.5, we give you a red belt, and if you get below 8, we ask you to take it again. Even if you do get a red belt we encourage you to take it again. We find that students who achieve multiple black belts tend to be the most successful coming out of the program.
Have you been able to contribute to the bootcamp curriculum at all, and if so what's the Coding Dojo process around iterating on the curriculum?
We just had our semi-annual instructor retreat a couple of weeks ago in San Jose. One of the products of that meeting was a reformulation of our curriculum review board. Instructors who have taught for a long time, and some new instructors with fresh eyes were invited to work on the reviews board to revise a track. That involves updating the tools we're using, changing the way certain ideas are presented, or reworking the path through the track.
Personally, I am working on the curriculum for a one-day intro to Python here in Chicago. Because I started on Python here, it's a natural first step for me to get my hands on the curriculum, create a new product for the Dojo.
What do you think makes an ideal Coding Dojo student? Are there certain types of students who tend to do well in the class?
Yes. There are two aspects to what we deem an ideal student, and it's not technical background, nor prior experience. It's attitude and dedication. If you have the right attitude, and you dedicate yourself to this program, we find that you have a very high probability of success. And it's not about what you've done before. Having some technical background can maybe help students to consume new ideas a little bit quicker, but it's not necessary. Our motto is “We can teach anyone to code who has the right attitude and the right dedication.”
So do you actually think that anyone can learn to code no matter what their background?
Yes. I think our learning platform is excellent at allowing each and every student to learn at their own pace. The bootcamp follows a cadence, and has a very brisk pace. We have a lot of material to cover in a very short period of time, but that's where the attitude and dedication come into play. If you don't allow yourself to get frustrated, you’re good at working in groups of two or three, and you really put in the hours, we can teach anyone who meets that bar.
How many hours a week are you seeing students commit to Coding Dojo?
We're seeing about 70 hours a week per student. They usually get in at 8:30am at the latest and they're here until 6pm, 7pm at night, every night; so they are here 10 or 11 hours a day. Instructors are not in on the weekends, but the students have 24-hour access. We set a high expectation- we tell students they’ll probably utilize 70 to 80 hours a week, six days a week.
Are you involved with the career preparation or job placement aspect?
I do unofficially talk to students about what it's like as I've had a wide range of experiences in my career and have been on the job search quite a few times. It's not part of my official role, but it is something I feel comfortable advising students about.
Also, every day I do algorithms on the whiteboard with students to prepare them for job interviews because that's a very traditional tool used by employers.
What is the goal for a student who completes Coding Dojo? What sort of jobs are they prepared for?
A traditional role is a full-time position as a junior developer at a medium sized company. But I tell students that there are many different ways to earn a living. We have students who come to the Dojo with an app idea that they want to learn how to build. We have students who fancy themselves as entrepreneurs, and we have students who want to just be able to talk the tech talk. Maybe they're project managers who just need to be able to relate better to their developers.
The end game varies based on the student. For the majority of the program, we concentrate on the material. We wait until closer to the end of the bootcamp to work on career development because we don't want our students having to worry about the job search while they learn. In the Dojo, we create a learning environment that is somewhat isolated from the rest of the world to allow them to concentrate and really form that craft.
For our readers who are beginners and thinking about getting into coding or going to a bootcamp, can you recommend any resources or meetups for people in Chicago?
First of all, we have our Coding Dojo algorithm app. That is a very good litmus test for people to let them know whether or not programming is for them. Sometimes students want to do this to make a lot of money for instance, but don't know what they're getting into. Becoming a developer is getting easier, the tools have become easier to use, but the thought process you use to construct things, that doesn’t come naturally to everybody. So the algorithm app is a great way to try that out without any cost or investment.
At Coding Dojo we do Campus Tours every other week, and once a month we do intro to Code workshops. We teach HTML and CSS one-day classes, and as I mentioned, we're working on a one-day Python workshop as well. We're trying to create more short-term classes in that mold on different topics to open doors to other folks in the community. We also host events, for example, we recently hosted the Windy City Rails After Party.
Is there anything else that you want to make sure our readers know about you or the Chicago Coding Dojo in general?
I like to keep a very positive environment here in the Dojo. Developers don't always make good presenters so sometimes they can have dry personalities and lack social skills, but that's never been me. I like to keep a live spirit in the Dojo.
In Chicago right now, because we’re new, we've got a lot of nice discounts going on for the next couple of months. Our cohort sizes are a little bit smaller at this stage, so people who come in now are going to get much more personalized attention from the instructor.