I am a developer with 4 years of experience (native Android development, java, kotlin). I come to the conclusion that native mobile development is kind of a dead end. Why?
- In 2015-2016 I worked at the company A, a company targeting and crafting only native mobile apps. The apps were pretty easy to produce and deadlines were short. We had one app per developer (and I love developing all by my own). The management staff just used to attract as much projects as they can, no matter the quality of the project. And the development staff just had to develop as quick as possible.. Often projects had missing or wrong, undiscussed concepts because the client was not aware of what he wants.
Almost all of that apps were based around a server, API calls, displaying content, filling forms, design and ux. All of this stuff can be achieved in a javascript / html5 app (Progressive Web App, React, ReactNative, ionic, cordova .. you name it). All of the apps didn't need specific hardware or software requirements, otherwise inaccessible in js. I don't like js, I love statically-typed compiled languages like c#, java and kotlin.. but, from an economical point of view, why on earth should we build a native app to just call APIs instead of building a cross platform web app?
The only two apps from the hundreds of hit-and-run projects the company A had, was two utility apps: a SMS client and a keyboard, both for android. Now, I think that android has a nice highly customizable ecosystem. You can create all kind of system utilities (lanuncher, sms client, keyboard) or productivity utilities. Android apps can use software or hardware inaccesible from the web (unless you use ReactNative). But the percent of those apps is very, very low. Most apps just calls APIs and cache data.. we can also do that in js.
In 2016-2017 I worked for company B. Pretty much the same status as company A.
In 2017-present, I worked for company C with thr client D. D has a big local business, developed across the country in 10 years. C provides D with a web platform, used by D's employees to record all the stuff they do at work. The system is very complex, the business logic is very well structured and the client knows exactly what he want. He needed 3 big, very complex android apps for his clients and for his employees. The development process took me 1.5 years to complete (I worked all by my own on the apps, except the backend). Now, he is kind of a perfect client to me, knows what he want and I will have, for a long time, feedback, new features, bugfixes and updates to work on. But the apps are all based around APIs. Some of them have local DB, can cache data offline and then sync data with the server later. The percentage of features impossible for a web app is like.. 5%...
But the problem is not here. They promised me we will attract more apps, we will form a team and I will be the leader. But the new apps never came. Each time I talk to the manager responsible for business development, I get the same answer: yeah, we have lot of pending apps. But he lies to me, the reality is different. He can find apps, but the client almost always want a Progressive Web App, or ReactNative, or whatever. There are 3 new apps, all requested to be js-based. And I don't blame the clients, I totally get them. As those apps for client D are finished, but in continuous development, I will have more and more spare time in the workplace, just waiting for the projects to come.. And I am afraid that the business manager will fail to provide new native mobile apps, or if he will find apps, they will be low quality apps like those from companies A and B.
- On job finding sites, there always was an extremely low quantity of native mobile app offers (like 5-6 or so) compared to web dev (hundreds of offers)
What do you think?
The good part is that, in all those years I developed native apps by my own, I learned a lot about software architecture, good practices etc. Those are highly valuable transferable skills. I think I will switch to big data development.