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 different smart phone 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 anti virus 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 then 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 which 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 coopetitive strategies vs. only competitive ones. Indeed they may loose some developers to other platforms while at the same time they will win some switching to theirs and most improtant 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 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” 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 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 whom 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 have become highly challenged with the multitude of different devices out there which are very different one from the other. Previously (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 ever accelerating pace of releasing new OS versions so it does not make life easy to say the least for the people whom 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 deriving 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 whom 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 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 for “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.