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 target different computing devices. To get more people to use your applications you would like them to run on as many device categories as possible, whether it is different smart phone operating systems, a desktop computer or a tablet device.
I first encountered the term cross platform in my first job as a developer (20 years ago) after I left the army, when we coded an anti-virus scanning engine. We 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 by the attempt to run their apps on both 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 the different standards of each platform. Cheaper to develop and easier to maintain.
Sounds easy and good, no? Well, no. Not even after many years of evolving development tools. The main reason this is not a straightforward operation is the simple fact that each platform, when you get into the specific details, is different from the 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, lets take iOS and Android: on Android you have the ‘back’ button and on iOS you do not. To make sure your code behaves “naturally” on Android you need to add some Android specific code to handle the ‘back’ action while the same code will be useless on iOS.
Cross platform tools have evolved quite a bit like html5 based mobile app development environments. Still I have yet to see a real application that was built in full using only cross platform code. There is always a need to tweak something for a specific device or specific platform, there is no escaping it.
I always wondered why platform providers (Google, Microsoft, Apple…) have not really worked to support such cross platform tools and, even more, they seem to make life particularly 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 must sink in. It may be more productive to apply cooperative strategies vs. only competitive ones. Indeed they may lose some developers to other platforms, but at the same time they will win some that will switch over to theirs and, most importantly, it will make developers’ life easier, with more apps that offer a good result for everyone.
QA Guy/Girl Point of View
For the QA team cross platform usually means 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 just on one platform. Even supporting one platform is not easy nowadays due to versioning – iOS as 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 which work with cross platform tools are somehow shifting the “responsibility” for making sure their results are working properly and shifting the responsibility and the blame to the tool itself. As if they were doing the best they could and complying with whatever was requested from 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 will fix whatever is needed, but still it is a different situation from that 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 have become highly challenging with the multitude of different devices out there which are very different one from each-other. Previously (a long time ago) you had microsoft windows for personal computers and unix based servers. Now you have a lot of operating systems, numerous hardware configurations and 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 an entirely different angle, one that is closer to the 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 smartphones you might expect “time wasting” behavior or very efficient task oriented behavior for getting something done, compared to tablets that can be used in more relaxed times indicating 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’s specific version to best serve that behavior. Of course, this 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 do not 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 a greater market. Sometimes each device reflects a specific market segment which carries an overhead for reaching out to them, such as in the case of specific gaming consoles, Sometimes your target market just happens to be diverse in terms of consumption devices and the users use different kinds of devices and platforms as in the case of smartphone users.
The User Point of View
Users rule, of course, and they want everything to run everywhere. Today it even seems “not ok” for an application to be only available on one platform as it can be seen as a sign of the provider’s “laziness,” or lack of attention to the market by the developer. What really “spoiled” users is the Web which is cross platform by nature and so users don’t understand why gmail is available everywhere, but not my favorite iOS calendar app.
And that’s ok, they should not be bothered by that, because they are, after-all, those who rule here.