We live in a mobile world with a vast majority of cell phone owners using a smartphone to access info and apps. The growth in the mobile app industry has exploded in recent years and that’s good news for job seekers. Just how do you become an app developer today? While the landscape and technologies have changed, the fundamentals are still the same, according to Steve Mickelson, Chief Mobile Architect at Humetrix.
As the Chief Mobile Architect at Humetrix, how long have you been in app development; where did you start?
I’ve been developing apps for more than 30 years. Originally my work was in security and access control. In the 90s I spent most of my time with compression and encryption, including Stacker. After that there were large Internet based systems such as @Backup. For the last several years I have concentrated on mobile devices, the iPhone and iOS in particular.
How different is app development today and are the skills needed the same as when you started or have they vastly evolved?
Today, tools are much better and much more accessible. Training is much more available but the basic skills are essentially the same as they have always been. Designing a good algorithm and a beautiful and efficient UI are always the basis of a good product. That said, the sheer size of the ecosystem now is vastly larger. The skills may be similar but there is so much more to know now.
Can you expand on that? What else does one need to know?
Mobile apps tend to be smaller projects, often built by very small teams. Each member of a small team needs to have a broader understanding of the whole environment. In large shops you may have experts in video drivers or async network stacks or any one of a hundred specialties. If there are only three people building the app, the skills need to be broader, but with the same level of expertise.
Further, apps tend to need attractive and intuitive user interfaces. These apps tend to be used with less training or user hand-holding than traditional shrink-wrap or enterprise systems. Rarely is there a 200 page manual with an iPhone app. Intuitive UI design and navigation is an art in itself and is often just part of the job for an app developer.
Most companies seem to first develop an app for Apple’s iTunes; is that just easier than an app for Google Play?
In my opinion the ecosystem for development is more robust and stable. In particular the devices are a finite set. Also, the nature of iOS is that most everyone upgrades the OS immediately so we don’t have deal with as many older versions in the field. Given the decoupling between the hardware vendors and Google in Android there is less incentive for a manufacturer to upgrade the OS on older hardware - they would rather sell new. That leaves us with a much larger coding target and testing burden under Android.
Why is getting approved for the iTunes store so crucial for an app?
It is required in order for your app to be sold. Period. But in my experience it is not a negative issue. In fact, I prefer that those other apps that share the device with the apps that I make, are at least somewhat vetted by Apple It’s also important to point out that Apple has greatly improved the time for review over the years.
Is it actually easier to develop apps for iOS as opposed to Android or that the OS process is easier?
It’s a personal opinion, but I find iOS easier for a number of reasons, mostly related to the single vendor environment:
- The development environment and tools are more cleanly designed and better consolidated. In iOS, you can pretty much live in XCode.
- Objective C is a terrific language for those who are well versed in C or C++, like myself. Obviously those well versed in Java would prefer working in Android.
- There are a finite number of different devices to support, all from a single vendor.
- iOS devices in the field tend to upgrade to the latest version of the OS, whereas Android devices generally do not receive the same level of upgrade support from the manufacturers. This allows us to build apps that take advantage of the latest OS features, without elaborate branching logic.
What kinds of skills are needed today to go into app development?
App development is different than other types of software development in that the end product is generally a smaller and much more personal experience for the end user than say a large enterprise CRM system or something. Intuitive UI design and process flow become much more important in this world. A developer should know the language(s) native to a given platform.
For instance, an iOS developer should be fluent in Objective C and/or Swift. It is unreasonable to expect an employer to add third party coding platforms or other frameworks just to hire you. I’m also a huge fan of developers that understand how the platform works at its most fundamental level. When confronted with difficult challenges it really helps to know what’s going on under the hood. Of course, I’ve been at this a long time and started writing in assembly so my personal bias might be showing.
If you were starting out today, what types of languages would you need to know and what are the best ways to gain the skills needed?
There are many more languages and development environments available today, often very specialized for a particular type of product. First thing you need to figure out is the field you want to work in and go from there. Games is different than Utilities which is different than Marketing apps which is different than Location/Beacon. And each of those have specialized tools, environments and languages all their own.
What advice do you have for someone trying to get hired in this field?
It’s a very fragmented world now and you need to choose a niche, in which to become an expert. It doesn’t matter if you want to make the next great game, or the finest chat tool or a simple to use translation tool - you need become well versed in the tools and language of your chosen space. You can’t have an intelligent conversation with someone looking to add to their team otherwise.
Make sure you really want the job, not just need the job. Most hiring managers can smell desperation, and it doesn’t help you get hired.
Do not offer to work for free to demonstrate your worth. Ever. If you don’t value your skills, why would someone else.
Given the rather varied and artistic nature of some types of app development, be sure to highlight skills in other areas. Being a black belt may help your chances at a game company. If you’re an accomplished musician, or motorcycle racer, or accountant be sure to point it out.