I have found this analogy very helpful throughout my years of consulting in software development. There is a tendency to underestimate how much work is required to develop a quality piece of software. Clients see the forms on the page, and the bits that print out, and the cool little graphs, and they decide “well this can’t be too hard to do! I’ll have one too!”

This is a dangerous place to begin the software development lifecycle.


One of the first conversations I try to have with my customers is to explain that building apps is a process, and one that has been refined over many years and is based on the fundamental principles of engineering that date back thousands of years. I try to break it down for people like this: imagine you were building a house.

Most of us have driven down a street and seen a beautifully constructed homestead: the kind of place where you can imagine yourself sitting on that patio having a BBQ with your best friends, and when they eventually head home, you can take a stroll through your garden, have a seat on your romantic swing with your partner, before retiring upstairs and drawing the curtains on your floor-to-ceiling windows that open out to your balcony…

So I ask the question, how much did that house cost to build? How long did it take?

Take a peek above the six-foot hedges and ceramic lions for a minute, and consider: Before anything happened, the person who built the house needed to know how many bedrooms they needed, how many other rooms they needed, the number of bathrooms, the size of the garage, and how much outdoor space. Pretty easy, you say? You could do that for the house of your dreams, so couldn’t you do it for your perfect app too? Sure. But if you walked up to a builder tomorrow and told them you want a three-bedroom, two-bathroom house with a double garage and a balcony, you wouldn’t be expecting him to tell you what it would cost or how it would look. You need some more research.

For example, what type of land will it be built on? This is an important decision because it will impact the methods your builder uses to attack certain challenges. If you are on a slanted block, chances are certain parts are going to cost a little more, and you may want to rethink your choices before committing to that road.

Similarly with your app, you need to know what devices it will run on. Will it be for iPhone (www.apple.com/iphone), Android (www.google.com/android), Windows Phone (www.microsoft.com/windowsphone) and will it need to integrate with any other software? Your accounting system or your CRM perhaps? These are all important factors and have an impact on technical and functional decisions to do with your app.

How do you want your house to look? Are you a cement-rendered person or do you prefer brick? Modern or classic? How much glass on the outside? Do you need a gate? Driveway? All these questions will help your builder decide on other facets of your job.

So, too, with your app: how is it going to look? Is it going to be used by people in more creative industries and therefore needs to be impressive, or is it just for churning out data and therefore the look-and-feel plays second fiddle to the grunt-work. If you are someone who likes the modern look, you may need to employ certain graphical or animation components that are only available in a native app as opposed to a HTML5 app. The design framework of your app will be pivotal to its development. You won’t be able to build it without considering that.

Now to the matter of cost. I recently wrote this blog post (blog.apphappening.com/experts-guide-building-great-app) addressing the six key steps to building an app. I mentioned in that article that a very common question I hear is “I have a great app idea – but now what do I do?” Another very common question is “how much will my app cost?”

Let’s continue the building a house analogy a little further:

What kind of fixtures do you want? How about your appliances? Do you want the stainless steel fridge that fits perfectly into the groove of the wall, or will you go with a cheaper fridge that does the job but doesn’t look as sharp? How about lighting – want some down lights for ambience or are you happy with the standard globe fittings?

My point is, the questions keep coming! With your application: how many users do you want to cater for? How much data will they each store? Do you want the amazing animation on the home screen, or are you happy to go with something less fancy but more in-line with your budget?

And lastly we need to talk about your team. Your house might be designed by an architect, for example. If there are complexities, say you need to install an automatic door for your garage on a slight hill, you may need an engineer’s approval. You will need plumbing, so a specialist will have to look into that. Someone will need to suggest your internal and external colour palettes, and an electrician will need to connect your home in a 21st century way! Of course you’ll then have the builders, labourers, gyprockers, cementers, each with their own specialty. We respect that all these professions or skill sets are required to build a house – so why do we neglect the same is true for building software? Your app needs an architect – someone to document its overall existence. You will need analysts to make sure what you want to achieve is possible. You will need animators to get those moving parts right. You will need designers to decide on the colours. You will need developers across multiple skill sets – some to do your database, some for your screens, some for your data access layer. There are individuals who can perform all these tasks, but that doesn’t mean they’re not different disciplines. In very large organisations or on substantially complex projects (just like with the construction of a very large piece of infrastructure) there will be one or more of each of these people working to create your app.

I’m writing this article to help you understand and appreciate the intricate process that is software development. At the end of the day, you need a good project manager on your team – someone who gains your trust by demonstrating his skill and knowledge. This is just as true for building a home as it is to building an app. This is the kind of person who doesn’t ‘cut corners’ on the process, but rather walks you through it – explaining, teaching, helping and indeed learning about you and your needs.

Around the world, real-estate is one of the most lucrative forms of investment. It’s good to know that you don’t need to be a builder yourself to own a dream home. Similarly, you don’t any technical skill to make a successful investment in app development.