It would be short-sighted to base your device and network selections on a single application. The overall success of mobility in an organization is ultimately based on whether the application users are satisfied with many factors of the solution, even if some of them are totally unrelated to the line-of-business application being deployed.
The best example of this is access to email. Once wireless devices are introduced to an organization, the first request is often whether the selected device will allow for access to corporate email. As the application architect, you may have decided on implementing a smart client solution using a Pocket PC device with wireless access provided by a wireless PCMCIA card. Then you discover that another group has just made the decision that wireless email is a requirement for any solution that is deployed, and in order to get approval for the business application you have designed, a device that is more conducive to email has to be selected. For a variety of reasons, RIM BlackBerry devices are great for accessing email. This is now the device that has to be used, even though there are many good corporate email solutions available for the Pocket PC platform. This decision, made without consideration of the original application has limited the flexibility of the solution you can provide. You might think that this is an isolated case, and that it is not relevant to your situation, but it occurs more often than you might expect.
The next most common request is for Internet access. Even if the solution being deployed uses a smart client architecture, the application users will inevitably want to access Internet content such as stock quotes, weather forecasts, or personal email. So now there is a requirement to select a device that has a microbrowser for wireless Internet access. In most cases this will not be too much of an inconvenience since nearly all wireless devices provide some form of Internet access. This is true of all device classifications (see Chapter 2, "Mobile Devices").
A similar situation is when a company decides that it is going to take advantage of devices already in use. These devices may have been supplied by the company for other applications or they may be devices that employees have purchased on their own and expensed to the company. In either case, you are usually looking at supporting a wide range of devices ranging from WAP phones to high-end PDAs. If you are mandated with developing an application that can take advantage of these devices, then you once again are limited in the architecture that you can choose. In this case, the outcome is usually that a wireless Internet solution is the only option since developing a smart client application for multiple device types running multiple operating systems may go beyond the original scope of the project.
Of course, choosing a device is not the only time when miscommunication between departments causes setbacks or even failure. Talking to the network administrators before deciding which method to use to get past the firewall is always good advice.
There are, of course, exceptions to these scenarios. For instance, specialty shops that cater to a certain type of device can usually be guaranteed to provide certain capabilities. Furthermore, if your company has recently mandated a certain device for use in all or certain circumstances, then provided you are quick to market, you can be reasonably assured of your target devices. And, most likely, your company already has in place at least a few methods that enable external devices to access corporate resources, of which you can take advantage.
The overall message to application architects and developers is to expect the unexpected, as there are many unpredictable factors that will impact the application architecture, device, and network selections. It is a good idea to plan ahead so you do not waste resources on decisions that are out of your hands. In general, plan to have email and wireless Internet access as a component of any solution you are deploying, even if they are not part of the specific application you are developing.