This post is the third and final in the series on becoming a full-stack developer. This article talks specifically about mobile app development. Read here for more on frontend and backend development.
When Steve Jobs introduced the iPhone in 2007, it ushered the biggest revolution the world had witnessed since the printing press. Smartphones have managed to penetrate almost every country on the globe. Even the most impoverished seem to be in possession of one so much so that life without them seems inconceivable.
There are certain apps which make sense only when running on a phone. Take Uber, for instance. Uber needs to know your exact location through GPS. An Uber app for desktop wouldn’t make much sense.
Another issue is that a majority of your audience will open your app through a phone, even if it is one that has been built for browsers. In such cases, it is imperative that you ensure the experience is seamless and too much data isn’t consumed. Finally, there are subtle differences between interacting using mouse-clicks and touch. Your app must ensure that it behaves well in both scenarios.
Keeping all these considerations in mind, it makes good sense to venture out of the browser and build mobile apps. This ensures that you make maximum use of the functionalities a typical smartphone has to offer while at the same time making the user experience a delight. Below are the steps to acing mobile app development. For the first 11 steps on frontend and backend development, read here and here.
Step 12: Choose a Platform
The first step would be to choose a platform where you would like to build your application. Unless you’re part of a reasonably big team, it is extremely unlikely that you will build apps from scratch on all major platforms. The more likely scenario is that you will be coding on your favourite platform and will then simply port it over to the others.
The major smartphone platforms today are iOS, Android, and Windows. They use drastically different languages and IDEs. For instance, iOS uses Swift and XCode, Android uses Java and the Android Studio and Microsoft operate with C# and Visual Studio.
The market today is dominated by Android and iOS, so the choice really comes down to these two. Some things you may need to consider before making a choice is the audience share for your app. I believe it makes good business sense to build iOS apps if you’re in a First World country as Apple Devices are extremely popular there. In contrast, in a country like India, Android would be a more obvious choice as the market share for iPhones is extremely small owing to its exorbitant price.
If you plan on making money from your app, keep in mind that iOS users are more likely to open their wallets for in-app purchases than their Android counterparts. This may be because iOS users usually tend to have more disposable income as compared to third world markets where Android dominates.
iOS development requires you to have a Mac Development machine. Also, Apple App Store licenses retail at $99/year compared to Google Play’s one time $25 fee. In other words, iOS development is considerably more expensive.
In this post, I shall cover how mobile app development is done today: Native Android Apps, Native iOS Apps and Hybrid Mobile Apps.
Step 13: Java and XML
Java is the most popular language for Android Development (Google has recently introduced support for the Kotlin Programming language too).
The founders of Android thought Java to be an appropriate choice and they have stuck to it since its inception. And if their trajectory is anything to go by, it has been nothing short of an amazing decision.
The best resource to learn Java would be Head First Java. Reading this book will give you a thorough introduction to the language as well as Object Oriented Programming Principles.
As far as XML is concerned, I do not think you need a concentrated tutorial on the subject. You’ve already worked extensively with a subset of XML (HTML) and you will be able to figure it out pretty quickly, even if you were to jump directly into Android development. I cannot say the same for Java. Ensure you have a good grasp of the language before venturing into Android.
Step 14: Android
You now have the technical know-how to build Android apps. It is time to dive deep into this revolutionary OS. Be wary though that certain Android practices differ from what you usually see on the web. The resources I’ve suggested below will ensure that your learning is not hindered by these differences.
Android Programming- The Big Nerd Ranch Guide 2nd Edition is a good place to start if you know Java already. Make sure you pick up the second edition as that is the one that uses Android Studio, which is the industry standard now. The practice of building apps in Eclipse is largely outdated.
Step 15: iOS
If you are more of an Apple aficionado and/or have decided that iOS apps make more sense to your business/career aspirations. The first step would be to acquire a Mac. XCode works only on Mac and in order to publish on the app store, you need a Mac. Sorry, VMWare.
The resource I’m going to suggest for iOS is exactly the same as that for Android. Nerd Ranch has its own publication – iOS Programming: The Big Nerd Ranch Guide which deals with Swift and XCode, so that is a good place to start.
Step 16: Hybrid Mobile Apps
If you’re a solo developer or are working in a small team, you probably do not have the time or the resources to separately build and maintain Android and iOS Apps. To alleviate the developer’s pain of building for multiple platforms, the concept of Hybrid Mobile Apps was introduced.
Most hybrid frameworks achieve this using Cordova or React Native. You can think of Cordova as the bridge between browsers and the smartphone’s native hardware. It establishes a connection between the two solely using JS and helps in creating the build scripts in the native languages of each platform.
Cordova based frameworks, however, are rapidly being overshadowed by Facebook’s powerhouse, React Native. The power of React Native lies in the fact that while Cordova constructs WebViews, React Native lets you build native apps that you’d build using either Java (for Android) or Swift (for iOS). In other words, Cordova is a website disguised as a mobile app, but React Native lets you build the real thing.
In my opinion, you can give Cordova a miss and learn React Native instead. It is an extremely great career investment to make. UpGrad & IIIT-B’s Software Development program is a great place to start your journey with this revolutionary library which has already been used by companies like Facebook, Netflix and AirBnB to design their apps.
With the conclusion of hybrid apps, we come to an end of this series. In summary, these are the things we’ve covered:
- Computer Science Fundamentals.
- Data Structures and Algorithms
- HTML, CSS, JS
- Front-End Frameworks
- Server-Side Scripting and Databases
- Full Stack Frameworks
- Android and iOS
- Hybrid Mobile Apps
I hope you’ve enjoyed reading this series as much as I have enjoyed writing it and more importantly, found at least some parts useful. As always, your comments and suggestions are welcome!