1. Custom SDKs. The effort it takes to become proficient in a target platform's nuances leaves little time to learn other platforms. With the Android, BlackBerry, iPhone, Nokia, Palm, Windows Mobile, and others promoting unique software development kits, few mobile developers have deep knowledge or experience with any two.
2. Platform Fragmentation. It's the '80s all over again, except this time it's mobile, not desktop, computing. Writing for the lowest common denominator won't satisfy high-end smartphone users, who'll quickly find native platform application alternatives.
3. Security. Mobile security is a specialty unto itself. For developers, suffice it to say malware writers see increasing opportunity in poorly written mobile applications. Developers must be vigilant about the code they write, and companies should be prepared to rapidly respond with a fix if a vulnerability is found.
4. Unpredictable Operating Conditions. Phones are sold with a huge range of configurations -- from GPS and slide-out keyboards to bare-minimum features. Smartphones also will be used in environments ranging from sun-baked car lots to dark warehouse corners, forcing developers to test applications across broad platforms and external factors.
5. Variable Screen Resolutions. So much for "design once, publish anywhere." With so many different devices with different dimensions, resolutions, and color depths, creating a single Web user interface is difficult.