What Programming Language to Learn for App Development in 2021
As you probably already know, there are two important platforms in mobile apps development. iOS and Android (there is also Windows, but nobody cares). To be considered that you are a mobile app developer, you have to know how to build apps for at least one of them.
When you start to advertise your skills as a mobile app developer, people will think that you know both platforms. The funny thing is, most people don’t know the difference.
Ok, but iOS and Android are totally different platforms, with different codebases, and build upon different architecture principles. How to start learning to code for mobile and not get overwhelmed by that?
Choose the platform
If you just starting with mobile app development, I would choose the platform first iOS or Android and then select tech stack.
The choice depends on many factors, from personal preferences, hardware availability (iOS development requires OS X), and available market opportunities.
Choosing a single platform at the beginning is critically important for mobile development because iOS and Android systems work in a totally different way, and they utilize a different set of tools and programming languages.
Pure iOS developer scenario
Let’s assume I have a Macbook, and I want to learn how to build mobile apps for iOS. I hate Android (which isn’t true), and as far as I know, I wouldn’t want to code for Android ever. There is also a market for iOS development services that are within my reach and stable demand for native iOS apps. Then I would start learning Swift.
This scenario may sound reasonable at this point when there are plenty of well-paid opportunities for Swift developers. Also being so specialized can help you get customers, or land a job. The competition is not so fierce as for some other technologies.
Apple is taking care of the stuff for you
You can be sure that Apple would not abandon Swift language for any reason. As long as they are interested in bringing more and better developers to their platforms, they will continue investing in Swift and related tools as they used to do.
Other benefits of learning native platform language
Learning to code in close to native platform language will let you create more advanced applications, tune-up performance, create any user interface you can imagine, and build any app you like. It will also let you port applications written for other platforms like games. (the same is possible with native Android)
As you see, learning to code in Swift can be a good idea if you want to become a pure iOS developer. But even if you took this article because of iOS, keep reading it further to not fall into common pitfalls for beginners.
Why not Objective-C?
When Swift showed up, the Objective-C become the language of last resort. iOS developers fall back to it when there is no other way to particular code pieces of an app in another way.
If you browsed Objective-C code, you would notice that it’s semantic is extraordinary and challenging to read. That’s why the Swift was made as a language that looks more like any other object-oriented language on the market, so more people would be interested in giving the entire iOS and OS X development a shot.
Pure Android developer scenario
On the other hand, if you, for whatever reason, don’t plan to code for iOS, and you want to focus on Android only, then starting to learn to code in Java sounds like a good plan.
Why start with Java instead of Android?
Coding for Android is coding in Java, so the best way to get your foot into Android development is to learn the basics of Java development and then add the Android environment into it.
In case of learning to code for Android, all the rules for iOS applies here, as well. There has to be a market demand for this kind of service. So before jumping on board, due diligence if the market that’s available for you looks promising.
What about React Native, Flutter, and others?
You maybe already started asking this question, why I didn’t mention probably the most well known mobile technologies these days like React Native and Flutter. Do I even hear about them? Yes, I did.
The main reason is, I wrote this article to help beginners get up their minds about the first mobile programming language to invest in. Neither, React Native, nor Flutter fits in.
Yes, there are plenty of people that are very loud about these technologies all over the internet. But these technologies aren’t meant for beginners.
Let’s assume you are starting your mobile development journey by learning React Native.
What you actually would learn is ES6 programming language, which is a superset of Javascript. You will learn React Native API, for sure. But the problem is, you wouldn’t learn anything related to Android or iOS development because all of the coding for these platforms are covered with another level of abstraction ES6.
Instead of learning how to code for particular platform, you will learn to code in abstraction above all the platforms. As a result, you will know none of them.
If you want to argue with me that, but “I can code once and use everywhere”, or “React Native and Flutter was created to speed up the development process, and it’s a modern way to go”. I will agree with you. Yes, this is way to go, if you know the basic of the platform you are building app for.
If you are fresh to mobile app development, or even fresh to programming in general, starting with these frameworks will just add plenty of unnecessary things on the stack that you will have to learn to do the same thing.
You will still need to know the basics of building apps for Android or iOS if you decide to use these frameworks, and you will need to know the framework as well.
The good part is, you don’t have to learn the basics for too long before starting using frameworks like React Native or Flutter if you insist on doing so. Just learn enough, so you could develop a mobile app, with basic functions, and then you can start learning these frameworks if you fill that you are ready.
But I want to give React Native or Flutter a try now
If you already decided that you will not want to learn native mobile languages and you want to jump straight into modern frameworks, as of 2021, there is a window of opportunity for that.
But first, the best advice I can give you is…
Do not start with React Native.
That’s because learning React Native is hard for beginners. It’s much harder than just learning React. You will have to know so many things that are not even related to mobile app development that your chances to become a programmer will crumble.
It is not a new technology, and many people know it and are good at it, so there is a competition.
Also, if you check offers at job boards, you will notice that most of the positions for React Native require you also to know native mobile languages, so you can’t hide behind React Native.
As of 2021, is it better to start with the Flutter?
Flutter is new, and this is his biggest, if not only strength.
It’s so new that it’s almost impossible to find people who are experts at this framework, and it’s relatively easy to become one.
The new job offers pop up quite frequently. So if you are thinking seriously about Flutter, now it’s the best time to get all in. The entry-level is low (especially comparing to React Native) to get your first job or gig.
It won’t be an easy ride. You will have to learn programming in Dart, plus Android, iOS or both along the way. It’s doable, but I don’t recommend it if you are a novice.
It will be a very hard, blind ride, full of frustrations, confusions, and failures without even understanding what caused them. So the probability of becoming a mobile programmer starting with the Flutter is low.
There is very little chance you will use Dart for anything outside Flutter because there are no market opportunities for Dart experts.
If at any point, you will decide to switch your interest to web development, frontend, backend, or anything else, you will probably not find any use for Dart and soon forget the language.
As you see, even if Flutter is the better option for beginners than React Native, it’s still a bad option.
What about platforms like Xamain and Ionic?
The other possible options to make a career in mobile app development are platforms like Xamain and Ionic.
Xamarin could be for you if you already know how to code in C#, or your career plan C# programming. Otherwise, it will force you to learn mobile development basics plus C# and Xamarin itself. The same with Flutter, React Native, and other wrappers.
The Ionic, on the other hand, becomes more unrelated when React Native shown up. You wouldn’t find any interest in the market for it, so this platform is already dead, but deny to acknowledge that. They try to be related by providing React and Angular integrations, but why would anyone need another man in the middle? They already lost the game.
Conclusion
If we are just starting oftentimes, it’s challenging to decide which way would be the best. You can find people all over the internet who will scream that the language X or framework Y is the best choice because they know only that particular one. The reality doesn’t work this way.
If you want to build a marketing advantage and invest your time and money with something that will last, and you can reuse many times over, throughout your career, my answer for mobile app development are native languages.
If you have any questions related to apps development, leave the comment below.
If you found this post helpful, consider sharing it, so I will be motivated to publish more posts that will help you get the IT career you want.
And as always, stay focused!