Recently, one of my readers reached out to me with the following question:
I am trying to decide whether to learn native mobile app development or cross-platform (Cordova/HTML5) mobile app development. What would be your suggestion?
I think that’s a really good question. It also is a question that does take quite a lot of pondering before I can answer it.
First of all, the question touches a fundamental discussion in the mobile app development field of expertise: is native development a better choice for mobile development than cross-platform solutions?
Secondly, because my answer to the question could influence the road that another person takes which is quite a responsibility to take.
I always like to think that the best advice is given when it guides you to make an informed decision for yourself, instead of giving an actual instruction of what to.
So, without further ado, let’s dive into the most important aspects that you would need to think about before you can decide what’s best for you: Native mobile development or Cross-Platform mobile development.
No single advice
Because everybody is unique and every developer has her / his own experience level, a field of interest, and career vision, there is not a single good advice to give that suits every (aspiring) mobile developer.
Instead, I’d like to give a couple of main questions that you should
think of in order to make the decision that suits you best.
The questions are:
- What are your goals and what do you aspire?
- What interests you most?
- What technical background do you have?
- How much do you want to invest?
In this article, I’ll elaborate on these questions and why they are so important.
What are your goals and what do you aspire?
If you want to build mobile apps and don’t really prefer a platform you might choose for cross-platform mobile development. If you want to be a specialist for a specific platform, you might go for iOS or Android natively.
I set a goal for myself to learn iOS development as soon as the iPhone 3G came to my country. I loved the idea to make something from scratch that had the potential to reach a large market without having to distribute the solution myself.
I went from learning iOS development in my spare time and after I launched my first app (iGroupEmail, it’s not around anymore) I went to learn Android native once I got an actual mobile developer position.
After that, I learned about Cross Platform development with Xamarin and, later on, Cordova.
My goal was to learn to develop for a mobile platform because I wanted to get knowledge about mobile development with the possibility to start a mobile development career (in which I succeeded).
As you can see, I used native development as a stepping stone instead of a goal. My aspiration was more career wise than it was technically based. Although there was (and still is) a great interest in the iOS platform and its surrounding eco-system.
What interests you most?
Are you a technical developer that loves to get her/his hands dirty in some nifty code? Do you like to find out and see for yourself how to solve a problem in code using the possibilities of your mobile platform and its fundamental SDK’s?
Or is your focus more on building a mobile solution for a common problem that you want to deliver into the hand palms of many users?
You see, the first statement tends to be more platform specific and suggests that you love to become an expert for a specific SDK and platform. Whereas the second statement indicates that you are more focused on the solution and delivering that solution and less interested in the platform that you are going to build and distribute your app for.
Are you charmed by the way the iOS, Android or UWP platform is wired and provides you with cool features and tools to build your ideas upon? Or do you think that mobile platforms bear cool features, of which you’d love to use a couple for your own creations?
It is a good to take some time to really think about WHAT it is that intrigues you the most and if the answer to that question points to features and possibilities of a specific platform or is a more generic mobile treat?
The Native route
So, do you want to build a cool platform specific app and/or become an export for that platform and/or squeeze the maximum performance/look and feel/interaction/hardware features for that platform in your app? Then going native is the thing for you.
If you go the native route, you get to learn the native language (Swift, Java or C# depending on your platform of choice) and really get intimate with the platform. Platform intimacy means that you get to know the platform’s API’s, the good the bad and the ugly, and can really work on a level that will make your app as smooth as they come. The latter referring to the experience that platform mobile users expect and really like.
There are startups that hire native mobile devs because they want a smooth and silky app that makes the user smile as soon as they start using it.
Also, Java and Swift are modern languages supported with ever growing communities that provide you with the possibility to build backend server apps, etcetera as well. So all green lights from that one too.
The Cross Platform route
This enables you to reuse a lot of codebase over multiple platforms; very handy if you want to develop your own apps for multiple platforms and keep the time used to maintain your codebase as small as possible
build something faster over multiple platforms; Xamarin and Ionic provide templates for quick setup of mobile app outlines.
They enable you to get going fast. Because of the code sharing the effort is less and the turnaround time shorter
In my experience, mid- and large-sized companies benefit from cross-platform development since maintenance, code quality and project turnaround times are better. So B2B en B2E apps are covered mostly in Xamarin or Cordova apps
Companies that want apps for customers (B2C) and want an intensive and cool user experience (micro animations, slick interfaces etc) or more media intensive apps tend to lean towards native app development more. Think Coca Cola, telecom brands, etc.
What is your technical background?
Are you a web developer and enjoy developing with web technology? Or do you have experience in coding with .Net and C#? Then the cross-platform solutions mentioned before are easy to pick up and get started.
If you’re a Java developer or don’t mind mastering a relatively new language like Swift, Native development can be your arms of choice too.
You can choose either way unrelated to your technical background, but choosing a technology that connects to your experience on multiple aspects – like coding language, platform characteristics, the software architecture being used, etcetera – could benefit you if you want to learn at a faster pace and get results more quickly.
How much do you want to invest?
Depending on your background, goals, and interests you can choose whether Native or cross-platform development suits you best.
We all know that learning to code with new development tools and for unknown platforms takes time. And yes, time is also money.
Sure, learning the basics is done faster than ever before using one of the many online tutorials and resources – more often than not, they are even provided for free – at hand. But you need to think about how much time and effort you want to (and can) invest on reaching your goal.
Do you want to build an app because you want to mark the checkbox on your bucket list or do you want to make mobile development the next step in your career?
Even if you have decided that you prefer to develop for a specific mobile platform, using a cross-platform tool like Xamarin or Cordova is a valid choice if that means that you can build your mobile app in a language that you already master.
If it lets you ship your idea faster it might even be a better choice to develop cross-platform. Provided you don’t need any of the hardcore nitty-gritty functionality tucked away in some deeper SDK layer of the mobile platform that you are aiming for.
If you have enough time at hand to spend on learning you’re free to choose freely. But for most of us developers that doesn’t apply.
When you want to make the best possible app for a specific platform, one that truly adapts the vision of a mobile platform the most you would be missing out if you would choose anything other than native app development for the platform you choose.
When you’re more keen on getting your apps out faster and want to reach people on multiple mobile platforms, I’d lean more to cross platform.
There are more things to consider when you want to choose between Native and cross-platform mobile development than “just” choosing the technical development toolbox.
A lot of blogs out there focus on the technical advantages and the ease of use that this or that library, framework, or platform IDE provides.
After 12+ years of developing software, websites and 5+ years of mobile development I’ve come to the conclusion that every tool and platform has its pros and cons and you should test out various things to decide what tool suits you best.
But tools are only created to support the goal that you’re using them for. And learning tools is always easier if it is a goal that you truly aspire and are eager to reach.
So I urge all aspiring mobile developers out there: don’t let the question “Should I learn Native and cross-platform mobile development” be decided solely by the technical discussions.
Instead, I want to ask you to begin your decision by thinking about what your main goal is when it comes to learning mobile development.
Think about what it is that makes your developer heart tick faster and what really inspires and intrigues you the most about mobile development.
Then start to look at how much time and effort you want to spend on reaching your goal.
After that, pick and try out one or two of the tools that suit you the best.
Trust me on this, when I say It takes more than an IDE to transform your IDEA into a great product.
Every tool and platform has its pros and cons and you should test out various things to decide what tool suits you best
Please note that you STILL NEED TO LEARN ABOUT EACH PLATFORM and their specifics.
Designing and building mobile apps has all to do with providing easy and simple functionality in a way that translates to the mobile platform of your choice.
If you learn native first (let’s say iOS for convenience sake), it is never useless.
The stuff you learn about a specific platform will always be helpful – wether you’ll go cross platform or stay native.
See it as an in-depth investment into a platform.