How are app development costs calculated?
One of the things that we love about our work at Gravitywell is that every client and each project is unique. It keeps things fresh and forces us to learn new skills and work with new technology. However, the downside is that providing a cost estimate for clients is not a straightforward process.
This article aims to give you some insight into how we go about determining an accurate estimate for project briefs provided by the client. If you have a project which you'd like an estimate for, then you'll learn the following:
- Which factors could generate significant cost.
- What crucial information you'll need to provide in your brief.
- Important topics which you may not have considered yet.
- What areas you may need to compromise on, in order to stay within your budget.
As a side note - the approach in this article is not the only way we can handle cost estimates. We can also start with your budget and work backwards to explain what we can provide within that limit. This is often much more useful and saves the client time. Look out for a future article about this topic.
You may also want to read a previous article What must I give an app developer to find out cost?
Features & functionality
An obvious one to start with but there can be a huge amount of variation in terms of effort required. We usually work through a list of features and then look for hidden details that need to be discussed with the client.
For example, a requirement might be that the user can store information in the app. This then would mean that we need a login screen at the very least. Then, there are further considerations like: do we need to allow the user to change their password? Will they need to be able to edit their profile? Will the account need to be shared across devices and a website? Are there security or GDPR issues to factor in? All of these will have an impact on the amount of work required.
Another example: the requirement is that the user can make payments within the app. There are a number of ways this could be implemented and they all have an impact on cost, the user experience and the business processes behind the app. If the payments are for digital products then Apple will insist that you use their App Store payment system which incurs the 30% commission fee. If we plan to use a payment gateway (e.g. Paypal, Worldpay or Stripe) then we need to consider the implications of integrating with these services - how long will the integration take, what are their charges and what limitations do they impose on the transactions themselves?
We need to work through all of the implications of your feature requirements and propose initial solutions for them. We then break them down into smaller tasks, in more detail, so we can estimate time required to complete each of them on their own. This process is effective but can be time-consuming and require detailed understanding of the client’s requirements so we don’t miss any hidden complexity.
CMS, backend and admin systems
This is often overlooked, especially on mobile app projects. These days it's rare that an app is going to store ALL of its data locally on the user's device so we're going to need some kind of backend system to support it.
Here's an example: Your app has a map of gyms located all over the UK. You're releasing the app on both iOS and Android platforms. You want to be able to update the map of gyms as they open and close or their opening hours change. It would be slow and expensive to keep changing the gym info in both the apps and then keep submitting them to the respective app stores every time. So, the solution is to have a cloud-hosted database where you can manage that gym data centrally, which both apps then check regularly for updates. Ideally then, you would have an interface through your browser for editing the gyms whenever necessary.
Often the backend systems do most of the 'work', storing and processing data. The apps themselves are simply viewers and filters for the content provided by the backend. This is partly because it's cheaper to develop the system in this direction because the data needs to be shared across different platforms (iOS, Android & website).
Connections to other software systems
There are many reasons why you app might want to connect to other software systems. Maybe you already have software systems in your business which the app will need to interact with; purchasing goods or making bookings, for example.
But there could be 3rd-party systems that you might want to connect to, for example:
Payment processing - e.g. Paypal or stripe
Live weather feeds - e.g. Metoffice
Email Newsletter - e.g. Mailchimp
Accounting / bookkeeping - e.g. Quickbooks or Sage
eCommerce - e.g. Shopify or Magento
Customer Relationship Management (CRM) - e.g. Zoho or Salesforce
Booking management - e.g. Eventbrite or BookingLive
Social Media - e.g. LinkedIn, Twitter, Facebook
Point of Sale (POS) - e.g. NCR or Omnivore
Integrating with these systems will save you from reinventing the wheel as they provide existing features for your app. But there is a development overhead when integrating them with your app so they're not "free" from that point of view.
You've probably got a sense of which apps on your phone are 'well designed'. There are a number of overlapping factors that contribute to that feeling:
- Ease of use
- Overall experience
- User interface
- Feedback / interactions / animation
Your favourite apps will have likely had a greater design budget initially to ensure that the users love them and keep coming back to them.
Testing the app with ‘real users’ is crucial part of the design process as it helps produce better software products. There are lots of methods we can employ, like: focus groups, user interviews, screen recordings, wireframes, prototypes, A/B testing, etc.
The aim is to answer questions like:
- What do users expect to be able to do?
- Which are our most important users?
- Can they easily get what they want from the app?
- Are our assumptions about users correct?
And so on.
Without this process we’re operating on a set of assumptions that may not be correct. Sometimes we can’t see the wood for the trees. Just because we know a great deal about our industry, it doesn't mean we know everything about how our users will behave within an app.
User Testing gives us a chance to test the assumptions and then re-test potential improvements. The result should be a better product before it launches for the first time, risking alienating users right from the start. But even after the launch, we should be trying to gather feedback and data from users so we can continuously make improvements.
If an app feels very simple or straightforward then there is a very good chance that the team behind it have spent considerable time on making sure that you had a superb experience.
If you're launching a new business or service then we should also be considering the brand identity. Branding is crucial for a successful app, just as it is with everything else in business. Your users will be comparing your brand to the perceived competition and if you don’t put enough thought into it then you risk looking like a cheap knock-off.
Brand covers logo, colours, fonts, photography, illustration, tone-of-voice for written materials, and many other aspects. If the brand doesn’t fit the product or the target market then your app is going to struggle.
You may have come up with an incredible idea for an app but that means nothing if nobody ever discovers it. The app stores have millions of apps so yours will get lost amongst all the others. So, how do you expect users to find out about it?
We can help you with marketing campaigns, which might include digital advertising, PPC, social media, etc.
But it’s not necessarily about spending money - sometimes it’s just about being smart when promoting the app. There are often very low cost ways of getting your app known by potential users. We have to be creative whilst remaining appropriate for the target market.
Looking ahead, if your app is successful, you may want to build your own technical team to manage development of the app. If so, then you’ll need to make sure it uses languages and technologies that are easy to hire for, and you'll probably want thorough documentation for the app and its supporting systems. There should be enough detail so that a competent team can read, understand and take over development without needing training.
Most software needs some form of maintenance and apps are no different. Obviously there is a maintenance of content but there is also some work that needs to go into the underlying technology to keep the keep running and stable.
For example, 3rd-party systems (see connections... above) can change after your app has launched. When they do, it can result in parts of your app not working until they're fixed. Perhaps Twitter will change the way tweets should be displayed which prevents tweets being displayed in your app until you've updated the connection.
Mobile platforms Apple and Android will make significant changes in one of 2 main ways: They may change the Operating System through an update or they may change their app store's acceptance criteria. Both of these could result in you having to make changes to your app and resubmitting it to the app stores.
Having an ongoing maintenance agreement with your app developer will ensure that time is reserved to promptly deal with anything that may come up once the app has been launched.
This topic is all about hosting of your data and the systems that power the app. Unless you have a very simple and self-contained app, you're probably going to need a server. Fortunately, hosting technology has come a long way in the last 10 years. Cloud server systems like Amazon's AWS are highly flexible and cost efficient alternatives to 'dedicated' servers.
But in order to understand development costs and keep your ongoing server costs to a minimum, we'll need to consider the following:
Speed - what sort of performance is required and what features may slow things down for the user? We can always beef up the servers but perhaps we can find another way to avoid the increased costs?
Media - A Content Delivery Network (CDN) makes sure that content like videos can be accessed as quickly as possible anywhere in the world.
Redundancy - How critical is uptime? With AWS we can automatically restore a server in the unlikely event that it crashes. We can even automatically create new servers in a different part of the world if the entire data-centre shuts down.
Security - How secure does your data need to be? Are we talking about highly confidential personal info like medical records or just business addresses which are already in the public domain?
Of course, not everything discussed here will be relevant to your project but hopefully you’ll have a sense of the types of considerations that will go into producing cost estimates.
If you would like to talk to us about providing a cost estimate then we’d be happy to talk to you further. Get in touch and we’ll arrange a chat.