Since the introduction of smart phones, mobile devices have continued to cement themselves as the dominant platforms over the more traditional desktop computer. In fact in 2013 we saw smart phones overtake sales of PC's, and now in 2014 we're expecting to see the number of smart phones in use exceed that of PC's. Tablet computers are looking to overtake PC sales next year and in 2015 smart phone sales may reach 776,000,000 units.
The trend towards mobile does not seem to be stopping.
The web certainly isn't going anywhere though. Now that more and more people have a device that can access the Internet right in their pocket, the use of the Internet will only grow. In 2013, 17.4% of all web traffic came from mobiles and that number is growing fast.
As a web developer, you may feel like you're getting left behind a bit if you don't update your skill set to include mobile. There is responsive web design of course which is a must these days and can create great solutions for mobile – but then there's that other thing. Every business seems to want one, lots of new multi-million dollar valued startups are based on them, and everyone probably spends way too much time and money downloading them. Mobile apps.
Switching from web development to mobile app development (or perhaps I should say adding mobile app development to your skill set) can be a daunting task. After perhaps spending years mastering your craft it sucks going back to being the newbie and struggling with basic things again.
A friend of mine who is an awesome snowboarder faced the same dilemma, he wanted to ski a bit more but didn't want to go back to sucking again. I'm not sure if he has tried skiing again but with his background I'm sure it wouldn't be long before he was great at it – and I'm sure the same will apply to you. You will suck to begin with, it's unavoidable – but doing difficult things is what allows us to grow. With a solid background in web development or programming, the transition can be reasonably painless.
There's a few different paths you can take for developing mobile applications. Working out which path is for you will depend on your goals, development environment and background.
Broadly, there are three options if you want to submit apps to the app stores and have them installed natively on a users device:
- Native iOS development with Objective C or Swift
- Native Android development with Java
- Cross-platform HTML5 mobile development with PhoneGap
This is a pretty in depth topic and I won't go into it any more here, but for more information on the different approaches and other mobile development tools take a look at this article about the difference between web, hybrid and native development.
Are you interested in jumping on the mobile app bandwagon? I'd like you to ask yourself the following questions to help determine which approach you should take.
What's your development environment?
Are you developing on a windows computer or a Mac? Which environment do you prefer? Are you willing to purchase a Mac for development?
What sort of apps do you want to make?
Are you looking at making business style applications? Mobile apps like Facebook and Instagram? Or 3D games and processor intensive applications?
What skills do you have?
With a decent understanding of your goals and preferences in developing mobile apps, we can start looking at which option would suit you most.
1. HTML5 / PhoneGap for iOS and Android
There are HTML5 mobile frameworks available like Sencha Touch and jQuery Mobile that can be combined with PhoneGap to create mobile applications that work on both iOS and Android. This approach will result in native app files that you can install on a device and distribute through app stores just like a normal natively built application.
With consideration to the questions above, this approach may be for you if:
- You have a strong web development background and want an easier transition to mobile
- You are developing on a Windows computer and want to create iOS applications (a Mac can also be used with this approach).
- You want to develop business style applications
Although this approach has some limitations (most of which can be overcome) when compared to a standard native approach, using this approach when switching from web development to mobile development will certainly make the transition a lot easier. Gone are the days where performance issues stopped HTML5 from being a viable option.
2. Objective C / Swift for iOS
Creating a native application gives you access to absolutely everything the device has to offer and may be a good option if you're looking at including the latest technologies and want cutting edge performance for 3D games or heavy processing. The downside of course is that you will either need to create two separate applications for the major platforms – one for iOS and one for Android – or pick one platform over the other. Native iOS development might be the path you should take if:
- You have experience with C-based programming languages, or a general programming background
- You are developing on a Mac
- You want no restrictions in the types of applications you can build
3. Java for Android
This approach has pretty much the same considerations as the previous. It is just a matter of deciding whether you want to develop for Android or iOS (and of course, if you don't have a Mac, Android development might be more up your alley).
Anecdotally, developers seem to have an easier time making money from iOS applications. But Android has a dominating market share now at 61.9% in the US that looks to be growing.
Fortunately, no matter what your choice there is tons of mobile app development tutorials and books available. Here's a list of a few to get you started for each category.
HTML5 / PhoneGap for iOS and Android
I do most of my mobile development with Sencha Touch and PhoneGap, and wrote an eBook on getting started. You can take a look at the Sencha Touch and PhoneGap documentation as well as search the Internet for plenty of free tutorials (I have quite a few right here on the blog you can take a look at too)
Of course Sencha Touch is far from the only option when it comes to HTML5 mobile frameworks (PhoneGap can be combined with almost anything), it just happens to be the one I like the best.
Objective C / Swift for iOS
With the recent introduction of Swift, if you don't have a background in Objective-C then it'll probably be best to start with that. I'm a fan of the guys over at treehouse, and they have a blog post on getting started with Swift. Or if you want to go the Objective-C route, they also have a course on how to build your first app.
If you're more into books, you might like to check out Programming in Objective-C
Java for Android
You can of course check out the Getting Started guide on the Android developer website and team treehouse also have a course on developing a simple android app. But again if you prefer a text book you can check out Learning Android
If you can't decide which path is right for you, post in the comments with what you're trying to achieve. Similarly, if you do have a particular method you like to use already let us know what it is below and what you think the benefits or disadvantages are.