Cross-platform is tricky. It seems like a small “technical” buzzword but actually, it is one of the biggest challenges for many technology companies and has different aspects for different people in the organization and outside of it.
Developer Point of View
It all starts with the fact that applications can potentially be targeted towards different computing devices. To get more people to use your applications you would like it to run on more and more device categories whether it is a different smartphone operating systems or a desktop computer vs. a tablet.
I’ve met the term cross-platform in my first job (20 years ago) as a developer after I left the army and that was when we coded an antivirus scanning engine. We’ve built it purely in C to make it “compilable” and “runnable” on different desktop and server operating systems without being aware that we were building a cross-platform product. Today when you search for the term cross-platform on google you can find app developers challenged at running their apps both on iOS and Android. The aspiration to have a cross-platform code base lies in the economic rationale of write once and run everywhere instead of developing again and again for each proprietary coding language and standards of each platform. Cheaper to develop and easier to maintain.
Sounds easy and good, no? Well, no. Even today after so many years of evolving development tools. The main reason it is not straightforward is the simple fact that each platform, when you go into details, is different than others, either by hardware specifications or by operating system capabilities, and at some point, you will need to have a piece of code that is platform-specific.
For example, let’s take iOS and Android: on Android you have the ‘back’ button and on iOS you don’t. To make sure your code behaves “naturally” on Android you need to add some Android-specific code to handle the ‘back’ action while it will be useless on iOS.
Cross-platform tools have evolved quite a bit, tools such as html5 based mobile app development environments. Still, I’ve never seen a real application that was built in full using only cross-platform code. There is always the need to tweak something for a specific device or specific platform, there is no escape from it.
I always wondered why platform providers (Google, Microsoft, Apple…) have never bothered too much to support such cross-platform tools, and even more, they seem always to make life much more difficult for such tools. I can understand the rationale of “not helping my competition” though I think that at some point in life the basic fact that not a single platform will win all the users sinks in. It may be more productive to apply cooperative strategies vs. only competitive ones. Indeed they may lose some developers to other platforms while at the same time they will win some switching to theirs and most important is that it will make developers’ life easier and with apps which will end with a good result for everyone.
QA Guy/Girl Point of View
For the QA team, cross-platform means usually a pain in the neck. First, you need to test it across different environments and life could have been so much easier if it was on one platform. Even supporting one platform is not easy nowadays due to versioning – iOS as a mild example for complexity and Android which is catastrophic due to its fragmentation.
The other aspect which is more problematic is the fact that developers who work with cross-platform tools are somehow shifting the “responsibility” of making sure their results are working properly and putting it on the tool itself to blame. As if they were doing the best they could and complying with whatever was requested of them and the fact that it does not work is not their responsibility. This state of mind automatically moves the blame to the person who found the bug, hence the QA person. Eventually, developers are fixing whatever is needed but still, it is not the same situation as in the case of a platform-specific developer and QA person. Maybe it is because the developer can not practically run all the tests on all the devices prior to handing the software which always leaves some quality gap “open”.
In general, QA has become highly challenged with the multitude of different devices out there which are very different from the other. Previously ( a long time ago) you had Microsoft Windows for personal computers and Unix based servers. Now you have lots of operating systems, numerous hardware configurations, and an ever-accelerating pace of releasing new OS versions so it does not make life easy, to say the least for the people who need to ship the software. Now add to that a cross-platform product:)
Product Manager Point of View
The product manager sees cross-platform from a whole different angle and that is more close to users’ perception. Cross-platform is more about what people do with their devices, when and how they use them, and how the product can adapt itself to the unique device-user context. For example on a smartphone, you might expect a “time-wasting” behavior or a very efficient task-oriented behavior for getting something done vs. on tablets which can be used in more relaxed times driving different behavior. The challenge here is to really understand how your target audience can and may consume your products via each specific device and platform and how to adapt each platform-specific version to serve that behavior. Of course, it contradicts the basic aspiration of the R&D division to write less platform-specific code.
Marketing Team Point of View
The marketing team sees cross-platform as an opportunity. In a way, they are the only ones who don’t see the “burden” and try to enjoy the potential distribution hidden in the rich set of devices out there. More devices, regardless of their type, represent more users/consumers and that means more market. Sometimes each device reflects a specific market segment which carries on an overhead of reaching out to them such as in the case of specific gaming consoles and sometimes your target market just happens to be diverse in terms of consumption device and the users use a different kind of devices and platforms such as in the case of smartphone users.
The User Point of View
Users are kings of course and they want everything to run everywhere. Today it seems even “not ok” for an application to be only available on one platform as it can be even a sign of “laziness” of the provider or lack of attention the developer gives to the market. What really spoiled users is the web which is cross-platform by nature and for users, it is too much to understand why Gmail is available everywhere and not my favorite iOS calendar app.
And that’s ok, they should not be bothered by that as they are kings.