I'm doing the opposite even though been ios dev for a decade and now learning react / react native. Reasons:
- golden days of mobile apps are gone, these days less and less people download apps
- it is more important to have desktop / mobile web app these days
- pwa and mobile apps and tech are slowly getting good enough
- if you are native ios or android you are limiting your jobs and business opportunities - native mobile dev is like niche inside niche these days. Probably half of jobs is typescript/javascript/ python related.
- in current market and ai landscape your have to prototype and ship fast to be competitive even at the cost of slighly worse UX
> - it is more important to have desktop / mobile web app these days
On what are you basing this? Every normal person I know picks a native app over a web app.
> - pwa and mobile apps and tech are slowly getting good enough
This has been claimed for well over a decade, yet I can't tell the difference as a consumer.
> - if you are native ios or android you are limiting your jobs and business opportunities - native mobile dev is like niche inside niche these days. Probably half of jobs is typescript/javascript/ python related.
Technically a brain surgeon has fewer job opportunities than a dentist, yet they make way more money.
> - in current market and ai landscape your have to prototype and ship fast to be competitive even at the cost of slighly worse UX
This is quite a generalization. I think that in some markets users will tolerate a worse UX, and in some markets UX is everything. My company has done quite well by not compromising UX.
I think it's a false dichotomy that you can either build fast with a web app or slow with a native app. I can build some things in SwiftUI way faster than if I used web technology.
Completely agree. "Download our App!" is a huge red flag. It suggests at best that some VP at the company wanted to check a box and at worst that the company wants to harvest your sweet, sweet personal data and they cannot do so with a mere website.
There are some apps whose existence makes sense like Uber and turn-by-turn navigation but the vast majority of apps now should just be websites.
There are three billion Android devices in active use. Writing native applications for a platform with three billion active users is niche, but not that niche. Over 100 billion apps were downloaded on Google Play last year.
There probably are more Javascript/React jobs, but there are also more Javascript/React programmers. In mid-2022, many places had trouble finding good senior Android programmers. In the past few months I saw OpenAI, Anthropic, Perplexity etc. looking for Android programmers.
In terms of knowing Java and Kotlin well, there are plenty of Java/Kotlin backend jobs around (don't know about that in hot startups, but outside of Microsoft-world, JVM has been the bedrock of backend for almost 30 years). So that's a logical shift out of an Android job if desired.
Also, Android gives analytics to the business that they have more trouble getting on web. On the web companies are at the mercy of Chrome, Safari etc., with Android they're writing their own app to their own specifications (with some Google Play restrictions).
Where I work, Android and iOS sometimes are ready to launch before the web team has finished their work. How does that fit into prototyping and shipping fast?
It's possible the golden days of launching an app like Instagram and getting acquired a year and a half later for a billion dollars is over, but there is plenty of money to be made. Also, even if a company does launch on web first (most, but not all, companies), if they're successful they often look into launching a mobile app. Even if they start with React Native, KMM or the like they often move to native later (although there are exceptions, I believe Discord launched with RN and it works for them - so different platforms work for different scenarios).
I don't disagree with you. Especially the native development limitations. I don't think there's a right or wrong answer here. You just have to adjust your expectations and learn to live with your choices.
Unless you are in the business of building apps for others, in my experience, cross-platform development rarely works. The amount of time you spend on implementing platform-specific conditional logic, dealing with UI latency, additional debugging time due to cross-platform masking actual errors, and above all keeping your codebase in order, outweighs the benefits by a huge margin.
The team that originally started might do a decent job but over time new people come on board, deadlines and other challenges make people start cutting corners and making design choices inconsistent with the original designers leading these codebases to become unmanageable.
What can work with some serious dev team discipline is to build common frameworks that you can use cross-platform and never dare to attempt cross-platform user interfaces.
For what it's worth, economically for an individual, it's sort of the reverse in my experience. I feel like I snuck into Google in ~2016 because pure-iOS is so rare. I only had 1 out of 7 interviewers who worked on iOS, 2 who had tangential brief experience, 4 who had never used it. Also, Swift was new, so the people who did know iOS couldn't really speak to it when I used it to write code.
If I'm launching a product, I'm doing Flutter. To me, it's Swift but with no rough edges. Most importantly for a product, it lets me maximize leverage and get cross-platform. The performance is really astonishing compared to my days with React Native, it's native in that it's not being JIT'd.
But if I'm happy with a nice gig / set of consulting clients doing iOS, that's great, probably can do that until the end of time. I think we're seeing the first wave of startups doing Flutter to maximize engineering leverage, but long-term, it's too divisive to have a singular Flutter codebase for most large businesses. They'll specialize.
I understand the author's point, sticking with what's comfortable and working.
In a sense, I'm doing the same thing, but what's comfortable and working for me is Flutter. I don't have any Apple devices to develop on (but I do have a work macbook, and can borrow my wife's iPhone), so to target iOS at all, I vastly prefer cross-platform. Apple still makes that artificially difficult in many ways. You can't even upload a build without xcode (mitigated by codemagic.io). My distrubution certificate recently expired and I spent a lot of time on the Apple connect site before realizing there's no way to request a new certificate without using Apple tools that only run on Apple hardware. It should be a button in the same UI that shows the certificate!
Anyway, without cross platform tools like Flutter, I wouldn't target iOS at all. Apple just takes every opportunity to try to leverage you into their ecosystem, and I'm not going to do that.
And now that the WebAssembly target is officially supported, maybe I won't bother anymore.
I could not disagree more, SwiftUI is a black box that is great when it works but is infuriatingly incomplete to this day. I filed dozens of radars in the past year. I’ve worked on app of the year type applications and they use zero SwiftUI for a reason.
Cross platform does seem to be slowly eating away at native apps - if you look at a lot of big companies out there, all of them use cross platform - like GM uses React Native for their car apps, Microsoft uses it in their Office Suite, Skype, Amazon, Shopify, Walmart, Tesla and many many more.
It seems that if you play at scale and are a big company - you're pretty much on React Native or maybe Flutter though that doesn't make a ton of business sense imo.
I wonder at what point Apple looks at things and wonders why they even bother investing so much in Swift and SwiftUI. At which point they'll either
1. Leave it to dry on the vine
or
2. Go the other way and put in a "no cross platform frameworks" in their developer agreement and force companies to use native code.
I think this is a niche of a niche of a niche, but it’s interesting to see the creative decisions young developers are making to carve out a sustainable career. I hope this path works out for you!
Thanks!! I'm usually making this decision because I'm an older developer. I'd rather try making it on my own than having 25 year old manager micromanaging me. At this point, I'd rather switch careers than getting a traditional 9-to-5 development job.
But yeah, this article is basically the same for me, only I'm an Android dev. I don't release anything on iOS. I probably would if it wasn't for that $100/year Apple dev fee. My stuff is free, so why should I pay Apple such a high fee. If I did write for iOS, I'd probably do Swift or SwiftUI at first to learn it. Then maybe I'd look at a cross-platform framework.
Metal is the last Framework that was designed Objective-C first, everything else now is focused on Swift.
However a big difference to Android, is that you don't see Objective-C shots from Swift team, as Kotlin/Compose folks do against Java (while using Java 8 as counter example, and ignoring the ecosystem Kotlin depends on), which has really put me off from Android.
pzo|1 year ago
- it is more important to have desktop / mobile web app these days
- pwa and mobile apps and tech are slowly getting good enough
- if you are native ios or android you are limiting your jobs and business opportunities - native mobile dev is like niche inside niche these days. Probably half of jobs is typescript/javascript/ python related.
- in current market and ai landscape your have to prototype and ship fast to be competitive even at the cost of slighly worse UX
sandofsky|1 year ago
On what are you basing this? Every normal person I know picks a native app over a web app.
> - pwa and mobile apps and tech are slowly getting good enough
This has been claimed for well over a decade, yet I can't tell the difference as a consumer.
> - if you are native ios or android you are limiting your jobs and business opportunities - native mobile dev is like niche inside niche these days. Probably half of jobs is typescript/javascript/ python related.
Technically a brain surgeon has fewer job opportunities than a dentist, yet they make way more money.
> - in current market and ai landscape your have to prototype and ship fast to be competitive even at the cost of slighly worse UX
This is quite a generalization. I think that in some markets users will tolerate a worse UX, and in some markets UX is everything. My company has done quite well by not compromising UX.
I think it's a false dichotomy that you can either build fast with a web app or slow with a native app. I can build some things in SwiftUI way faster than if I used web technology.
dreamcompiler|1 year ago
There are some apps whose existence makes sense like Uber and turn-by-turn navigation but the vast majority of apps now should just be websites.
Ologn|1 year ago
There probably are more Javascript/React jobs, but there are also more Javascript/React programmers. In mid-2022, many places had trouble finding good senior Android programmers. In the past few months I saw OpenAI, Anthropic, Perplexity etc. looking for Android programmers.
In terms of knowing Java and Kotlin well, there are plenty of Java/Kotlin backend jobs around (don't know about that in hot startups, but outside of Microsoft-world, JVM has been the bedrock of backend for almost 30 years). So that's a logical shift out of an Android job if desired.
Also, Android gives analytics to the business that they have more trouble getting on web. On the web companies are at the mercy of Chrome, Safari etc., with Android they're writing their own app to their own specifications (with some Google Play restrictions).
Where I work, Android and iOS sometimes are ready to launch before the web team has finished their work. How does that fit into prototyping and shipping fast?
It's possible the golden days of launching an app like Instagram and getting acquired a year and a half later for a billion dollars is over, but there is plenty of money to be made. Also, even if a company does launch on web first (most, but not all, companies), if they're successful they often look into launching a mobile app. Even if they start with React Native, KMM or the like they often move to native later (although there are exceptions, I believe Discord launched with RN and it works for them - so different platforms work for different scenarios).
riveralabs|1 year ago
yatz|1 year ago
The team that originally started might do a decent job but over time new people come on board, deadlines and other challenges make people start cutting corners and making design choices inconsistent with the original designers leading these codebases to become unmanageable.
What can work with some serious dev team discipline is to build common frameworks that you can use cross-platform and never dare to attempt cross-platform user interfaces.
refulgentis|1 year ago
If I'm launching a product, I'm doing Flutter. To me, it's Swift but with no rough edges. Most importantly for a product, it lets me maximize leverage and get cross-platform. The performance is really astonishing compared to my days with React Native, it's native in that it's not being JIT'd.
But if I'm happy with a nice gig / set of consulting clients doing iOS, that's great, probably can do that until the end of time. I think we're seeing the first wave of startups doing Flutter to maximize engineering leverage, but long-term, it's too divisive to have a singular Flutter codebase for most large businesses. They'll specialize.
flax|1 year ago
In a sense, I'm doing the same thing, but what's comfortable and working for me is Flutter. I don't have any Apple devices to develop on (but I do have a work macbook, and can borrow my wife's iPhone), so to target iOS at all, I vastly prefer cross-platform. Apple still makes that artificially difficult in many ways. You can't even upload a build without xcode (mitigated by codemagic.io). My distrubution certificate recently expired and I spent a lot of time on the Apple connect site before realizing there's no way to request a new certificate without using Apple tools that only run on Apple hardware. It should be a button in the same UI that shows the certificate!
Anyway, without cross platform tools like Flutter, I wouldn't target iOS at all. Apple just takes every opportunity to try to leverage you into their ecosystem, and I'm not going to do that.
And now that the WebAssembly target is officially supported, maybe I won't bother anymore.
airstrike|1 year ago
unknown|1 year ago
[deleted]
rumori|1 year ago
akmarinov|1 year ago
It seems that if you play at scale and are a big company - you're pretty much on React Native or maybe Flutter though that doesn't make a ton of business sense imo.
I wonder at what point Apple looks at things and wonders why they even bother investing so much in Swift and SwiftUI. At which point they'll either
1. Leave it to dry on the vine
or
2. Go the other way and put in a "no cross platform frameworks" in their developer agreement and force companies to use native code.
munchler|1 year ago
riveralabs|1 year ago
moribvndvs|1 year ago
unknown|1 year ago
[deleted]
unknown|1 year ago
[deleted]
giantg2|1 year ago
But yeah, this article is basically the same for me, only I'm an Android dev. I don't release anything on iOS. I probably would if it wasn't for that $100/year Apple dev fee. My stuff is free, so why should I pay Apple such a high fee. If I did write for iOS, I'd probably do Swift or SwiftUI at first to learn it. Then maybe I'd look at a cross-platform framework.
pjmlp|1 year ago
However a big difference to Android, is that you don't see Objective-C shots from Swift team, as Kotlin/Compose folks do against Java (while using Java 8 as counter example, and ignoring the ecosystem Kotlin depends on), which has really put me off from Android.