IMO: Why Cross Platform Usually Sucks

As we (humans) become increasingly bound to tech and as tech continues to rapidly advance, we naturally continue to adopt new software platforms. This is good; different devices are good at different things and we want to use the one that best fits our use case.

Along with this push there has also been a push to have the same apps available in every conceivable device format and with all of the same functionality. This is a pretty bad idea. The reason that this is a bad idea is the same reason that we wanted different devices and platforms in the first place - they're good at different things.

Mobile First

I've never been a big fan of Mobile First development for just this reason. The core idea with Mobile First is:

If we build it for mobile devices first then we can make sure that it actually works there.

And that's true. But, the thing here is that you've also decided to utilize only stuff that also works on mobile in your desktop app. If this is an informational website then that's fine. Everything with the functionality of a potato can present the user with a decent looking UI and some information. But, if this is an app then you're selling your Desktop users really short because you've forced them to run a mobile app on their Desktop. Given the choice between running a mobile app on desktop and running a real Desktop app, they're going to pick the latter.

USB C

This morning, I read an article on Hacker News (USB-C was supposed to simplify our lives, but instead it’s a total mess ) that reminded me of this. Because we can't support every conceivable thing a user could want out of USB in a "universal" standard, we've got to make our standard extensible and it won't end up feeling like a universal standard. As with software, different devices are going to support different capabilities and trying to force them to all use the same interface would mean that we'd only have access to the most basic functionality available in all devices (the lowest common denominator).

This is kind of a bummer for small development teams, because we can't actually build a cross platform app - we'll just end up with an app that kind of sucks on every platform. Instead, we'd be better off to just build a really good app on one platform or tailored apps that have been built to account for the different capabilities of each platform we're targeting (and that takes a long long time).

As always, I'll admit that I'm probably at least kinda wrong here and would love your feedback.