The Software Guild has been teaching .NET/C# and Java at the Ohio coding bootcamp for years, but with the increasing demand for mobile development, they’re launching a new, flexible, part-time Android Development bootcamp in 2017. Curriculum Developer and Lead Instructor Derek Hannah has experience as a web and mobile developer whose interest in mobile development was sparked by the first iPhone. Today, he’s an expert in both Android and iOS, and tells us about his teaching style, the online format of this new Android bootcamp, and why The Software Guild offering is best for students with some programming experience.
What was your background and experience before you got involved with Software Guild? How did you learn to code?
I've worked in a wide breadth of different kinds of programming. I went to college for multimedia which was a lot of animation and after effects including broadcast graphics, with a little bit of web development and programming.
After school, I was really into animation. I was working for an e-learning company developing courses to train employees. We used a lot of Flash animation and coded in ActionScript. That’s how I was introduced to object oriented programming.
What’s your background in mobile development?
I started getting experience in mobile development as soon as the first iPhone came out. I got the beta release of iOS and started working with XCode, which is the IDE (integrated development environment) you use to develop iOS applications, to tinker with before the first iPhone went on sale. I made a couple of mobile applications early on for a company called Moen, and one for Marathon Gas while I was still working at the advertising agency.
After working with the advertising agency, I worked on a grant-tracking application called AmpliFund at StreamLink Software. Then I worked at Realeflow, a company that made SAAS products for real estate investors to track their properties. My last position before working with The Software Guild was at KeyBank, a large enterprise bank in Cleveland, where I worked in both native and hybrid mobile development.
It sounds like you basically taught yourself mobile development.
Yeah. I feel like I really taught myself programming because I went to school for multimedia. I wasn't sure what I wanted to do, and did not get a computer science education at college. So I really am self-taught.
A lot of my former bosses – very experienced people I've talked to who have computer science degrees – say that after a four-year computer science degree, you really only know a lot of theory. You don't know what it takes to build an application from concept to production. There are a lot of vital parts in working on a software team that college does not teach – like version control. Whereas bootcamps are teaching those things. If I had decided to go to a coding bootcamp earlier on in my career, that would have been a better choice than going back to college and paying much more.
How did you get involved with The Software Guild?
Are you just developing the curriculum or will you be teaching the program when it starts?
I'm both the lead instructor and curriculum developer. But unlike The Software Guild’s .NET and Java courses, this Android course is going to be completely online. The students will take it at their leisure and can sign up at any time as there are no specific start and end dates. Eventually, I will be both teaching and writing curriculum. After I finish writing this Android program, I'll teach it for a bit until we bring on another teacher. Then I'll move on to writing the iOS curriculum.
Why did you decide to offer the Android program before the iOS program?
When I was hired, I actually had a lot more iOS experience. I had worked with Android, but I was nowhere near as proficient as I was with iOS. In May 2016, Apple announced that Swift 3 was coming out and there were a lot of breaking changes, so I didn't want to start designing the iOS course and then have to change everything when Swift 3 came out. It made more sense to wait for those things to iron themselves out, then come back and teach iOS.
How has your experience in e-learning and developing online material for high school and college students been useful for writing this Android curriculum?
Throughout my whole career, I keep falling into education, even though it was never intentional. Education is such a big industry, there's so much opportunity, and it just keeps drawing me back. When I first started in e-learning it was to teach employees, then I taught high school and college students, and now that experience is proving valuable in developing a course that is going to teach a wide range of students.
Why does The Software Guild want to introduce a mobile development curriculum?
We see mobile development as an important skill. The Software Guild started out with core curricula like .NET/C# and Java because they knew graduates could easily get jobs working in one of those two languages. Now, mobile development is big enough that there are a lot of jobs out there. The demand for mobile developers is getting closer to that for .NET/C# or Java developers.
This Android program is also more of a supplemental course, because it’s really targeted towards people who already have experience developing in Java.
Tell us about the prerequisites to join the Android program.
You have to pass a basic Java test. Maybe you are an experienced programmer– you know other languages than Java, so you can take our introductory courses to prepare for the Android course. The Android program is also intended for people who are graduating from The Software Guild Java cohort. A Java graduate who wants to learn mobile development would be the perfect student for this Android course.
Would you ever accept beginner-level programmers into the Android course?
If somebody had a lot of experience in a couple of other languages and they didn't know Java yet, they'd probably be able to get up to speed and start the Android course. However, it would be way too hard and confusing to teach yourself the entire Java language while you learn the Android framework. I'm not going to go over things like multithreading in Java. You have to know that already. There are certain things we expect students to know already before they come in. That way, the course isn't gigantic and overwhelming.
What is your workflow or process for putting this Android curriculum together?
First, I spent a couple of months researching; reading as much as I could on the Android documentation, and on the Android developers’ site, until I felt I was a master at Android. Then I built five or six different Android projects, and decided which of those projects I would use as part of the course. I picked the two that covered the most material, but wouldn’t be so complex that the course was too huge.
Then I started to write the curriculum outline. I started by asking myself, "What do students need to know before they can actually build these two Android projects?" Then I started developing high-level lessons about the topics needed in order to build the applications. From there, I started making all the lessons, including step-by-step lessons to build layers of a final application.
The main goal of this Android course is to take an application from a concept all the way through to production, and being ready to put it on the Google Play Store.
What technologies are you going to be including in the curriculum?
We’re using Git for our version control for software, and Bitbucket as a remote Git repository. I'm making a ton of different version control branches for every single lesson and video. That way a student can check out a branch, see what code we've added, then I explain the code that was added in that branch. Then students learn to write that code on their own, use it in their own app, and move forward. When students go to the next branch, we talk about what's been done in that branch.
As far as the technologies for actually building the apps, we’re using Android Studio which is Google's recommended IDE (integrated development environment). The Android framework is really powerful, so we don't have to incorporate a lot of other libraries, although I do have a few select Android-specific libraries that I'm teaching
How long is this Android program going to be?
This course is delivered online, at a student’s own pace, so it could be anywhere from 12 to 18 weeks if they devote 10 hours per week. There are deadlines, but one student could finish more quickly than another student, based on how much time they spend working on it.
What sort of interactions will these online students have with instructors and staff? Are you going to be delivering live lectures or pre-recorded videos?
Students will be taking the course through an online learning management system (LMS), and there will be detailed write-ups accompanied by screencast videos. Students will be watching me code, watching me explain the code, running the app using the IDE, and then students can see a detailed write-up that goes along with that video. You can choose to either read the write-up and watch the videos, or just read the write-up.
What is your own personal teaching style? Do you like to let students struggle on their own, or do you like to be more hands-on and walk them through concepts?
I'm an obsessive person, so when I learn something, I tend to go a little deeper than I probably should, so my teaching style is very detailed. Developing this course, I know that “less is more,” but I still want the student to get a foundational understanding of how the Android operating system works and how to use specific APIs in it.
I will also direct students to great research material that talks about the task that they're trying to accomplish. Students are encouraged to read through that material, see if they can apply it to their own app, and then I will physically walk them through and show them how to set it up.
When you just show a student something, they don't go through that struggle of making mistakes, having to fix those mistakes and then understanding what went wrong. I like to point students to a good resource to figure it out, and to learn a concept.
When you start teaching this course, will you have TAs or mentors working with you in case students need assistance or guidance?
Yes we will have TAs/Developer Mentors but right now I'm the only mobile development brain here.
How are you going to assess student progress as they go through the Android course?
First, students need to check the code into the repository that we've set up for them, so we know that they're writing their code and they're building their own project. And secondly, students have to correctly answer questions at the end of each lesson about what they’ve just learned, before they can move forward.
Will there be a final project that you will assess to see if students are going to graduate from the program?
Students get to build their own final project. It's going to be similar to the projects that they create during the course, but they have a little more leeway in designing it. The students are going to end up with three to four apps by the time they graduate the course, including one they designed and built themselves.
If students want to find jobs as Android developers afterwards, is there any job placement or career advice included?
Students can always ask me about career advice. I'm always willing to help out a good developer. However, Software Guild isn’t putting as much stress on job placement on this course as they are with the full-time .NET/C# and Java coding bootcamps.There is no guaranteed job placement with this course. The course is targeted less towards job seekers, and more towards developers with experience who want to upskill. So you're probably already in the field, working and doing Java right now. You just want to learn Android.
What is the career goal for a student who completes the Android program? What sort of jobs will they be prepared for?
After this course, students could get at least a junior-level position with Android, if not mid-to-senior level, if you have some previous experience.
You’ll also be prepared to take the Google Android Developer Certification. My goal for this course is to cover everything in that certification, so at the end of this course you should be confident that you can pass that test. It costs about $150 to take the test online. They give you a couple of apps, and ask you to implement features or find errors in the apps and fix them.
Do you think there is as much demand for Android developers as iOS or vice versa?
It depends on who you hear it from, because I hear it both ways. I decided to focus more on iOS work early on. Google didn't review the apps going in the Google Play Store as much as Apple did, and I was turned off by that. Early on, iOS had all the market share, but now if you look at worldwide market share, Android has 80% of the mobile market, so it's definitely changing. Android is offering things that iOS isn't, like being able to write apps for cars.
From an employment perspective, I’m approached 50/50 by iOS job recruiters and Android job recruiters. I feel like it's harder for people to fill those Android jobs because iOS is more appealing to developers. Especially with the new Swift language, it's a much more pleasant experience to develop apps than Java. I feel like the demand is the same, but there's less Android talent. So if you're deciding to learn iOS or Android first– and this is coming from a guy that loves iOS– I would consider learning Android first.
Do you have any suggestions of resources where people can find out what Android development is like?
Yes. Androiddevelopers.com. They have a lot of training guides. That's where a lot of the documentation for Android is too; and that's where I go when I have a question.
Is there anything else that prospective students should know about this Android course?
If you still consider yourself a beginner in programming, or maybe you've been programming for a couple of years and you're thinking about getting more into mobile; I would warn developers that mobile is very specific, and if you decide to learn mobile too early on, you're almost limiting yourself.