Back in the late 80’s – mid 90’s, I was a director for a company that wrote a point-of-sale package for convenience stores. It was called POS-Plus (whether it was “piece of shit” plus or “point of sale” plus probably depended upon which way the wind blew – but I digress).
Anyway, one of our great ideas at the time was this: we were tasked with being able to “talk” to any type of gas pump at any convenience store across this great nation and integrate the operation into the workings of our cash register software.
Our “bright idea” was to partner with a third-party company that was a titular “universal access box” that could communicate with any pump manufacturer (at the time the big three were Tokheim, Dresser-Wayne / Schlumberger, and Gilbarco). The reasoning was that by using a universal, write once, run anywhere solution we would save ourselves time and money and abstract ourselves from the chore of having to learn the workings of each of the models of every manufacturer.
Sorta like trying to discover the Northwest Passage of universal market coverage.
Does this ring a bell? ** cough ** java ** cough ** mobile flash ** cough ** flex **.
Anyway, the “universal” solution never worked 100% of the time, and it didn’t really save us any money because when it broke we ultimate spent our spare time in front of a serial data stream datascope seeing what the pumps were really sending back to our software.
In the end, we discovered that in order to deliver the best product we could, we had to be experts in every device we purported to support.
And eventually, rather than writing a single universal controller we wound up writing three or four manufacturer specific controllers.
Eventually, we DID become experts in practically any type of gasoline pump being used, though we thought we could bypass that step and still have a great product.
We were wrong. You gotta pay your dues.
It was scary for a time that I could practically name – on sight – the make and model of any gas pump at any gas station I passed for many years, even after the company I worked for folded. Not to mention being able to read, by sight, real-time stream data between pumps and controller.
And you thought YOUR life sucked.
Long story longer, in order to provide the best user experience / product possible, in any given market, there is no commercially kick-ass development shortcut to 100% market penetration AND still have a great product that is best of breed.
You gotta pay you dues, and understand, completely, your target audience and market.
There is no universal, wonder bread solution that is going to allow you to write your world beating chinese checkers app in Flash, one time, and have it take every handset by storm. There’s no miracle cross-compiler that is going to allow you to meta program your way into cross platform compatibility Nirvana.
You want to write a killer iPhone app? You have to do it in Objective-C and stop cry-babying about Apple not letting you do it in Flash. Want to write your app once in Java and then nominally translate minor differences between Android and Blackberry? It will never happen in your lifetime.
Immerse yourself in the Android SDK, and write a killer Android App. Devote yourself to knowing everything about RIM and the Blackberry SDK of choice – Java or Widget – and wow the world.
But stop looking for the Northwest Passage. It doesn’t exist.