Tell us a bit about your background before joining Coding Dojo’s Los Angeles coding bootcamp as an instructor.
I started playing music when I was young and always wanted to be a professional musician. Then I eventually moved down to LA to to play professionally. At the time, I also had an interest in theoretical physics and ended up injuring my hand. It didn’t kill my career, but it did make me re-evaluate my career path.
So, I decided to go back to school and become a physicist. Around the same time, one of my most respected instructors guided me in saying, “Don’t get a career in physics — you’ll never work.” Normally I would have tried to run the gauntlet and gladly tried to to prove her wrong but, for whatever reason, I put a lot of weight on her advice and decided to switch majors.
When I was eight I had a Commodore 64 (C64) computer and I had done some programming and had written a game. So I decided to move over to computer science and I did some things there. I was working with a company that sold local area networks, and we had a client that was looking for some basic programming. I started working with them on various things, started really liking it, and wound up getting a consulting gig writing C code for a networking company.
I was still in school, but decided to go to the job back and see –if I was to complete my degree and get my PhD in computer science, what type of salary could I expect to make? And I realized that I was making more at the time then I could expect to make with a PhD. So I dropped out of school and started consulting full time.
That was the beginning of my career, about 25 years ago now.
That’s interesting that someone with a PhD in computer science could end up with a lower salary than someone who goes the non-traditional route. Could you elaborate?
It’s interesting because there is a problem in educational institutions and computer science. It’s very academic and ivory tower — a lot of theory. Not necessarily applicable or practical in the real world. What ends up happening is you get people that graduate with their masters degree or PhD and they know some computer science aspect and theory, but for the most part the world doesn’t run on those things. The world runs on what we teach [at Coding Dojo].
The vast majority of people who come out of those programs don’t have the basic skills to get a job in the job market. So the things I was doing and how I taught myself programming was more centered in the real-world and useful to the marketplace rather than knowing how to write out an algorithm or optimize a search.
The jobs for PhDs and computer scientists — the places really looking for those people — aren’t out there unless you want to work for large companies like Intel. There’s only a small number of companies that need those types of people compared to the number of companies that need general computer programming developers.
Since you started out in the arts before transitioning to the technology space, did you go through any sort of formal training to learn how to program?
My original training was literally with my C64 and I was fascinated with it. I also had a couple original computer magazines like Byte and they would publish snippets of code in the back and I would copy them onto my computer and start to understand what they were doing. I became really fascinated with the ability to create different colored squares on the computer screen and have them move around. It was just really cool to me. Then that started to evolve into a PacMan like game, which was hugely popular when I was a kid. That was my entry point.
Now the code in C64 is kind of ugly, but I still managed to get things working. And when I was in school and shifted my major from physics to computer science I was taking some basic entry level programming classes. I learned Pascal, learned the C class and languages like that, so I had a couple semesters of formal training before I stopped going. But the programming logic stuff I already knew and it already made sense.
Most of it was really just on the job training. I’d either have to figure something out on my own and go do it. Either sort things out myself or talking to other people to get help on it. Or, I would have to invent my own solution or talk to others who may have a better solution.
I also had two mentors along the way that really helped me. One really taught me a lot about analysis and design and the philosophy for approaching that stuff. Still use a lot of the methodological language I learned from him today. And then there was another one who taught me the nuts and bolts of being a competent developer. For example, if he had to type more than three characters he would find a way to copy and paste from somewhere else in the code. Most of the code he wrote he cobbled together this way. It was crazy to watch him — he was really fast and his code was beautiful.
Do you think non-traditional backgrounds, such as experience in the arts, can actually help in becoming a stronger developer?
It’s really interesting. I’ve noticed over the year that people with an aptitude for music, or who are musicians, almost invariably tend to have skill with the computer and vice versa. There is something about music specifically. If music makes sense to you and you get music theory there is just an immediate translation to computer logic and programming logic. It just makes sense on a very fundamental level. Being a musician from a very young age certainly helped my path a lot.
Programming is an art. There’s a lot of science to it, but to write elegant, simple, effective code is really an art and something I think lost among a lot of developers. I tend to differentiate developers between hackers and architects. Where a hacker will take a problem, write code and be able to solve the problem, those problems tend to be pretty inelegant, can be fairly brittle, and the minute there is slight variation in the problem the solution falls apart.
Then there is the architect who is writing simple and elegant code that meets and solves a wide array of permutations of a problem – -if not all of them are foreseeable. Constantly abstracting things and that’s where I believe programming really gets elevated to an art form. Through the ability to look at problems, see the meta layer of it, and solve that meta layer rather than just problem solve. Whether you are a visual artist, or musician there is a lot of that sort of thing that goes into creating art so I think there is a good translation between them all. I’d be hard pressed to think of someone I knew who was a really great programmer who wasn’t also a great musician. And I’d be hard pressed to find a musician who didn’t already work on computers or at least know computers well. There is some bizarre connection there.
Were you familiar with coding bootcamps before joining Coding Dojo? Being in the industry yourself, did you have to be convinced of the bootcamp model at all?
Before I came to Coding Dojo I was aware of bootcamps. I knew they were starting to sprout up. I had some skepticism about them, to be completely honest.
My interview process included a lot of discussion around the bootcamp approach and expectation that we had of student outcomes. I was very curious of the depth the student would be able to get to in any one of the three stacks, let alone any appreciable depth.
It took me some time to wrap my mind around how it was possible. The thing that really cemented it for me was when Michael Choi, (Coding Dojo’s founder) and I started talking about his teaching philosophy and approach. We both believed that anyone could learn to do this. We were very much kindred spirits in terms of how we go about presenting the materials, the pace we believe people can learn, the amount of materials people can absorb and how it can be presented to be most effectively received.
I’ve been teaching my whole life and getting positive feedback. I think the reason I’ve been successful in teaching is because I pay a lot of attention to what it is I am doing and how I am communicating it and then how students are receiving. I can understand what they aren’t understanding, and why, and modify as needed. I’m constantly course correcting. Even in the middle of a lecture I will be course correcting. And Michael is very much that person. The more I started to dig into the curriculum and training, I realized Coding Dojo’s approach is exactly how I would have chosen to do things.
Coding Dojo’s mission of changing lives also really resonated with me. It starts with the fact that this company was started by an individual who is just a genuinely sweet caring human being, that truly cares about changing people’s lives, and that DNA has extended throughout the entire organization.
Do you have a personal teaching methodology or techniques that you use in the classroom?
I subscribe to an approach I call “see-do-teach.” When I’m teaching someone something I want them to watch me do it, and see what I have to say about it. Then I give them the opportunity to do it themselves. Then the final step of the puzzle, where I think a lot of education falls short, is I want that person to go take what they just learned and show somebody else how to do it. I even brought my kids up with this model.
I just witnessed it last night when someone from our third track cohort was helping someone from our first track cohort. As he was explaining the issue to the first track student, I saw that he understood what he was teaching on an entirely new level. When he walked away I asked him about it and he said, “Yes, it just all of a sudden really made sense! I got it, and realized I got it!”
There’s an important moment there when you begin to talk about these concepts.
It even boils down into pair programming. I can’t tell you how many times I’ve been working on some code for five hours trying to solve a problem. I have someone come over to my desk, and I say, “I’m trying to do X and Y,” and then I see almost immediately what is holding me back.
It’s what gives my students appreciable understanding of something — not just to the outside world, but for themselves. They can actually see that they get it.
What is your favorite part about working as an instructor at Coding Dojo?
My favorite part of it is being involved in the process of helping somebody make a change in their life. It’s hugely important. It’s why out of all of the things I’ve done, I always end up teaching at some point. I want to help people better themselves. There are many places you can go to have an effect, but not as many places like Coding Dojo where you can have a profound effect.
What types of backgrounds do students who have attend Coding Dojo’s LA campus?
When did you start in your role as a bootcamp leader/instructor?
I joined in the beginning of October 2015 at the San Jose location for training, and moved to LA at the end of October to run the LA campus. There are two other fabulous instructors with me in LA, and we’re looking to bring in TAs.
What types of projects do students work on during the 14-weeks?
They start building projects under heavy guidance, but as they move forward in the program they build projects that they want to work on. We approve the project, and what we’re looking for is projects that include the languages and materials we cover and that will help their portfolio shine.
Our students come up with great ideas. Some of the cool stuff includes a group of students that built an online iTunes application for publishing, distributing and selling digital art. We had someone build a big dashboard voice translator which takes any text you put in and you can translate it into any language and speak that text. Another project was an online training platform where, if you were the instructor, you had a wall/grid of all the people taking your class in video, and if you were a student you had a large video of the instructor and small view of yourself only. Really spectacular projects that will be great portfolio pieces!
What is a day like on campus?
We start off with an algorithm session first thing in the morning. By 9 o’clock everyone is here, although most students come much earlier. I get in around 7am, and I’m rarely the first one here. At 9AM we start off with algorithms, and get people woken up and thinking. Push their computer science skills forward. It’s training them to stand in front of a whiteboard and solve problems without the computer helping them.
That usually goes until about 10 o’clock, when we start our morning lectures for each stack. These lectures can range anywhere from 20 minutes to an hour, depending on what’s being covered during the day. We frequently do demos during the lectures and build things on the fly to demonstrate what we are talking about and show the thought process.
For the rest of the day, students are working on the platform, working on projects and assignments. The instructors float around and make sure to answer any questions. We tend to pay a lot of attention to the types and quality of questions we receive and sometimes we bring students together who are in the same boat and have breakout sessions where we’ll work through where they are getting stuck. Or we’ll do a secondary lecture or demo to help keep them moving forward if there’s something they aren’t quite getting.
What do you do if someone seems to be struggling or not keeping up with the rest of the cohort?
We get this question a lot from students coming in. Because we are so involved on a day-day basis with students while they’re working through things, we tend to know ahead who is having problems. First, over the course of the day we will cover areas where we think they may be struggling. This is usually in a group since its hardly ever a single person having that one problem or lack of understanding.
What we try to do is we get them together and do anything from an extra lecture, demo or group assignment. One time I had a student who was sick for two days and fell behind. So I took one of the students who was excelling at the material and really ahead of the game, and paired him with the other guy who was behind on the materials. The guy who was behind was getting help from a peer, and the student who was excelling and the guy who was ahead was able to teach. We do a lot of stuff like that.
We’ve had a couple students who have fallen behind, and we offer to sit with them on a regular basis to talk through stuff. That may be a 1:1 thing or more of a group discussion. Everyday they know they have time where they can get additional support, and that usually brings them up-to-speed.
I see you’ve worked in more than 20 different programming languages over the years. What are your thoughts on learning three languages at the same time? Would it be better to start out going to another bootcamp where you only learn one language?
No, and I actually speak on this a Iot. I have never gone into a consulting job for a company where I knew every technology they were using. In fact, when I was interviewing for one of my most prestigious job at a national laboratory, the interviewer asked me if I was familiar with a dozen technologies. I didn’t think I was the right fit since there were several I hadn’t ever heard of before. However, I got a job offer right away because I knew one of the languages and the other ones I could learn down the road.
The point is, knowing a variety of languages, especially in this day and age, really opens up the job market tremendously for you. You may really know MEAN stack, but there is a PHP job you can get while you’re waiting to find that great MEAN job. So the fact you know multiple languages is extremely beneficial. And it’s gotten to the point where it’s so common for people to know multiple languages that it’s almost a detriment if you don’t know them.
Do you find that students can be job ready in each stack by the end of 14 weeks?
Yes. Absolutely. And I find that people tend to gravitate towards a certain stack where it becomes their favorite. Often people fall in love with Ruby the most. I think because it’s the most recent stack that they work in, and it’s nice combination of all the knowledge they have put together from the prior two stacks, plus a really heavy bend towards object oriented programming at the point where there really starting to make sense of it. There’s also students who fell in love with MEAN or PHP. You’ll fall in love with one that really speaks to you and that you’re particularly good at, but having skills in other languages are great. I also really appreciate how students redundantly build the same things throughout all three stacks, and its teaching them that they understand the underlying concepts across languages. The language itself is ultimately irrelevant.
Are there any technologies that you yourself are very passionate about?
I developed a vast majority of my skills through a language called Smalltalk (came out in 1974 to teach children how to code) and its still out in the wild, but pretty much a dying language. But that was my passion. It was the most beautiful and elegant language to me. My most recent passions have been iOS related since that’s the closest I can get to Smalltalk.