Mobile (Android and iOS) is getting harder and harder to develop for, and devs are leaving the platforms out of frustration and annoyance.
With each new OS update a slew of new requirements have to be met otherwise you’ll face “restrictive action” against your app by a particular time. Usually this is in the name of “security” and “privacy” but what it comes down to is jumping through a series of hoops to support old phones and new phones causing codebases to become complicated and littered with if/then evaluations for various SDKs. What a mess.
Often devs spend vast amounts of time making sure their app is up to date so they don’t face restrictive action. This takes away from feature development and ultimately inflates the cost of mobile development and maintenance. Yes, apps need to be updated, and other technologies like the web are no different; but it’s very rare to see mandates from browsers/platforms requiring you to update your web app or otherwise face repercussions, whilst in mobile it’s a regular occurrence.
Add on top of that the alphabet soup of salacious design patterns you “need to use” to “remain current” and you’re doing things just for the sake of doing things, because Google or Apple or some respected tech company blog said it’s the right thing to do. Ultimately you can’t figure out how a screen is shown because you’re jumping through multiple layers of abstraction because it’s the “recommended” way to do it. However, almost every dev I talk to hates it because it’s confusing as hell but it’s accepted as a necessary evil. So, reluctantly, we deal with it.
But is all of this hoop jumping worth it?
For some things, maybe. But probably not all, in fact I’d argue most the time it’s not necessary. Do you really need a use case implementation to update a text field? C’mon. Seriously? This is getting ridiculous.
What it comes down to is that most software engineers love to over complicate things simply because it makes them feel good by implementing something clever. I am guilty of it in the past. However, I’m very much a fan of KISS and have been for a decade plus. I digress … back to devs leaving mobile native platforms …
Now sprinkle on long build times and difficulty of testing and it’s no wonder a lot of mobile native devs switch to something else more sane, like the web. Sure, the web has its own issues but it’s minuscule in comparison to that of mobile native dev on average.
All this to say – Google and Apple keep making it more and more difficult for developers to ship and maintain quality mobile apps, but they market their releases as the next greatest thing. All the while no real innovation in mobile has happened in close to 10 plus years.
- A new UI toolkit? Cool story bro.
- A new security model? Snore.
- AI all the things? Look! Squirrel!
Oh and by the way, update your app to X by Y date otherwise we will restrict your app, its uses and distribution.
Wait what?
Nah, no thanks.
The first time you deal with this it’s just a nuisance, then eventually it turns into a real annoyance and you realize …
Wait … this mobile stuff is not exciting anymore. You realize that you’re spending all your time fighting the platform and very little time actually building anything. Building is the fun part. Creating is the joy. When you remove the joy out of the equation it’s no longer enjoyable and that’s when you start to wonder …
Is there something better out there? Something more fun that allows me to build things faster with quick feedback loops and more sane testing?
This is when mobile devs often try something new, like web development (often JavaScript, Ruby, Python, etc based) and find that life on the other side is insanely fun and productive.
Before you know it, some of these devs create web based products/projects of their own and slowly exit the sadist & masochistic world of mobile development.
Is there a way fix to this to avoid this type of developer exodus?
To be honest, I’m not sure there is, but I wish there was. The thing is … Google and Apple love the power that they wield over app developers because it gives them a walled garden where they can force developers to comply to rules they create. One such critical path they enforce is forcing user journeys into in app purchase models for monetization that ultimately line Google’s and Apples’ pockets with a 30% required tax on purchases – removing that from your bottom line. I know … No, it’s not all about money, but it is all about control, and control is something Google and Apple are not going to give up without a fight.
So, you have an option: work under the oppressive nature of big tech rules where they can restrict, throttle or even ban your app for any reason they deem. All the while they take 30% of your revenues. Be sure to say thank you too because you know … “they’re doing you a service” … coughbullshitcough. Alternatively you can go to where things are truly free: the web.
Personally, I know I’ll eventually end up back on the web full time. In fact, I’ve never left it fully – it’s my first true love of software. I just happen to have a foot in both camps right now (mobile and web). But eventually I’ll leave the mobile native camp and return back to web full time. More and more developers are following suit for the same reasons – because we’re tired of the mobile native fiefdoms.
Thank you to Will Button for reading a draft of this.
Leave a Reply
You must be logged in to post a comment.