20 ms·
> probably because there's no good way to offer a service with a mobile app without having to design and engineer for the least-common-denominator. Isn't the "
by derefr 3y ago
> probably because there's no good way to offer a service with a mobile app without having to design and engineer for the least-common-denominator.
Isn't the "good way", just to not treat "mobile" as a monolith, and instead have a separate team, with separate competencies, develop a separate app for each platform, such that each app can take advantage of all the strengths of each platform?
Back in the early console-game times, if you had made an arcade game, you'd have one company, who knew Nintendo programming really well, do your Nintendo port; and another company, who knew DOS PC programming really well, do your DOS PC port; and so forth.
Why did we stop doing that? Companies had enough money to do it back then. And the same companies are 100x richer now. They can totally afford a development team per platform, targeting that platform natively.
- aikinai 3y agoBecause more frameworks and abstraction make it feasible to not do that. I absolutely agree with you and wish companies cared enough about the quality of their experiences, but it’s not economically required so most companies naturally won’t do it.
- bloppe 3y agoThe underlying problem is that it's difficult to make high-quality cross-platform apps. A symptom of this problem is that companies create low-quality cross-platform apps instead of high-quality platform-tailored apps, because it's cheaper. I don't think we should treat the symptom by spending more money on platform-tailored apps. We should treat the disease by making platforms more interoperable.
- derefr 3y agoThe underlying "problem", then, is capitalism — and what you're highlighting as the "problem" is rather the benefit of it. Companies seek to differentiate themselves in the market by offering features that their competitors don't have; and companies that offer platforms seek to win mind-share for developing on their platform, by building out hardware features that their competitors don't have. That's where technological innovation comes from.
- dathinab 3y ago> Why did we stop doing that? cost and hard to measure returns (i.e. the cost of not doing so doesn't clearly show up anywhere) building two apps can easily be twice the frontend dev (and worse maintenance) cost and a higher backend dev cost too (but not twice). Theoretically with the right abstraction and flexibility wrt. to how UI components get data you can have less the twice the cost. But getting that right is hard and needs somone who knows what they are doing forcing that decision and having the time/will to setup the skeletons rightly and educate how to keep things "the right way" to not fall out this sync pattern etc. Practically this tends to not be viable in bigger orgs (they don't want to take the risk of the expert getting it wrong) and bigger teams (they tend to have very mixed skill levels and things will get bad at some point leading to increasing dev cost approaching 2x if not some costly refactoring is done in time). That a lot of teaching in the App dev scene seems to be more like "here how you do it the Apple way it's the only right way", "here how you do it the Android way it's the only right way" instead of "here are the concepts, this is how they apply with Android, this is how they apply with Apple etc." probably doesn't help either. I know it's a stereo type but I have just meet way to many app devs which do not understand the underlying concepts of both the framework they use and the language and don't realize it. (I also have meet the opposite, so maybe saying there are a lot of bad devs out there is more appropriate.). EDIT: I nearly forgot: That you have to use not just different frameworks but different languages per platform to do it "fully right" succs bad, like really bad.
- derefr 3y agoYou seem to be describing the thing that most companies still are doing (at least a little bit), where the same team does apps for each platform. And sure, that's dumb and hard — polyglot programmers are hard to hire, it's hard to context switch, etc. But what I'm describing is different: in the old "porting" approach, rather than having "a mobile team" that is expected to know both iOS and Android, you would instead have an iOS team full of people hired specifically for their iOS expertise, that just do your iOS app, and who are not expected to know anything about Android; and vice-versa for an Android team. Your iOS team would be as distinct from your Android team as current mobile teams are from web-app teams (in companies whose native apps aren't just wrapped web-apps.) I know this isn't too relevant for SMBs who can't afford to hire O(N) entire teams just to launch an app on O(N) platforms. But the "let's share one codebase to every platform" efforts are almost always driven by corporations so large and so profitable that they can definitely afford O(N) teams of per-platform deep experts. Why is "the Facebook mobile app" a single shared codebase for every mobile platform? Why is "the Google Maps mobile app"? Slack and/or Discord (who used to be SMBs, but at this point could totally afford this)? Etc. These are all apps that would highly benefit from tight integration with each targeted platform. It almost seems like the smaller companies are the ones who more often have the "taste" to do the right thing here; while bigcorps — that can actually afford to do the right thing — are constitutionally incompatible with this idea somehow.
- wilg 3y agoThere's also a product reason – now you have to explain two different UIs to people, support them, etc.