3 ms·
> 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 b
by 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.
- dathinab 3y agoIn my experience it's mostly the not very small but also not very large companies _which have a small set of very excellent programmers_ which do so, with some tech lead spearheading it and having the skill (but not time) to pull it of just by themself. But in larger companies this kind of team structure is rare, fleeting and if it exists most times focused on other more core business areas. I mean in a start up you might find people with skills they could get highly payed for working for a fraction of their salary due to various freedoms and work atmosphere aspects, so you might have an excellent skilled person you can put (or which puts themself) on working on such UI tasks. But in a large company you have this rarely, most highly skilled people there are also highly payed and in turn to expensive to put on such tasks which on paper don't yield that high value (not on a "they can't afford it basisi" but on a "it makes financially no sense" basis). Similar even if that isn't a problem such people tend to be much more constrained by other influences. Then there is the problem that software development isn't that easy to scale (I think most more experienced people know the "onboard a person to gain speed but losing speed" kind of situation). So often approaches to development become more stream lined, with more overhead, and in turn more expensive (but scaling to more devs). At which points considerations for cutting costs come in and in turn the "only one app" decisions is on the table. A good technical example is if you compare (a bit older) react + full reflux with the dart blocks pattern at the core they are the same but the react one is scaling better with many devs while also but in turn also has more overhead by splitting more things apart spreading you logic across all kinds of (standardized) places. Through probably most important companies do not thing in terms of "can we afford it" but in terms of "does that yield enough profits for it to be worth it" (assuming they can afford it).