We get this question over and over. Let’s walk through the numbers.
iPhone or iPad apps are not all alike. You have several different kinds of applications.
Each of these application types may require a slightly different skill set, have a different time and cost profile, and require developers with different expertise. Counterintuitively, it can sometimes be a mistake to try to find developers with experience building applications very similar to yours. Generally speaking, developers with experience writing very complicated application types will be more effective at simple applications than those that have only developed simple products (Just as mathematicians are generally better at Algebra than high school graduates). And so it’s important to identify the type of application you’re building in order to assemble the right construction team.
Standalone applications are self-contained. These applications can do data processing, display static content that doesn’t change, manipulate documents, and do other types of basic tasks. Development time and effort varies primarily based on the type of processing required (file format support, etc.) and the complexity of the user interface to design and implement.
Peer-to-peer applications do some light app-to-app networking, like a multiplayer mode for a game. They generally involve connecting with nearby users over Bluetooth. This type of networking requires additional debugging and testing involving multiple phones or devices.
Pre-existing API or integration applications
The next tier of complexity are applications that talk to pre-built servers. For instance, your company may have a database of information to be queried by the app, or you may be accessing data from a third-party data source. Time must be allocated to learn the quirks of the API or server, to debug problems with communication, and to handle unusual error conditions.
Certain applications requires a server for off-phone storage and processing. For instance, if your application allows users to save reviews, share status updates, search for nearby users, display content that updates on a regular basis, or other nontrivial tasks, a server is required to store and distribute this data to all devices. Client/Server applications are one of the most common types of applications that people want to build. Unfortunately, because Client/Server applications require both complete application development and complete development of server software, plus hosting and other ongoing costs, they tend to be both one of the most complicated and most expensive project types.
Apps that run well on more than one platform must typically be rewritten largely from scratch for each platform. So if you are looking for an app that supports iPhone, iPad, Blackberry, Desktop Web, Android, and Windows Phone 7, you are looking at approximately 6x the cost of what that app would be on one platform. If the platforms communicate in a networked manner, care has to be taken to define standards in an interoperable way. In addition, most cross-platform projects engage different development teams for each platform, as most developers of quality only know one or two platforms well. Doing cross-platform development correctly often requires the engagement of multiple firms as well as a “master” firm that writes the general specification.
Specialized technology, research
Some applications, like Augmented Reality applications, indoor location systems, or other technical challenges may require the development of novel methods or intellectual property. Like any kind of invention, the time required to develop new technology is unbounded. Many different approaches may need to be tried and combined to achieve the desired result, or the result may not even be achievable within the limitations of the current generation of technology.
We sometimes get request for applications that are not possible on iOS, at least in the App Store. These include things like affecting the behavior of other applications, modifying system settings, disabling features of the phone, accessing restricted data such as user e-mails, etc. Apple has limited what App Store apps can do in order to prevent malicious apps from stealing user data, breaking a phone, or other matters of poor user experience. If it’s a simple idea that doesn’t already exist in the store, it’s probably because technical or legal restrictions are in place that prevent it from being easy to execute.
Now that we’ve identified the type of application and learned something about the required skillset, it’s time for Part II: assembling the team.