Introduction
The time has come for your company to adopt a custom software system, whether it’s a brand-new venture or automation of existing business processes. You have decided to go with the most reasonable and modern approach: a web-based software application run in a secure cloud. The next question is, how much should you spend?
You understand that, when it comes to pricing software development, there is no quick answer. But there must be some kind of rule of thumb, or at least an order of magnitude to consider before you contact a development team? After all, you need to establish a budget somehow! The good news is that, while there is no universal, definitive answer, your project is likely to fall within a few somewhat common categories, unless you’re you’re concocting something truly exotic.
First, let’s look at two extreme cases: enormous undertakings and very small jobs. A project that can be done by a freelancer or a small group of freelancers probably shouldn’t cost more than a few thousand dollars. But when it comes to larger projects, things get more complicated. Large companies who already have their own IT teams are likely able to plan, estimate, and execute these projects on their own and will only look for outside help to augment the team. But small and medium businesses are usually not able to design the architecture or estimate the scope of work and will need the whole package of services, as opposed to simply hiring a certain number of engineers for a certain amount of time. This article is mostly intended for those small and medium businesses who will need full-service development support.
Common sense tells us that the more features you have (more types of users, data flows, interactions, calculations, etc.), the more complex and expensive your software is going to be. But what are the less obvious — but still major — cost drivers that impact every modern web application?
Project Type and Business Domain
Obviously, standard projects are easier to estimate, and when developers see a project that’s similar to many they’ve created before, it will be easy to narrow down the range pretty quickly. On the other hand, finding the developers to create firmware for one-of-a-kind circuit board might be a difficult task, and their predictions for the project might vary greatly (sometimes by an order of magnitude).
Same goes for the specific domain: if your company needs something fairly standard like a custom scheduling platform or an accounting app, you’ll have far fewer variations in your estimates than if you’re looking for something more unique like an investment forecasting tool, which might require more niche experience (in this case with actuarial math) than simply software engineering, itself.
Integrations
One of the first things software developers should ask you about your project is whether you need any integrations with third-party software suites. For example, payments processing integrations seem deceptively simple. After all, every online store has payments processing, so it should be easy, shouldn’t it? But these minor aspects can easily double or triple the costs of any software. If you’re considering connecting your system to accounting software, a CRM, communication tools like voice help or chat, social media, or any external online resource, including maps with live GPS tracking, these features will also increase your price tag.
In the best-case scenario that 3rd party software already provides data access via well-documented API (software ‘communication channel’), which means you would just need to have someone maintaining this “link” to your software, and keep it up to date with any changes they make. For eternity.
In the worst-case scenario, your third-party software has closed-source code, which means there is no way to customize any parts of it for your project. In that case, a developer might need to create a bot that can pretend to be a human and emulate clicking buttons on the actual user interface, fill out forms, and so on. By software development standards, this extremely unreliable — and extremely costly — Frankenstein’s monster of integration should certainly be avoided whenever possible.
But don’t let that scare you. Integrations will be more efficient and less costly if your existing third-party applications use open-source features that enable streamlined connections among systems.
A rule of thumb for small- to medium-sized projects would be to add 15 to 20 percent to the overall cost for every industry-standard integration with third-party software.
Data Migration
One of the hidden challenges of projects designed to replace legacy systems is migrating data from the old system to the new. When the whole business is built on years or decades worth of data, transferring it to a new system and new format can be a complicated project on its own. Years of inconsistencies and minor errors scattered across multiple generations of databases will need to be steadily resolved in close collaboration between engineers and the client’s employees.
The cost of data migration will vary depending on how much data there is, how clean it is, and how it’s been stored. For truly neglected databases, costs of migration might constitute up to 40 to 50 percent of the whole development project.
Custom UI/UX Design
A fully custom, handcrafted design is a must for a flashy media product or an online learning platform with gamification elements. It’s a no-brainer, but it’s also expensive.
However, if you’re looking for internal system, such as a shift scheduler where employees block their time and clock in and out, you won’t need bespoke design. For these projects, customizing a free template or even using a tech framework’s own UI elements will suffice.
Depending on the amount and complexity of the user-facing screens in your future application, you can easily add 10 to 20 percent of the costs for the fully custom design.
Load and Availability
As load increases, it’s quite easy to scale a cloud-based app “horizontally” just by increasing spend on the hosting. Still, if you’re anticipating truly large data flows and user numbers, you’ll need to account for that on the architectural level, because there is no way to truly pinpoint the future bottleneck before the system is live. While setting up for high volumes can be costly, the good news is that, if you have that many users, you most likely have the budget to handle them!
High availability means that your business-critical system should operate at least 95 percent of the time, no matter what (or 99 percent, or even 99.99 percent, according to industry standards). That implies it should still function in the case of power shutdowns, software updates, and feature deployment. This kind of operability demands not just thorough architectural planning but also highly qualified support around the clock. Naturally, when you need a team working up to twenty-four-seven, your expenses will increase significantly.
Working with Existing Code
While the natural assumption might be that any existing codebase will speed up time to market, the reality is that, if that database is incomplete or poorly documented — even if it’s not so bad as the infamous “spaghetti code” — wrangling old code will be more likely to add time and cost. For some projects, especially smaller ones, the most efficient approach may be to start from scratch.
Urgency
Tight deadlines are costly, but exactly how much do you need to account for them while budgeting? It’s not as simple as merely doubling personnel, as the bump in velocity wouldn’t match. You’ll double the cost, but you’ll get a 50 to 80 percent increase at best, with the return getting smaller — and the overhead, communication, and coordination increasing — the more people you add.
Brooks’ Law states that “adding human resources to a late project makes it later,” and that’s especially true for software development, where many of the tasks aren’t neatly divisible. Brooks illustrates what that means, saying, “nine women can’t make a baby in one month.
Compliance
Good news: you most likely don’t need to worry about compliance and standards, period. For example, PCI compliance is a very strict set of rules you need to abide to if you want to save the clients’ credit cards information between logins. But you don’t need that for your e-commerce web app, even you are accepting payments via credit cards. You just need to integrate with a payment system that will keep all the data on their side, removing any need for PCI compliance in your own software.
However, if your medical organization’s software works directly with electronic health records, for example, you need that HIPAA compliance. There are ways to make it less of a hassle, like by using the right cloud infrastructures. But even in the “hassle-free” mode, you might end up with a significant cost increase, easily doubling your budget in case of a small project.
While we wish we could give potential clients clear and definite pricing upfront, the reality is that, because every software development project is different, vendors have to tailor their quotes to each client’s particular goals and needs. You can learn more about the estimate process in our recent blog post.