[As of October 13, 2017, The Iron Yard will no longer be operating.] Tom was a developer for nearly 30 years before he discovered coding bootcamps and became an iOS instructor at The Iron Yard. He began teaching at the DC campus and recently moved back to his hometown of Detroit to launch the mobile engineering program at The Iron Yard’s new Detroit campus. Tom tells us how he taught himself iOS, why he thinks bootcamps are essential to meet the industry’s talent demand, and his hands-on approach to teaching.
Can you tell me about your background and experience before you joined The Iron Yard?
I've been coding professionally for almost 30 years, but even before that, I was coding. When I was a kid my dad gave me a computer, and that’s when I first started playing around with coding, learning Basic and other programming languages. I've even been doing mobile development before we even called it mobile, when we used devices such as PDAs, and I've been developing for iOS for about six years now.
In the past, I've worked for a wide variety of companies ranging from a very large hospital system to very small startups and everywhere in between. Most recently, I was running my own business doing app development for various companies around southeast Michigan.
How did you learn to code originally? Did you go to college and do a computer science degree or how did it work 30 years ago?
I’m a mixture – I’m partly self-taught, I’ve had a bit of mentoring, and a bit of formal education. When I got my first computer, I was self-taught. I just learned whatever I wanted to develop at the time. When I started coding in college we didn't call it computer science at the time, we called it Management Information Systems, but it included all of the same classes as what would be considered computer science today. Classes included programming, management related to information technology, and how to manage the technology.
When I decided to learn iOS many years later, I had never done any Mac programming, or any Objective-C programming which is what iOS developers used at the time. I taught myself Objective-C, but, along with that, I got myself a mentor. So when I got stuck, my mentor could effectively push me over my hurdle and make sure I was going in the right direction.
What made you decide to switch from running your own business doing app development to becoming a teacher?
I had already been teaching part-time at one of the local code schools in Detroit, and I enjoyed it a lot. It was one of my favorite things, and I had a moment where I was like, "I wonder if there are places out there where I can do this full time." So I started doing research on code schools and I found The Iron Yard. I love teaching, I love coding, I love seeing people grow and develop and being able to move from almost no code knowledge into getting great junior developer jobs.
What did you think of the coding bootcamp model when you first came across it?
In my opinion, traditional education misses the boat a bit. They do a good job of teaching theory and a lot of important things. There are absolutely developers who need to know the hundreds of ways to write algorithms and how to optimize that for different environments. However, we have a problem in the industry where there just aren't enough people to fill the number of jobs that are open, and, importantly, the industry has a severe lack of diversity.
The current approach of getting students into computer science programs in traditional settings does not encourage the diversity we need in this industry. We need a different way of thinking. I don't expect or encourage people to think that coming out of a code school they’ll be equivalent to a computer science major working on innovating the newest technologies, methods, and approaches. However, not all the jobs in the market require that type of knowledge. There are plenty of jobs where we need people to crank out code and be good developers, not necessarily computer science people thinking about the theory side of things. I think there's room for both –they both fill important roles – and the number of job openings seems to support this too.
How is the Detroit campus going so far?
The Detroit campus is brand new actually. My last iOS cohort which finished two weeks ago was our first cohort in Detroit. So it is a little over three months old as far as students go. We have a .NET class going right now, and the next iOS class starts in a few weeks.
What campus did you start out working at with The Iron Yard and why did you move to Detroit?
With The Iron Yard, I started in DC and worked there for a year. Before that, I was actually living in Detroit. While I was in DC, The Iron Yard announced several new campus locations, including Detroit. I said, "If you open a place in Detroit, that's my home. I'd be excited to go back and help start the campus." And that's what happened.
What do you think prompted The Iron Yard to go ahead and start a campus in Detroit?
Detroit is a really interesting community and we have a really strong tech scene in southeast Michigan. There are a lot of startups, a lot of large companies, with the automakers and their suppliers, and a whole variety of other companies in other industries. The tech scene is growing and has a huge need for more developers. At any given time, there are more than 2,000 jobs open in Detroit for developers.
Plus, there is a large underserved market of people in Detroit for whom a traditional education hasn't worked (or they went through traditional education and are ready for a career change.) So there's a huge opportunity in the city, both on the demand side and the supply side, where there are plenty of jobs and plenty of people looking for opportunities.
It’s also a great city. There's a huge revitalization going on. Even after the year I was in DC, it was easy to notice that the changes in Detroit were pretty phenomenal. So much is going on, so many businesses are moving downtown. It's a thriving, booming market.
Where in Detroit is The Iron Yard campus?
We are right on Campus Martius, which is the literal center of the city. My classroom looks out on a marker in the ground for the center of the city.
Can you tell me a bit more about your teaching experience prior to The Iron Yard?
At one of my early jobs developing at a hospital, I trained doctors, nurses, and other staff on how to use software technology. I've also led many conferences and workshops. I actually teach outside of coding as well. I do workshops on data visualization, organizing and planning data, communication, brainstorming, and many other different classes.
Can you tell me more about your background in iOS?
When Apple announced the iPhone, everybody was excited. That was a kind of a game changer, and energized the tech industry in a way that hadn't been done since '96 with the Internet. At first, I didn't have plans to get into iOS development. I told some friends that I wanted to create a cookbook. Everybody said, "That's a really bad idea. Cookbooks are horrible to create. Mobile is better, and we would rather have mobile." So I'm like, "Well, I'm a programmer, I'll just create my own cookbook for mobile." So I created a cooking app. That was my first app. I taught myself Objective-C and other things to build that cookbook app.
Once I developed that, and it was up on the app store, many people noticed it and said, "You're an app developer. I have an app idea.” So one app lead to another, and now I have about 20 apps that I've developed for myself or other people. I did that for about five years before switching over to The Iron Yard full-time.
At The Iron Yard, are you focusing more on Swift or on Objective-C or both?
We teach both, and that's a very conscious choice. Our iOS instructor team is constantly looking at the technology. It's something we talk about at least monthly – about what the new developments are, what mix of things to teach. I think it would be bad for the students to learn only Swift – even though Swift is a much easier language to use, it is absolutely the future, it’s very powerful and I use it for my own personal development.
But the reality is, out in the market, businesses aren't all using Swift yet. Having personally worked in both the Detroit and DC markets, I know there is a massive amount of Objective-C code still out there. To turn out students who only know Swift is a disservice to both the companies and the students. Pieces are getting moved to Swift, and we need students to be ready for that. They need to be competent in both. For at least another year or two, possibly five, Objective-C is not going away as a competency students need for jobs.
Do you focus slightly more on one or the other or is it equally split?
It’s a mix. Right now, I do the first third of the class in Objective-C, teaching that as the foundation. I would much rather start with Swift because it's an easier language for students to learn. It's more friendly, simpler, and cleaner. But the problem is, if you start with Swift and then take students to Objective-C, they really don't like Objective-C because it's so hard and different. But if they move from Objective-C to Swift, they have a more favorable view of Objective-C. So we start with Objective-C. In the fourth week, students have a good enough grasp of Objective-C to move onto Swift.
Once you switch to Swift, are you only teaching and building products only in Swift?
We stay mostly in Swift. We do have final projects where students are allowed to choose Objective-C or Swift. If you're trying to develop an app completely in Swift, inevitably you're going to have to integrate some parts which are still built in Objective-C. Students have to understand how to make them work together inside the same app. You have to understand how the two talk to each other and possibly look at some Objective-C code to make sure it works in your Swift project.
How do you and the other instructors iterate on and update the curriculum?
Apple changes iOS and Swift versions every year. Not only are we getting constant changes to the operating system with new features and new things that we can do with the phone, but we're also getting significant language changes. One new feature this year allows us to integrate our apps with Siri. Certainly, we'll try to incorporate that into the class now so students understand how that works.
We have to continually update our curriculum to make sure we're teaching students the language they're going to be using to code. Those changes have been coming about every three months. Right now, Swift 3 is out, but we still have to be able to support Swift 2. If students get a job at a shop that's been doing Swift for a year, they're going to find Swift 2 code which doesn't match Swift 3 code. So it's too soon to start teaching Swift 3. It's not even a stable language yet and probably won’t be until September. Then the question is at what point do we start teaching Swift 3? Instructors are experimenting with it and playing with it and trying to figure out all the differences. It's a very fine balance in an industry like mobile that's changing so quickly.
How does the curriculum differ in Detroit compared with other campuses?
Each market has the ability to flex and adapt the curriculum with things that are new or interesting or targeted at the specific group of students. Certain markets, say the Florida market, for example, has a strong community of game developers. Michigan doesn't have that. DC doesn't have that. In Michigan and DC, we don't teach the game development pieces. It really is fun but not practical for them to get jobs. Whereas in Florida there is a possibility that they could go work for a game development company as an iOS developer.
All of our campuses talk to our local advisory board companies in the market to see what skills they actually need new hires to have, which technologies and tools they're using and their approach to making sure we're getting the students ready for the market they're going to be working in.
What have you found is your own personal teaching style?
A couple of years ago I thought, "I should probably look at Android." So I got a couple of books and started doing tutorials and things. I was really frustrated. I took a step back and said, "This is not how I learn. This is not how I teach people."
That's when I realized what my core philosophy is as a teacher. I like learning to build on things the students already know, and build on things they want to do. I like to start with the “do” and then come back to the theory. Once you see it in practice you can start to see, "Oh, okay, I get what this thing is doing, now I can reuse this idea in other ways." But you're not ready for theory at the beginning because you don't know how to apply it. For the classes we teach at code schools, I think starting with the practical and working it back into the theoretical is better than starting with the theoretical and then figuring out how to apply it.
How many instructors do you have there at the Detroit campus? What’s your student to teacher ratio?
Currently, we have two instructors, one for iOS and one for .NET. We're going to keep it like that for the rest of the year and then we'll add another one or two instructors next year with new classes. In general, we try to keep our class sizes around 10 to 12 students per instructor. If it gets much bigger than that, then we'll bring in TA's or Assistant Instructors to keep a low student to teacher ratio.
Are you running the classes staggered or are you overlapping them a bit?
For the remainder of this year, they're going to be staggered, one after the other. But next year we'll have .NET, and iOS both starting mid-January together.
It should be quite nice because one of the things that programmers have to do is work with other people who are not in their same language or area of expertise. So by having .NET and iOS running concurrently in Detroit, the .NET students can make a back end, build the server, create the API, and have the iOS students create the front end, the mobile app that consumes that API and presents it to the user. Joint projects will be incredibly valuable in the real world because that is really how you work.
How do you assess student progress and make sure they're progressing at the same pace as the rest of the class?
I see everybody's homework every day and sit with each student one-on-one at least every other day, if not daily. I have a good idea of where they're at and what's going on, so I can see where they're struggling and where I need to refocus a lecture. If I see everybody is struggling with the same stuff, it's worth coming back and spending time on it the next day.
In addition, I will occasionally throw in quizzes. They are not graded quizzes. It's more to let me know that if everybody misses the same question, I probably need to go over that again. I do maybe six quizzes over the 12 weeks. It's not so much a grade as it is a feedback mechanism for me to make sure they're understanding the material at a deeper level.
What sort of students take the iOS bootcamp? Are they mainly complete beginners or were they experienced coders who wanted to learn iOS?
In all my classes, I've had a mix. Most students are coming in with nothing. I've had some computer science majors who took the class on their summer break because their school wasn't offering iOS and they wanted to add it. But in general, the typical student is someone who is looking to change jobs, has an unsatisfying or dead end job, and wants to take up mobile app development. They are typically mid-20s, although I've had mid-30s up to 50s. I even had one retiree once who was just adding it as a fun hobby to do during retirement.
Do you have any resources or meetups you can recommend in Detroit for people who want to find out about what coding or mobile development is like?
The metro Detroit area is pretty rich with Meetups which is great. If you want to get into mobile development both Ann Arbor and Detroit have Mobile Monday groups, CocoaHeads groups, Android groups, and Girl Develop It. All of the groups are well attended. And even other cities, like Grand Rapids, have their own emerging meetup groups. The metro Detroit area is a friendly and welcoming community.
Do you have any meetups or intro-nights at The Iron Yard?
We do. Typically once a week or once every other week, we have “Get to Know The Iron Yard” events where people come hang out, see the campus, and meet everybody. I think even more interesting than just hanging out and talking, is coming to some of our crash courses. We have rotating crash courses on .NET, and mobile app design. You can visit The Iron Yard Meetup page for upcoming dates.