0

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?

  1. 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.

  1. In 2016-2017 I worked for company B. Pretty much the same status as company A.

  2. 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.

  1. 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.

  • I think with a mature webbrowser technology there is not so much need for native apps any more. You can solve many cases with vanillajs. With a better internet connections on phones, caching is also not so relevant any more (you also has caching in js) so for companies developing a product, there is not really any interest to spend money on developing native aps and web apps when its enought with the web app. – Mr Zach Feb 16 at 15:20
  • 2
    HILARIOUS :) All the big money is in native. (At the moment, as of now.) – Fattie Feb 16 at 16:07
  • The philosophical issues of whether apps are useless, is not relevant here. As of writing (2019) there's far, far, far more demand for native; all high-value contracts are native. (Believe, if that changes - we'll change :) ). Regarding the philosophical issues of apps: the entire app industry, the very concept of "apps", is an utter, total scam from top to bottom. Every single penny civilization has spent on "apps" is an utter waste. The current "app economy" is a cross between the Poppy Craze and the medieval everyday real belief in fairies. – Fattie Feb 16 at 16:11
  • obviously, skilled native android engineers, are, the rarest and most in-demand humans on earth. :O – Fattie Feb 16 at 16:12
  • @Mr Zach yes, exactly my point. in all the apps I developed, only a very tiny fraction of features were things otherwise imposible in js. mostly bluetooth, usb conectivity and reading / writing contacts, calendar events, phone call logs. (and those features were not critical for the apps, just some nice to haves). On the other side, web apps are less expensive and they get their job done. – user1658358 Feb 16 at 21:28
7

As a native mobile (iOS) developer myself, I can say that native development is definitely not dead, however a few years back there was a big change in the market and the market is still changing:

  1. People stopped installing applications to their mobile phones if a webpage is good enough.
  2. Companies stopped creating mobile apps and started concentrating on having a responsive webpage. Mobile apps stopped being "something cool to have and spend money on" for companies.
  3. Hybrid frameworks like React-native or Xamarin became much better. A web developer can create a simple React-native app without problems.

In summary, there are less native mobile apps being developed and it's actually the correct direction. Most businesses just don't need a mobile app at all.

On the other hand, there are still multiple companies that still do need mobile apps:

  1. Communicators (e.g. facebook messenger). It's true Microsoft is going in the hybrid direction with Skype and Teams but many would argue that it affects quality of their product.
  2. Banking and financial apps, big e-shops, insurance companies.
  3. Games
  4. Dating sites
  5. Map and navigation apps
  6. (the big one) Private applications used internally by a company, e.g. to manage employees, to manage stores. (e.g. I know about a company that develops an iPad app for airplane pilots). You never hear about these apps.

Therefore, definitely not dead. Actually, the company I am working for, never has a shortage of projects and we have more than 30 mobile developers.

As for a career advice:

  1. Find a bigger company. Bigger companies tend to attract more projects (small companies cannot even get some projects, e.g. because of truck factor or missing certifications).
  2. Most mobile applications are projects for 1 programmer. Don't really expect to lead a team.
  3. Find a second specialization. No programmer can work on the same technology their entire life. Learn another programming language. If you want to remain in mobile development, learn at least the basics of some hybrid framework (you can learn javascript in 2 weeks, you can learn React in 1 week, you can learn React-Native in another 1 week, everything else is experience. You can actually use static types nowadays, e.g. closureJS, typescript). If you want to work on Big Data, go for it. There is nothing wrong about change.

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.

Actually, most developers than have never worked in a team have terrible code quality. The way to learn software architecture and good practices is to have an input on your code from fellow developers (the review process). Unfortunately, I met too many programmers who thought their code quality was fine because nobody had told them it was bad. In mobile development this is a common problem because most people work alone. It's not a rule though.

  • what a great answer! – Fattie Feb 16 at 16:14
  • OP here. thanks for your reply and your advice :) and about code quality - yes, that indeed is a good point. I have a strong sense of autocriticism about my code and I also read theory.. but witout a third party reviewer, I am subjective :) – user1658358 Feb 16 at 21:01
1

Part of what you are observing has less to do with native app development itself, and more to do with your employer and past experience.

Need for native application developers has been more or less on the rise for quite some time, but you are correct to assume some chunk of this development effort has been sourced out to other tools, like React Native, Fluttr, Cordova, etc.

The thing about native mobile development is, there is only so far the cross-platform SDK's can take you - they work fairly well for simple cases, but not well at all as soon as you deviate from what these tools were designed to do. Interestingly, because of large swaths of mobile developers now actually being more of a "webmobile" developers, this makes native mobile developers a scarce and valuable resource to companies that require such specialized apps to be made. The tricky part is finding such companies.

The observation you made about having less job offers for native mobile development when compared to amount of offers for web development is correct, yet misleading - mobile development is simply all around smaller market than web, because web is still simpler to adopt and has significantly broader audience, hence more people focus on it.

As for your career - being native to Android, you already know Java and Kotlin. You should be able to pick up Java/Kotlin server side development without serious investment and cross-specialize. A developer only able and willing to do native Android is one thing. A developer able to build end-to-end solution, including server side, mobile, perhaps even picking up web and iOS is an entirely different level of cool.

Good luck.

  • The rise of frameworks of ReactNative, Xamarin and Cordova is also caused by the lack of mobile developers. When a company wants to develop a web and a mobile app, they need javascript developers, Android developers and iOS developers. It's much easier to find only Javascript developers and letting them do all the work. That's what Microsoft is doing, for example. – Sulthan Feb 16 at 14:54
0

If you have only been looking for work in an agency-type jobs (i.e. where your company is building apps for another company that does not want to build their own development teams), you'll find that works that are outsourced to agencies is likely simple apps that are just UIs that connects to some APIs. This is true in web apps development as well. Most companies don't outsource their "core competencies" (their money-making secret sauce) to agencies as these core capabilities requires very in-depth domain knowledge that makes no sense to outsource.

If you want to work on "core competencies" app, you will have to find jobs in the industry-type works, not agencies. Industry-type job is where the company makes an app for their own purpose, implementing core business logic. The drawback of industry jobs is of course that, unless the company itself evolving and expanding to new core territories, you will likely be working on a single project for your entire time there. The advantage is that core apps is usually more complex and interesting than agency jobs, and they are more varied as each company has their own quirks and requirements and domain knowledge that makes them very unique.

You will find though that these industry-type jobs are much more common on server-side development, as most industries don't have their secret sauce on the frontend for various reasons (e.g. security, intellectual property). It's not to say that there aren't secret saucy frontends. Some examples are Games or system utilities like Launchers, Keyboards, Accessibility Tools, or consumer products like some IOT, Media Centers, where the server-side component is usually just a supporting infrastructure for the application rather than the other way around.

  • That's not really true. Most mobile apps go through agencies because it's not profitable for a company to have their own mobile team. They would work a year on an app and when the app is done they would have nothing to do and leave the company. It's also almost impossible to find mobile developers to employ. That's current reality and that's why you always use agencies for mobile development. Body-shopping is often used. – Sulthan Feb 16 at 8:47
  • @Sulthan: I think you've just proven my point there. It's almost never not profitable to build your own dev team for works that are the "core competencies" of a company. Frontend app are rarely "core competencies", even if it's how most users interacts with the company, that's why it's often possible to outsource or use temp developers on them. – Lie Ryan Feb 16 at 14:01
  • However, it's not true that only "simple apps" and UIs are outsourced. Actually APIs are outsourced, too. Often what is outsourced is a mobile app and APIs required for it to work. Or a web frontend and APIs required for it to work. – Sulthan Feb 16 at 14:24
  • @Sulthan: I think you're confusing APIs with core competencies. Not all APIs are core competencies. APIs that can get outsourced are usually not core competencies. It's often not obvious to figure out what is and isn't core competency. E-commerce web stores for example, uses a lot of technology, but in most cases none of the web store and technology stack is actually core competency. It's usually not feasible to outsource a core competency, as it's intrinsically married to the business. APIs that are outsourced are usually not a core competency. – Lie Ryan Feb 16 at 14:38
0

Good day, it's definitely not dead.

You will see most of the higher performing apps written in C or some combination because the performance requires it.

when it comes to support there is a silent push to have developers move off of NDK/C variants to their hottness Java/Kotilin. There is some weird issues in regards to performance hits on the compiler that came when they decided to no longer support GCC and support CLANG. There is an interesting discussion on it Here .

In short I would just look for either gaming companies or banking companies that aren't using a web platform for everything.

0

Nobody has a crystal ball and can predict the future. This is something not unique to mobile development. What you can, and should do, is to not shy away from learning new tech and languages. Being a good developer is like being a good craftsman. You should be constantly learning new things.

Not the answer you're looking for? Browse other questions tagged or ask your own question.