Two Elements: The Idea and the Platforms

Which is trickier--coming up with a good idea or 'porting it cross-platforms? Does your company have a long list of ideas, or the skill set to develop across platforms, or both? Recently I read an article about the iPhone becoming more difficult to develop for, due to fragmentation. Besides other things (volume, the AppStore....), the iPhone has been attractive to develop for because it does not require many iterations or multiple phones. The only real differences in feature sets have been between the iPhone and the iPod Touch, until now, with the release of the iPhone 3G S.

As newer features only work on the latest iPhones, will developers be able to write one set of code to accommodate for this? As a long-term Palm OS developer, we've experienced this situation for many years. When I asked Cory, our main developer, what he thought, he replied, "If you know how to program, it won't be an issue." Many of our apps run in Palm OS2, OS3, OS4, OS5, and even were pre-ready for Cobalt (now vaporware). In addition, multiple devices run on the Palm OS and many have been "tweaked" by Palm and the carriers, so developers have had to account for a lot of 'quirkiness'. It can be challenging, but for the most part, we've always had great tools with which to test and debug.

In the comments of the aforementioned article, one person suggested that the iPhone fragmentation will lead to developers branching out to multiple platforms, "expand(ing) their reach." Since you can't "write once" you might as well write cross-platform. But is this realistic to do if you are a one-person dev team, or a microISV? I've long held the opinion that time is best spend focusing on one platform--it's more efficient. However, I started to think--what really makes the most sense, 'porting, or coming up with new ideas?

If you have had great success on an application on one platform, it might make sense to 'port to the other platforms, or at least some of them. Appstores are becoming commonplace, so the idea that software can be installed on your phone is becoming ubiquitous. What do you need to consider?

1) Skill set
Do you have the skill set to switch from C/C++ to C# to Java to webOS to Objective-C? I have a spreadsheet that lays out the different languages required to develop cross-platforms for mobiles. Besides the experience and training, do you have the mindset to program in one language one day and switch to another the next?

2) Resources - people
How much time do you have? How many developers are on your team? For us, time is the scarcest resource.

3) Resources - code
Can you reuse the same code? Have you created libraries or lower-level layers on which you can build?

4) Resources - equipment, IDE
Can you use the same IDE and/or compiler for multiple platforms? Do the platforms require you to use specific hardware, or can you utilize a virtual machine environment? How expensive is the software for the IDE? Do the platforms charge a fee for entry or signing?

5) Resources - financing
Are you bootstrapping? Working a day job until you have a big success? Or have you gotten small business loans or have you secured funding? The amount of cash you have to work with could solve some resource issues, but profit margins are affected by expenses, no matter how you fund them.

Developing cross-platform can be complicated, but unless you tackle it with low-level layers, engines, libraries, and reusable code, it will take a lot of time. However, you do not have to come up with a new idea, you can re-use many of the graphics and the basic design, plus you have familiarity with the app. You can build on the app's success. You can borrow from your promotions and other marketing. As customers switch, you can maintain a good customer base. If you do not have a lot of good ideas and ready research to understand their viability, cross-platform 'porting may be the way to go for your business.

On the other hand, if you have a long list of ideas, it may make more sense to stick to one platform. Staying on one platform allows you to optimize your setup and focus your development in one language. You can definitely reuse code and utilize libraries. Coding can become more efficient as you familiarize yourself with the platform as you work through each application. Your marketing efforts will be focused across one venue and you can work towards becoming well-known as a developer for that platform.

So, what do you think? Do you have better luck coming up with ideas for killer software apps, or do you have a cross-platform skill set that allows you to program anywhere with ease? Do you think it's more efficient to program to the same app design, or to program many apps in the same environment? What provides your business the shortest timeline to market will most likely vary, but it's important to ask that questions before you decide to go vertical or horizontal in regards to mobile software platforms.