Mistake: Having a Developer of Native iOS Apps Write Native Android Apps
Of course the reverse is also a mistake; having an expert at developing native Android apps write native iOS apps. The best one platform native app developers are very slow and produce bad products when writing native apps on a similar platform. Without focus, mediocre dual platform native developers only slowly become better when they are writing for both platforms.
The native SDKs for iOS and Android are huge collections of software each designed to solve the same problem, support the running of native code on a mobile device. A person must learn a huge amount of information to become a good native developer on either platform. The body of knowledge a good developer of native apps needs to know keeps expanding as Apple and Google continue to develop their respective mobile OS. A developer switching to the other platform needs months, maybe years, to learn that other platform. This developer needs to unlearn the philosophies, patterns, and techniques unique to the first platform while learning the different knowledge of the second platform.
Switching focus and taking the time to learn another other platform is necessary and important to software developers careers. It happens all the time as we developers stop working on one platform and retrain for the new platform. The real mistake is expecting a developer to continue to write code in their first platform while writing code on the second platform. What most often happens is the developer keeps the first platform knowledge and merely translates what he must to the new platform. Such a developer will write a program for his first platform on the second platform, which can cause a number of quality defects in the final product. The final product can seem out of place to the users, since it may follow the conventions of the other platform. The final product can be buggy, slow, and inefficient, as the best way to programmatically accomplish any individual task on one platform may be the worst way to accomplish the same task on the other platform.
Even worse is when those in charge assume that a mobile developer is a commodity, and can be easily reassigned to work on a different platform. If little accommodation is made for the developer to retrain for the other platform the developer ends up only learning the very specific aspects of the new platform that matter for that project.
An Old Mistake
This mistake has be around for almost as long as companies have sold software packages. I remember seeing companies make this mistake way back in the 1980s, when Mac developers were writing early Windows apps the Macintosh Way. Or even worse, when DOS developers tried to write Mac or Windows apps the command line way.
Needed: A Bigger Difference
Developers should work on more than one platform, but the problems each platform attempts to solve should be very different. The iOS and Android SDKs both try to solve the problem of writing general programs for mobile devices. A platform designed to solve a different problem like making games, websites, or desktop apps, has enough differences to avoid the issues with similar platforms.
I highly encourage all developers to expand their abilities by working on more than one platform, as long as that platform is significantly different from your primary platform. I’m a developer of native iOS apps, and I’ve recently chosen to work with Unity, a web framework, and even Arduino. All of these are significantly different from iOS native development. With little overlap, I can learn these other platforms without conflict with my primary platform.
If You Must
I recommend, if you must do cross platform mobile development on iOS and Android, to use a tool that can compile to both platforms. Use a game engine like Unity for a game. Use Xamarin. Build a Cordova app with HTML5 technologies.
Another alternative is to hire another developer to work on the other platform. A contract programming firm should have at least two specialists on a cross platform native app project. A product company should do one platform first, and when the product grows to the point it can support and benefit from the app on the other platform, hire another employee or the necessary contract programmers to write the native port to the other platform. Hire specialists on the other platform.
Or convert one or more of your first platform specialists to the second platform. Let them know this assignment is permanent (as permanent as any job assignment can be today). Just make sure to give them the time and understanding it takes to switch.