Recently I read a blog post that discussed the complexity of iOS app development. I think it illustrates very well the difficulty we have in communicating to clients and potential clients what is involved in doing development.

The process of development for any project is extremely involved. The amount of time and effort spent preparing to write code can be just as involved as the actual act of writing code.

As the blog post discussed, the amount of thought required into understanding the infrastructure requirements to support an iOS app can be substantial. What does the app communicate with? Where is user data stored? How is it transferred? As slick as iOS is developing for it is not simply pulling in different components and flipping a switch.

The same can be said for just about any other type of development project. Many times we look to open source out-of-the-box solutions for our clients, but usually implementing these solutions is like trying to fit a round peg into a square hole.

There are two ways to look at a development problem:

You can either build a solution that conforms to the business OR you can conform the business to the solution.

That is why we like customized solutions – you look at how the business operates, what technical needs exist and then build something to match.

Doesn’t the cost of going custom far outweigh the benefit? Building a customized solution doesn’t mean that it is any more intensive than trying to customize an out-of-the-box solution. Trying to customize Magento for anyone other than a Zend Framework expert can be rather daunting. Looking at Magento code will reveal nested directories inside nested directories containing files with a 100 lines of code in each file with no clear way to connect the dots. Taking a request to add a form field to an existing form can involve changing template files and expanding the existing object (address object for example). Simple things can become rather complicated to implement and what might have been a 2 hour job becomes 8 hours.

So, don’t be fooled into believing that an out-of-the-box solution will be cheaper and less intensive to implement than a custom solution. Tedious application development even exists in the world of iOS applications despite the wealth of tools that Apple provides. Just like Magento, simple changes can require substantial code changes in iOS app development.

All the more reason to do proper planning and documentation before you even begin writing code. Lack of proper planning can easily double your development costs, waste precious months, and have you end up with the wrong solution to the problem.

Bottom line: Don’t skimp on your application development budget and be sure to include adequate time and money to do proper planning and documentation.

If you’d like some perspective and want to get an idea of what’s really involved in developing an iOS application read this post from a developer of Twitterrific.