This is a question that I often hear from my peers, acquaintances or people who generally find what I do interesting and are looking for ways to get involved. Before you even start learning mobile application development you need to figure out why you want to become a mobile developer - the reasoning behind it? The ability to create something from nothing? Making the best smartphone app and then become a trend on social media? A love for software development or coding? Having ideas all the time especially for that “Next Big Thing” on the Apple app store or on Google Play? It doesn’t matter what your reasons are, what matters is that you’re honest about why you want to do it. A web application developer is required to write well designed, testable, efficient code by using the best software development practices.
As a mobile app developer, you need to have plenty of patience
The next thing that you need to know about mobile app development is that it’s going to demand a lot of patience from you, especially when things go wrong, or when you’re trying to solve a feature or a graphic on the front-end for the user experience. That said, a big part of this journey involves the satisfaction derived from solving these problems. That's what makes it addictive. As you become better at what you do, it just becomes infinitely more addictive to push the platform as far as you can for the bigger part of the problem you’re solving, aka – the reason you’re writing your app for that iPhone, iPad or any other mobile devices.
A successful mobile app developer needs to learn the programming languages
Let's say you tick the first two boxes of reasoning and patience (Yay!), you then need to get down and dirty with learning the programming language for your chosen platform - Swift for iOS and Kotlin for Android. (Although Objective –C and Java work well, the coding community has moved beyond these and only use them when they have to.)
A question on the Android side would probably be “Do I need to learn Java before Kotlin?”. While this isn’t true any longer, it certainly is helpful in situations where you are given Java code or have to work with it. However, a lot of modern businesses have moved away from Java and have adopted Kotlin one hundred per cent. I would advocate learning Kotlin but try and pick up some Java along the way, as it really is useful.
Understanding the platform is key to becoming a thriving mobile app developer
While learning a programming language, you also need to study and understand the platform you’re going to be writing the app for. Personally, if you already code, this is more important than learning the platform language. What good does writing spaghetti code do if all it does is drain the user’s battery and keeps GPS on all the time? You need to start learning the basics of the platform! What is the Android runtime? How does it help my app? What do app lifecycles even mean? These are all important concepts that pertain to the platform as a whole and are not covered by any programming language handbook.
Don’t get me wrong, both the language and the platform are important to learn, but I believe learning the platform will actually make learning the language that much easier and more understandable because it gives you a sense of direction when building your app.
Mobile applications are first tested within the dev environment using emulators and later subjected to field testing. Emulators provide a cheap way to test apps on mobile phones to which developers may not have physical access.
As you can see it's important to have a clear understanding of the mobile app development process, which can appear complex at first. However, once you get to learn the basics of mobile app development, the 'app world' is your oyster. You'll get to grips with terms like operating systems, hybrid apps, back-end, native apps, push notifications and more.
If you have never programmed in your life, then it's time to start with the basics. It’s an amazing journey and I hope that you enjoy it as much as I did and am still to this day.
Below are a few outlined resources that you can use to get you started:
- Swift for beginners - a free Udacity course on learning Swift
- Hacking with Swift – a great site that carefully outlines all the tasks you need to do starting with pure Swift then moving onto iOS app development using daily guides, videos, challenges, and more, all for free.
- Your first iOS and Swift UI From Scratch – these are free iOS learning resources from the Ray Wenderlich website. If you decide this is for you, you can sign up for a premium account and continue with their learning path.
- WWDC Sample code – this is perfect to view what sample code for doing specific tasks in iOS look like. This is a great Apple resource.
- Human Interface guidelines – furthers your understanding of the platform, helps you to learn the iOS way of designing great UIs based on the collection of in-depth guides.
- Build your first app - This is straight from the horse's mouth. The guides on this Android Dev website are a great resource to help you get started with Android.
- Your First Kotlin & Android App – Another great free resource from the Ray Wenderlich site to help you get started with your first app.
- Learn Kotlin for Android – Since Kotlin became a first-class language for Kotlin, the Android team have been putting together a great set of docs to help people get started. You can find them here.
- Kotlin code academy – A Jetbrains resource to help you get started with Kotlin.
- Android Developers backstage - An Android Developer podcast where discussions focus on how the platform works and how certain things are written and designed. I would also suggest that you go through the older episodes as a lot of what they discuss is still relevant today.
“I’ve never programmed in my life”
You have quite a journey ahead of you but remember that this is not a race, it’s a marathon. To get you started with your marathon, get your sneakers on and visit these YouTube links:
- Introduction to programming and computer science - This is a comprehensive beginner course to understand the basics of programming and CS. It is not tied to any particular language and is designed to get you started.
- Introduction to Java Programming – Another great programming course for beginners.
I hope the above resources and tips will help to give you a starting point. If you do come across other resources and websites on mobile app development, please reach out to me so that I can grow the list for others.