TurnToTech is a mobile development bootcamp where students can choose to learn iOS or Android development. TurnToTech co-founder and CEO Aditya Narayan tells us about the student experience, what’s next for Mobile in 2016, and how to choose between iOS and Android.
Why does TurnToTech offer mobile (iOS and Android) bootcamps only when most others offer web?
First of all it’s based on our sense of the future of technology. Computing has gone mobile. Look at Facebook – for every $4 they made last quarter, $3 came from mobile. I believe this year more iPhones will be sold than Windows PC’s. And iPhones have only 20% of the world market. Hardware like CPUs and GPUs are getting cheaper and more ubiquitous. With 5G coming, mobile data speeds are getting even faster. Battery life of mobile devices is also improving constantly. There are even reports of smartphones under $5. So it’s quite obvious that computing is getting smaller and faster. It’s exciting to see how far this technology will go.
Whichever way you want to analyze it, mobile will be in demand for years and years to come. We want our students to be proficient in the right technology and equipped to deal with tomorrow’s tools and skills.
The second reason we are mobile focused is, for a beginner trying to get into technology now, mobile is less risky. If you learn Android or iOS, not only do you have a highly desired skill-set, you also compete with fewer experts in the market because mobile is still in its infancy compared to web development for larger screens.
And thirdly, we think developing apps for mobile is much more fun than most other forms of programming! You can of create games, and you get to play with a lot more technology than on a desktop computer – like the GPS, gyroscope, camera, touch screen, push notifications. Even cellular network speeds are getting close to wired speeds now.
When we say the word “mobile”, what are we talking about? Are we talking about iOS and Android, are we talking about mobile optimized web?
Mobile is a broad term. It means anything to do with an always-on, small mobile device that’s on the move – for now, smartphones, tablets and smartwatches. Only time will tell what it will mean tomorrow. Mobile also covers the mobile web but the biggest successes in mobile have been native mobile apps like WhatsApp, Instagram, and Snapchat.
When we talk about mobile, that also covers the enterprise side of things, like managing a variety of mobile devices in a large company, enforcing consistent security policies, etc. In other words, everything that’s happening post-PC has the catch-all term ‘mobile’.
When we say mobile development at TurnToTech, we are talking about ‘native’ app development for smartphones, tablets, and smartwatches.
When we hear the term native app vs. non-native app, what’s the difference between those?
Non-native apps are usually written to work on multiple platforms like iOS and Android at the same time. This isn’t a style that’s encouraged by Apple or Google but it’s still popular because it sounds attractive to write an app once and deploy to multiple platforms simultaneously. Non-native apps are also usually written in languages that are easier to handle for beginners.
Native apps are what you write in the platform’s native language, using the vendor’s approved development tools and languages. This means writing Android apps in Java and iOS apps in Swift or Objective-C. Native apps have to be written specifically for each platform – a native iOS app cannot run on Android or the other way around.
Our main goal is to get our students jobs and demand from employers is mainly for native app developers. That’s why we focus on native app development.
I get the question all the time “I’ve decided I want to learn mobile- should I learn iOS or Android?” How do you suggest somebody make that decision?
In many ways, because there is so much opportunity in mobile right now, it’s completely legitimate to go with what you like to use as a user . But you can be more analytical than that. If your aspirations tied to the international market – Android is a good option. They have around 80% of the world market. But if your focus is the U.S. market or early adopters of technology, or your goal is to app monetization through in-app purchases or paid apps – iOS is a better choice. And remember, in the U.S., iOS and Android have almost the same market share.
But it’s not a once in a lifetime decision. If you can write apps in iOS you can easily transition to the Android and vice versa. The underlying fundamentals are very similar.
Is one easier to learn than the other?
No. If somebody’s starting from scratch, Android or iOS should take roughly the same time to pick up. Most people don’t know this but there’s a remarkable level of design and architectural similarity between Java for Android apps and Objective-C for iOS apps.
iOS and Android are essentially solving the same problems – providing a good app store experience, good battery life, providing lots of sensors like gyroscope and GPS, fast networking, responsive touchscreens, asynchronous APIs, good development and debugging tools. It’s not just the languages but the underlying platforms are very similar too.
But here’s a sidebar to this: people with experience in Java are likely to find Android easier to get started with, and people with experience in C++ or C are likely to find iOS easier to pick up.
Why not just use cross-platform technology like PhoneGap, instead of deciding between iOS and Android?
I recommend native because that’s the official approach from Apple and Google.
With fast moving targets such as Android and iOS, I’d say there’s also a good chance of encountering the well-known ‘write once debug everywhere’ problem. This means even though your ‘non-native’ toolkit could give you that write once run anywhere app, in reality, you are debugging it on iOS and Android for a while before it can run properly.
Then there’s also the question of what we call ‘vendor risk’ – how well these third party tools are supported. What if they don’t fix their bugs on time? What if the vendor loses interest in those tools and moves on to other things? It could also be an open source effort and there you could have similar issues – the developers on that project could move on to more exciting projects.
Maybe someday the cross-platform technologies will be on par or better than native from both a technical and a product risk perspective, but for now, I think native is the way to go. But to give you a counter example, Java on the server-side is a great example of an extremely successful cross-platform technology. On the client-side, we have the usual web technologies, HTML and CSS which are great cross-platform technologies. But on mobile, they still have some catching up to do compared to native. So things can improve but I think it’s a few years away.
Do you think people should learn web development before they learn mobile? Or do you think mobile can be good first platform?
There’s a misconception, especially by more experienced non-mobile developers, that mobile is just a different skin on an application. That’s not true anymore. You don’t build a web app first, then add mobile. Even traditional tech companies like IBM have adopted a ‘mobile first’ slogan.
Here’s a simple Venn diagram with web on the left, mobile on the right and an intersection in the middle.
On the left, are technologies exclusive to web development and technologies for serving HTML. To the right are mobile languages and APIs for iOS or Android, and the tools used for apps. You would also get conceptual topics like GPS, power efficiency and unstable networks and so on. And in the middle would be the common stuff such as databases, cloud services, and security aspects.
As you can see, there’s a lot that’s common between web development and mobile development and a lot that’s fundamentally different – there’s an entire UX component that’s different in mobile. But the real difference is the focus, not so much the technology. So you can go from mobile to web or the other way.
Does TurnToTech accept complete beginners? How much experience should an applicant have before applying?
The key is for us to understand if applicants will be successful in a program like ours. That depends on their motivation level and aptitude, not necessarily their programming experience. Our application process is interactive. We talk one-on-one with everyone who applies. If there are areas that need improvement, we give them a chance to prepare.
Before they start however, every student needs to go through an assessment with an instructor who has the final word on whether they are accepted. The assessment covers a variety of topics including some essentials of programming.
As an example, one of our students who had never programmed before she joined TurnToTech, recently got a job as an Android developer before she finished the program. She had spent some time learning Ruby on Codecademy before applying, but we accepted her because she was extremely motivated. To us, stories like this prove how important it is not to take an auto-pilot approach to student acceptance.
How would you describe the mobile curriculum at TurnToTech?
We have a project-based curriculum and don’t have cohorts. This means when you come in, you start with a certain set of projects. There may be four or five people who start the course together but it could also be just one person starting on a given day. If someone has a little more experience they can move faster through the projects and move on to more advanced topics. Some people want to take a few extra days to read through the content before they move on to the next step, which is absolutely fine. Students also form informal groups between themselves depending on their learning style. Once they finish one project, they move on to the next, and the projects get harder in complexity as you go. This happens in a way that best works for every student. Throughout the process, students can get as much one-on-one time with our instructors as they want. This makes sure nobody is left behind and motivation levels are high.
There’s also a four-week mentor-assisted applied skills phase, which is similar to a traditional internship. Students get to spend time on a real project. This phase is 100% educational by design and you get one-on-one time as usual with instructors. You learn some really practical things like working in a group, using tools professionals use, how to wrap your head around code written by other developers, and debugging problems that were left behind by someone else. This phase prepares you for the real world. And usually during this phase, you are actively interviewing, tweaking your online profiles and sharpening your interview skills.
Our present approach at TurnToTech is the closest we’ve ever come to providing ‘personalized education’ for every student.
What have you noticed about jobs in mobile and what types of companies are hiring from TurnToTech specifically?
We see a lot more startups looking for mobile developers. They are startups making all kinds of apps – for productivity, e-commerce, music, social media, or instant messaging. These are not just small startups. They could be well-funded big startups or well-established companies.
Mobile is a relatively new thing in larger, more established companies. They will get there – I’m in touch with a lot of top executives at large companies. They’re all actively pursuing mobile apps, they’re hiring developers and they’re actively budgeting for more mobile projects.
How about consultancies or agencies? Do you get a lot of those types of employers who want to hire from TurnToTech?
Definitely. We work with employers from dev shops for a good reason. Large companies that haven’t yet built internal mobile development teams want to experiment first. It’s probably not a coincidence that several of our grads work for one of the largest media companies in the world – some have been hired directly and some through dev shops. Wherever there’s mobile development activity, there’s a good chance you’ll find someone from TurnToTech.
In 2014, Swift was a pretty big announcement and we saw bootcamps adapt to that, and start adding Swift to the curriculum. What do you see as the biggest trends in 2016?
I believe the biggest thing for 2016 will be mobile security. Mobile development is on the rise, and there will be a lot more people on smartphones connected to data networks and when that happens, you start seeing are security issues.
We’ll also see a lot more demand coming from the larger companies, especially from media companies. There have been some major announcements like the Apple/IBM partnership so I think they’re going to announce a lot of apps, which will make some other large companies start developing their own apps.
In the startup world, I don’t see things slowing down. There could be a market correction and that may affect hiring in other areas. But I doubt that’ll have an impact on the mobile side of things because the smartest companies have mobile as a big part of their strategy, and these smarter companies typically can raise money in any environment.
Does TurnToTech put a lot of emphasis on learning hardware?
Even though we don’t focus directly on hardware, some of that is inevitable as a smartphone is probably the densest piece of hardware in terms of the number of components and sensors that we use on a daily basis. So in apps, you can’t get away from the limitations of a limited battery life. You must understand that networks are unreliable. If you use sensors for your app like GPS or iBeacons – you definitely need to understand a bit of the physical layout of these things. If you have a high frame-rate app like a game you need to understand GPUs. And then there’s the question of different screen sizes and pixel densities. So definitely, mobile is not at a point where a software developer can be completely agnostic to hardware – and that obviously makes things more exciting. We talk about hardware a lot though mostly from a software perspective.
What lessons have you’ve learned as a bootcamp founder since TurnToTech launched two years ago?
- It took us some time to understand at what experience level somebody should be joining a bootcamp. At first I thought fairly experienced developers would want to learn mobile as mobile skills require practice even if you’re experienced. Although experienced developers are attracted to our program, it turns out there’s also a lot of beginner interest in mobile, so we had to adapt our curriculum to cater to diverse experience levels.
- We incorrectly assumed the programming language itself would come naturally to the students and that we would emphasize mainly the mobile apps development aspects and the platform APIs. It turned out a lot of students wanted more emphasis on the programming fundamentals as well. We made these changes very early on and it has been very successful.
- We learned how important the career readiness side of things is. We took it for granted that students would take care of their resumes and online profiles and stay motivated motivation during the job search. But we realized they really thrive when we offer a lot of support there. We also started helping students with job interviews, and teaching them how to approach CS-type problems some interviewers like to ask, so we included some of that as part of what we teach as opposed to pure mobile. There’s now a little more emphasis on the fundamentals as well.
- Another big lesson is we made it a priority to actively seek employer feedback – that gives us a good sense of what skills are in demand. And we take that feedback very seriously and update our curriculum quickly and regularly.