How I Developed a Software Cost Calculator
Tags: flutter, development, cost, calculator
Published: 2023-05-09 15:09:19

As a CTO of a small software development company building custom IoT solutions, I help my teammates assess application development costs when preparing project estimates for our prospects.

Since we primarily work with startups, our clients are very sensitive about their budgets. 

Ideally, you start every software development project with a discovery phase and dive into a product's functional and non-functional requirements early on. As a result, you can define the product's feature set, from functional prototypes to an MVP to a full-fledged product, and come up with a realistic, accurate estimate.

> Ideally — but that's not the case with startups operating on a shoestring since discovery also costs money.
 
Some of our clients may also have unrealistic expectations regarding the price of developing a technology solution. We’ve all heard jokes about startups looking to build a Facebook clone for $10k — and the saddest part is, some folks do think that’s possible.

Therefore, I was toying with the idea of minimizing the assessment work on our side while giving clients a ballpark price for bringing their technology idea to life before they even contact my team. A reality check, if you wish. 🙂

That's how the [software cost calculator](https://expanice.com/software-cost-calculator) concept formed in my head.

A geek at heart and a mobile developer by profession, I decided to kill two birds with one stone. Besides the goals mentioned above, I also put my knowledge of Flutter to the test. I developed a cross-platform software cost calculator application running seamlessly on iOS and Android devices and in browsers without resorting to JavaScript, which, in its pure form, makes me cringe.

Flutter proved to be stable and efficient enough for that task. I’m even thinking of building a physical calculator based on a single-board computer as a Christmas gift to our loyal customers. Besides, fellow developers can use the calculator to assess the price of developing a particular technology solution (or a piece thereof!) outside their expertise.

Anyway, in this article, I detail my experience creating the solution — and the challenges I've encountered on the way.

So here we go.

## How I Took the Software Cost Calculator Idea Off the Ground

Ok, ok, I know what you're thinking.

Engineering a software solution, whether a small online store or a complete [back-office system for orchestrating cryotherapy units](https://expanice.com/case-studies/cryotherapy-unit-software-suite), is a long windy road with hundreds of possible turns and pitfalls to avoid.

And unless you've prepared an exhaustive software requirements specification (SRS) document listing the product's feature set, UI/UX requirements, optimum technology stack, target audience, compliance provisions, and a dozen other issues, it's impossible to put a price tag on your application.

These were exactly my concerns. So I decided to check how other software engineers approached the estimate accuracy problem before me.

Having tested multiple software cost calculators, I pinpointed several issues to remember when creating my solution:

- The competitors’ calculators completely ignore the needs of a non-technical user. For example, how on earth am I supposed to know what programming languages my app will use if I’m new to programming? To navigate this issue, I made sure to write a detailed guide on how to use my calculator on the accompanying landing page.
- Some solutions estimate the price of setting up a software team rather than building a software solution. Unless you’ve worked with software engineering companies before or run one yourself, you probably don’t know the innards of software development, including the optimum composition of a software team and the roles within it. That’s why I focused on software features rather than developer responsibilities and implemented the blended rate modifier to simplify the calculations.
- Most calculators only give an estimate in exchange for a business email address. I’m a software engineer, not a marketer 🙂 I want to solve companies’ problems instead of bombarding them with emails promoting our services; should they need help, they’ll write to us anyway! That’s why my calculator does not collect any data — and does not require you to fill out any forms before getting your estimate. We only know that someone has landed on the software cost calculator landing page, ticked all the boxes, and received an estimate.

## How My Calculator Assesses the Cost of Custom Software Development

My calculator considers an application's target platform and expected features to produce accurate software cost estimates. Next, various modifiers are implemented to reduce or increase the price of custom software based on the project stage and industry-specific implications. In the final step, software development efforts, estimated in person-hours, are multiplied by the blended IT team rate.

To devise the assessment mechanism, I studied over 20 projects my company completed and a dozen projects from our partners’ portfolios. These projects ranged in size and complexity, from event-booking applications to custom smart home solutions. Some technologies and solutions, such as artificial intelligence and AR/VR, are deliberately missing from the calculator because I seldom build such solutions. Thus, the calculator mirrors my company’s core expertise, and I can vouch for the accuracy of its estimates.

_Here are the key cost factors the calculator takes into account:_

- **Target platforms.** An application built for a particular platform (iOS, Android, web, or a cross-platform solution based on Flutter) has a minimum viable feature set, totaling software development efforts to X person-hours. If we're building a multi-platform solution, we must multiply the hours by the number of target platforms.
- **Feature price.** Every application feature — for instance, the end-user or admin profiles — has a minimum time tag of Y person-hours. The efforts increase proportionally when you add subfeatures to enhance an app's functionality.
- **Modifiers.** Industries and software features have difficulty multipliers. For example, I increased the hour count by 20% for healthcare IT projects to address possible development issues, such as integrations with existing medical systems, compliance, etc. To calculate complexity modifiers, I divided the sum of the software features by the total hour count. A constant modifier adds project management and quality assurance numbers to the estimate. When an app's features and intended platforms have been assessed, the number is multiplied by 1.3, increasing the hour count by 30%. Lastly, there is the project stage modifier, which evaluates the cost of software development based on the product's readiness. If a user only wants to design the application's interface, the final estimate is multiplied by 0.16. For functional prototypes, the modifier is 0.25. The minimum viable product (MVP) version of a software solution containing just enough features to go to market has a modifier of 0.5-0.75. Finally, the development efforts in person-hours are multiplied by 1 for market-ready products.
- **Developer hourly rates.** The price of building a custom software solution depends on who's making it. Software engineer hourly rates differ greatly depending on a person's specialization, experience, and country of residence. According to [a recent survey by Accelerance](https://www.accelerance.com/2023-global-software-outsourcing-trends-and-rates-guide), these rates can range from as little as $25 per person-hour for mobile developers in South Asia to as much as $172/hour (and counting!) for senior software engineers based in North America. When developing my software cost calculator, I programmed it to multiply the final hour count by the blended rate of a software project team stationed in Eastern Europe, where my company operates. Currently, it fluctuates around $41.6 per person-hour.

Below you will find a formula that sums up the factors mentioned above to produce an estimate:


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xekdl3213ld4011dxpms.png)

_Let me write this out for you:_

- If a feature is not mobile-related and does not require implementation on multiple platforms, it will be marked as _featurePrice._
- _avgFeatureComplexityMult_ increases the estimate based on a project’s tech stack and target industry.
- _productStageMultiplier_ denotes the desired stage of the product — i.e., design assents, a prototype, MVP, or market-ready solution.
- The PM/QA hours are mandatory for all projects unless the client handles the management and quality assurance part. In this case, however, no developer can guarantee that bugs will not manifest themselves in the code. A little clarification here: some companies expect their vendor to produce bug-free code on the first try and genuinely wonder why they need quality assurance. Mature clients, on the contrary, have adequate expectations regarding the test code quality and early invest in QA to avoid dealing with bugs post-launch.

The question is, how accurate are these estimates?

> Considering my experience as a CTO and senior Android developer, the software cost calculator delivers on-point estimates for all simple projects and projects of medium complexity.
 
For more challenging endeavors involving innovative technologies, such as the Internet of Things, the calculator may lower the final estimate by 10-13%. In such cases, we revise the price after deciding on the solution's tech stack and feature set. Revisions are also needed if your IT system incorporates features and technologies omitted from the calculator, such as artificial intelligence and integrations with third-party services.

## How to Estimate Your Project Using My Software Cost Calculator

_A website visitor is required to fill in the information about the following characteristics of an application:_

- **Solution type.** This section allows users to select one of the six categories: the Internet of Things, eCommerce, Education, Travel, Education, or Other.
- **Project stage.** As I told you earlier, the project stage modifier increases or reduces the cost of software development based on a software product's readiness. The difference between the estimates for various product stages can also give a customer an idea of how much it could cost them to take their concept even further, enhancing the solution following its release.
- **Target platforms.** The current version of the calculator allows users to choose between the native mobile app development tech stack (iOS, Android), cross-platform apps built with Flutter, and web and tablet applications. I singled out the tablet version of mobile apps as a standalone category due to the heavy customization of user interfaces.
- **UI/UX design.** Based on the expected design asset complexity, the UI/UX modifier adds a certain amount of person-hours to the estimate. I've included the Animations feature in the list for clients looking to create smooth navigation transitions between an app's screens in functional prototypes. The estimate will be reduced if the user is willing to provide their own design assets.
- **User roles.** The software cost calculator contains a section listing the application's anticipated user roles. These range from end users to multi-level software solutions serving the needs of a company's staff, application managers, and customers.
- **Supported languages.** The software cost calculator will increase the estimate for multi-language websites and applications.
- **Login options.** Here, I opted for the three most-used login mechanisms — i.e., via a social media account, email address, or one-time password (OTP).
- **Customer support.** A prospect intending to keep in touch with their customers can choose one or several of the available customer support options, varying in complexity from a contact form to an integrated ticketing system.
- **Monetization strategy.** In this block, users can select between one-time purchases and subscriptions — or opt out of any monetization mechanisms.
- **Types of content.** I listed text, photos, videos, and audio files as the most common types of content available in software solutions while adding streaming capabilities as a separate feature. It is possible to add multiple options to the estimate.
- **Live chat and audio/video calls for customer support.** As part of the customer support functionality discussed earlier, live chats may allow multiple users to join the conversation and exchange files. The audio and video calls functionality are billed for separately.
- **Geolocation.** When creating the software calculator, I configured maps with pins and maps with routing as the primary geolocation options.
- **Event bookings.** The estimate will increase depending on whether your app will support the event booking functionality and who can perform it (e.g., admins or end users).
- **Customer engagement.** I chose push notifications and deep linking as the primary mechanisms for keeping users engaged.
- **Gratification and gratification.** The calculator only allows users to select between likes and ratings. Users may also add gamification features like progress bars and leadership boards.
- **Analytics.** The calculator offers to include basic or advanced analytics capabilities in the application’s feature set. Mind that we're not talking about AI-powered analytics here.
- **Compliance.** If a custom application needs to comply with certain regulations, such as HIPAA, GDPR, or PCI/DSS, our estimate is bound to increase.
- **Content management.** Finally, the software cost calculator asks users to clarify their content management needs, from basic content authoring capabilities to a proper CMS and the CMS plus data visualization combo.

**Summing It Up**

Hooray, we made it!

Now that the user has a ballpark estimate, they may adjust it by manually deleting or adding software features, specifying the product stage, etc.

While writing this article, I also filled out the form, selecting the characteristics of a custom HIPAA-compliant medical IoT product ready to be released to the market. The calculator gave me an estimate of 3390.4 person-hours, or $140,992 if multiplied by the blended team rate ($41.6).

Let's increase the estimate by 10%, allowing for possible discrepancies rooted in the project's type (IoT) and target industry (healthcare), and we'll get $150,000.

Is this a realistic price for a custom Internet of Things solution?

The cryo chamber software suite I referenced at the very beginning of the article helps our client manage connected cryo units installed at dozens of fitness centers and spa salons across the USA. While the project is still in development and [costs over $1,000,000 in its current form](https://expanice.com/article/cost-of-iot), two years ago, when the software solution exceeded the 3,000 person-hours mark, it possessed roughly the same functionality as the imaginary project I tried to estimate using the calculator.

Overall, I’m pleased with the result: I have successfully tested Flutter, reassuring myself of its robust cross-platform development capabilities, minimized the assessment work on my team’s part, and allowed our prospects to get realistic ballpark estimates of their software projects before reaching out to a software engineering company.

But since I may have all sorts of biases — after all, it’s me who wrote the code! — I encourage you to give the calculator a go and share their thoughts regarding its functionality and accuracy!

So, hit the comments section below! Your feedback is very much appreciated!

_**Disclaimer:** The article has been originally published on HackerNoon. [Click here](https://hackernoon.com/how-i-built-a-software-cost-calculator) to view the original content._