How Much Does It Cost to Make An App? Part 1: Time
An Exploration of the Factors That Affect How Much Time It Takes to Build an App
When you have an idea for an app—whether it’s on iOS, Android, or the Web—and want to bring it to life, one of the first questions has to be what will it take to make? I have helped many entrepreneurs build their app ideas, so allow me to share the variables that go into it.
The most basic formula is: time × rate
. I have taken this equation and broken it up into a two article series to discuss each part. This is the first part of the series.
- How much work is it? The amount of work to be done determines the time it will take. We’ll discuss the factors that affect the time it takes to build an app.
- Who does the work? The people required to build your app affects the rate. We’ll discuss the factors that raise or lower the rate paid.
How Big Is Your Idea?
We call the amount of work that needs to be done to complete your project the scope. This varies with every product, of course. The great news is you control a couple levers that minimize the work needed to complete your idea. One is to reduce what you need for it to be considered done. Another is to reuse what someone else has already built. Let’s explore how we can reduce and reuse:
What Can You Reduce?
One of the things I love most about entrepreneurs is the passion they have for their idea. It’s universal, though, for both good and bad ideas. When an entrepreneur is right, she sees something that’s going to positively change people’s lives long before most others get it. Many successful startups face a stream of naysayers.
One of my favorite stories about this was told at Collision conference by Chris Sacca, a venture capital investor who made many, many right calls. When AirBNB came to him to seek funding, he turned them down. He considered it too dangerous — that somebody was going to get murdered and the whole business would crash down.
But in hindsight Brian Chesky and the other founders of AirBNB were on to something big. The company is now valued at over $30 billion.
These stories make it easy to forget that 9 out of 10 startups fail.
So how do you tell if your idea is good?
I recommend all the clients I work with take the Lean Startup approach. When it comes to starting a new app there are two key parts: idea validation and the minimum viable product (MVP).
The goal with validating your idea is to gauge interest in your product with the minimum investment on your part. There are many ways to go about it, but a month of validation can save a year of building something that goes unused.
If your idea is validated and you want to go forward with it, the next step is creating the MVP. This is all about getting the core experience right.
Successful startups follow a build-measure-learn loop. When you keep building and building, you aren’t measuring or learning. To get the success you want, you need to get something out earlier than you want. Reid Hoffman, founder of LinkedIn, put it this way:
If you’re not embarrassed by the first version of your product, you’ve launched too late.
- Validate your idea first. It can feel like a distraction when you want to be building your product instead, but doing this will save you both time and money in the long run. In one month, a team can plan and execute a method to validate your product.
- Build a minimum viable product. If you follow the advice above, you can spend less time building before getting your product in front of users. Will the initial product be your dream product? No. But letting go of that belief will allow you to build a better product in the end.
Follow these two rules, and you won’t build more than you need.
What Can You Reuse?
Thanks to open source and off the shelf software, many would-be ambitious projects are in reality tame. I’ll explore a couple broad categories of apps that have great platforms to get your idea built quickly. If you don’t fall into one of those two, or you need more than what these platforms offer, I dive into custom development later.
Content Management
If your app is a website for sharing information—like news media, a company webpage, or a portfolio—then you can build on top of a Content Management System. Here are a few options:
- WordPress. Going with WordPress for building a content site is like the saying from the 1970s about IBM, “nobody ever got fired for buying IBM.” WordPress powers over 25% of all websites, has thousands of plugins which speed up creating features, and has a huge community of developers who know how to use it.
- Drupal and Joomla. When considering WordPress, these are the two most popular competitors written in PHP. Because they aren’t as popular, however, there are fewer developers who know the platforms and fewer plugins available. Those issues can lead to greater costs for little to no difference to the end user.
- Ghost. Unlike the others mentioned so far, this Content Management System isn’t built in PHP. It just hit 1.0 in July, and it is still raw in a lot of ways, but it is growing in popularity and has sticking power. It could be the future of CMS’s and the “JavaScript everywhere” concept can help you build a leaner, more efficient team to put together your site.
- Jekyll, Hugo, Hexo, Gatsby, etc. Many content sites are trending away from dynamic CMS generated sites. The benefits are powerful: faster load times, fewer vulnerabilities, and the ability to handle way more traffic. This helps your SEO and security, and reduces infrastructure costs. The downside are many of these are more difficult for editors and content producers to do their job.
eCommerce
If your app is a website for selling products, there are platforms that provide you everything you need to get started:
- Magento. The web’s most popular eCommerce platform is also written in PHP. Similar to using WordPress for a CMS, Magento is a safe bet for building a site to sell products. It has thousands of extensions which speed up a team’s ability to get a site live.
- WordPress with WooCommerce. We already introduced WordPress as a very powerful Content Management System. WooCommerce turns it into a full-fledged eCommerce platform. This setup can be ideal for retailers who also produce a lot of content and would like to get the benefits of the WordPress ecosystem.
- Shopify. Shopify is a service solution that is extremely easy to get off the ground, making it great for Do-It-Yourselfers. For people going lean, consider this approach. Once you have revenue, then you can hire a team to extend your site and help you establish your brand.
One of the great things about both Content Management Systems and eCommerce platforms is there are a wealth of custom themes for them. Sites like ThemeForest (now Envato Market) can get you a beautiful site that fits your aesthetic.
Many non-technical people can get started with Shopify or hosted WordPress and a custom theme and have their site up for less than a $100 outlay. Don’t necessarily believe you need to jump straight to finding a development shop or digital agency to get up and running.
Having said that, there are cases where you will want to seek professionals:
- When you have unique features or the off the shelf features don’t work like you need.
- When your design must be unique or match your established brand’s aesthetic.
- When you are doing something unique where plugins and extensions just don’t exist to do it.
Using these platforms can still save you time and money when you go the custom development route.
Need More Than Off-The-Shelf Solutions?
Outside of those broad domains—or in the case where the platforms don’t meet your needs—what you are now looking at is custom development. The specialization required to build the product and the amount of work needed to complete it is much higher. In short, it is expensive.
I have not seen a custom developed app that does something valuable take less than three months of a couple developers time—not even mentioning the design, project management, and quality assurance needed. Most custom developed apps I have seen take 3 to 9 months for their first release. One product I helped make took two years with a team of five developers before it went live.
How do you speed this up?
It’s a challenge, but many of the concepts from the previous section apply. With custom development, we work at a lower level of abstraction. Less is already built for us. But if we can build on top of open source and reuse existing code, it saves time.
One quick way is to use a component library.
For Android and iOS, the platforms come with many built-in components. If you can only theme the components instead of creating new ones, you can save time.
For the Web, the playground is a little different. You probably haven’t seen a website with default components in a long time. Let me remind you: they’re ugly.
However, there are serviceable component libraries like Bootstrap and Foundation. Again, the more you can keep to theming these components and not creating new ones, the more time can be spent on higher value features.
When creating a back end for handling the logic of your application, we can apply these same principles. Ruby on Rails, Django, Play, and Feathers.js are frameworks that help developers focus on your features and not corralling the computer to do what you want through tedious low-level instructions.
And the final advice I have for speeding up web app development is to not start with a Single Page Application (SPA). Don’t mistake me, though: I’m not saying don’t ever go with one. Eventually, most apps should have their UI split out into one. But if you do it from the outset, you will spend effort on both the front and back end working on the communication and state management pieces. It’s wasteful.
Two caveats:
- If you are building both a mobile and web app, you’ll already need the backend to be an API.
- If your front end has many dynamic components, it can mean you’re already managing state on the client which can make things messy.
Getting a Grip on the Time It Will Take
The more your project takes advantage of platforms and reusing what already exists, the more you can focus on what differentiates your idea and makes it valuable.
Disclaimer: Any estimates or ranges are based on my experience and represent a typical product. Extreme cases exist. You can’t recreate Uber in any of these time ranges.
Content Management & eCommerce
For some domains like eCommerce and content management, there exists robust platforms that can handle almost any idea’s needs. With them, you could need 2–8 weeks of a designer’s time, and 8–24 developer weeks for the initial release. A good ratio for quality assurance per developer is 1:3, but 1:4 is considered acceptable. This means about 2–8 weeks of a QA engineer’s time. If you choose to go the custom development route here, those same apps could take upwards of a couple developer years in development.
Custom Development
When you aren’t in those domains, the platform you build atop is at a lower level. If you take advantage of modern, productive frameworks, the back end will take from 10–30 developer weeks. Web and mobile front ends will fit in the 12–36 developer week timeframe each for a first version. QA for all this work should be around 1/3 to 1/4 of development time and design is likely to still be in the 2–8 weeks range based on the scale of your app.
These are pretty large ranges. Of course, you can easily bust the high end of those ranges if your idea is massive and complex. I’ve never seen any initial releases take less time than the lower end of the range.
But how do we narrow the range down a little?
You can get a rough idea for how long an app will take to complete based on the number of unique screens (or pages) and the complexity of those screens. Mobile tends to have simpler screens than Web. They also tend to have more screens than Web, too. Both the amount and complexity of screens affect time needed for design, development, and testing.
From my experience, a rough rule of thumb is simple screens take developers 1–2 weeks, moderate screens 2–4, and complex ones 4+.
Complexity is based on the number of components and the functionality of each. For instance, putting a list of items on a screen is simple. But you take that same feature and add sorting, paging, inline editing and other pieces of functionality and it starts increasing the complexity.
I wish I could share a simple formula for estimating the complexity of a screen, but the difference in estimating a simple, moderate, or complex screen comes from experience. Without it, what might appear trivial could have a lot of hidden complexity—I’m looking at you, styled <select>
elements.
Breaking it down, here are my naïve ballpark formulas you can use to figure out how many weeks an app might take:
UI development = (1.5 × simple) + (3 × moderate) + (6 × complex)API development = 0.8 × UI developmentTotal UI development = UI development × # of platformsDesign = 0.25 × Total UI developmentQA = (0.333 or 0.25) × (Total UI development + API development)
I ran this formula across a few projects I’ve been a member of and it’s close enough for a starting point. Every case is different. Some projects need a lot of design time. Could be you need to work through a number of design revisions before starting development. Some projects have vastly more complex API’s than UI’s. I’ve seen the gamut.
If you have an idea and would like someone to get you started with an estimate of how long it would take, I’d like to offer my help. Email me and I’d be glad to schedule a couple calls to discuss your idea and offer advice.
Thank you for reading the article! If you found it helpful and would like to show your support, then please share it and be sure to hit that 👏 button. For more articles like this, follow me on Twitter.
Zach Kuhn is a Director of Development at Smashing Boxes, a Durham, N.C.-based digital agency. He has built web and mobile apps for over a decade, and is involved with startups and emerging technologies like blockchain, IoT, and machine learning.