When to estimate a software project’s cost?

Here are several questions and answers regarding estimating custom software application projects with companies. This topic is something I have spent a lot of time thinking about over the past years. Keep in mind, the idea here is to start the conversation early about a software project.

Q: When should a software developer or company estimate the cost of the software?

A: As early as possible. Doing so sets expectations and allows the sales process to go forward with the company. And if the numbers are too high, that will be an early indication the company can’t afford a custom software solution. It allows both the developer and the company to move on, or to steer the conversation to a lower alternative solution.

Q: Will the estimates be accurate?

A: No, definitely not. They won’t be accurate until the developer can spend more digging into the project later on in the sales and discovery process, or the early stages of the custom software project.

Q: What happens if the developer under estimated at the beginning of the sales process and the final estimate in the proposal is higher?

A: The developer should be up front and tell the company they didn’t have a chance to dig into the project deeply until now, and this is the actual cost of the project. Hopefully the developer has business processes in place to prevent this from happening, of course.

Q: Can the developer avoid underestimating?

A: Yes, by going really high with their ballpark estimates…but reasonably high…or by doing an early discovery phase to define the problems to be solved with software, and confirm whether a custom software application is the right fit as the solution.


Typically in the initial conversations with a company the company will tell the developer generally what they want in a custom software solution (very high level, no details), and then ask, “So, how much is that going to cost?”

The developer obviously can’t give them an exact cost for a custom software project, right after the developer just heard the high level ideas about the project, and don’t know anything about the details. But if the developer has some experience in the area of custom software development he/she/they can at least take an educated guess.

But, be careful of the educated guess. The developer shouldn’t indicate, nor should the company assume that is definitely the final and total cost. The developer should make it absolutely clear that the educated guess in just that, a guess, that they haven’t had the chance to review the project in detail, etc. The developer has to be honest with with the prospective customer that they are willing to discuss numbers early, but everyone at the table needs to understand the numbers are very preliminary and will very possibly change up or down.

Being honest and upfront like this with a prospective customer can go a long way in establishing a good, trusting bond with them. If they see the developer isn’t afraid to discuss numbers, and they understand that they are very preliminary numbers, then there the conversation can be more open about whether the developer is a good potential fit for the company and the project.

This prevents everyone from spending otherwise wasted time trying to build a business relationship that, had anyone been paying attention to the signs, would have known it wouldn’t have worked out.

The #1 Key to Custom Software Project Success

The #1 key to the success of custom software projects, in my humble opinion, is open communication. If the developer and the customer aren’t openly communicating on any number of levels, the project will fail. The only question then is how severe will the failure be.

There are a few areas I think are extremely important for open communication:

  • Customer is completely open about their needs, requirements for the software, etc
  • Customer is completely open about their expectations for the project’s budget and schedule, and other areas of the project.
  • Developer openly communicates about his capability to do the project given his/her/their abilities and exist schedule of commitments
  • Developer openly communicates throughout the project about progress on the software application.

To address each briefly:

Customer open about needs – The customer needs to spend some time on their own working out thoughts on what they need the custom software to do, how it work work for them, what objectives the software will help them attain. The developer cannot understand what to create, and why it needs to be created without getting inside the head of the customer.

Customer open about expectations – The customer should let the developer know when they hope the application needs to be done for their business. And let the developer know the general budget. This will help the developer quickly determine and communicate back whether the customer’s expectations are realistic. If they aren’t, then the two can quickly work to adjust the requirements to fit the schedule and budget, or vice versa.

Developer open about capabilities – Is the developer too busy to realistically take on the project? Does the developer have the experience to create a site with AJAX when they’ve only ever done desktop applications? If the developer can’t do the project for whatever reason, they are doing neither the customer nor themselves any good.

Developer communicates progress – When the developer creates a plan for milestones, or at least status reports and shows evidence of the progress in the project, then trust is built up with the customer. That will make the customer happy. And we all want happy customers.

These items are not in any specific order. Nor are they new ideas. I will admit that they are fairly broad statements.

Regardless, they are areas where the customer and the custom software developer need to talk with each other, be open with each other. If it doesn’t happen one party will misunderstand the other party and it’ll all go south.

I know this from experience watching other projects, and from painful mistakes I’ve made. But life is much better now that I don’t make those mistakes anymore. We also have so much more business now because customers trust us and refer us to other potential customers. So, open communication makes everyone happy.

When is custom software the next step? The answer

In the last post I was talking about when custom software might be the next step in the progression of using software to track and report on data about one’s business. To continue…

That next level is a software application which uses a database to store the data behind the scenes. That software will display forms to enter data, have buttons to run automated processes, have reports to pull data together from various places, all enabling you to enter, edit, and view reports on your data pretty easily…especially compared to the Excel scenario.

The software solution can come in two basic forms:

  1. Off the shelf (OTS) software
  2. Custom software

Off the shelf software can solve the issues of many businesses. QuickBooks is a great example of this. It has a place to work with much of the data discussed above.

But if your business is a little bit different than what QuickBooks allows you to handle you either suffer through those differences by doing some things in Excel again along with QuickBooks (which is going back to a cumbersome scenario), or you have a custom software application written.

I’d venture to guess that a fair many companies find that QuickBooks or some other off the shelf application doesn’t work exactly the way they want. They’ll often consider custom software. Custom software is often more expensive than off the shelf software, but it can also save users lot’s of time, prevent many mistakes, provide more useful reports on data than otherwise possible, and thereby enable the business owners to save and make a lot more money than otherwise possible.

So if you find yourself with too many Excel files, you might want to give serious consideration to an off the shelf solution, or creating a custom software solution…which is, of course, what we do day-in and day-out.

When is custom software the next step? After Excel?

When is a custom software application the next appropriate step after the current solution you’re using to run your department or business?

This is a question I’m asked frequently. I have also seen this situation quite frequently as well. It comes from people who are trying to run their business with tools that were easy to setup, where the business was small, there weren’t that many transactions to handle and record, and the structure of the business processes were fairly fluid.

I have seen many people start or run a business which the conditions above using a set of Excel files. One Excel file will have multiple sheets, one for each customer and the products they’ve ordered; or various Excel files which are separate invoices to a customer, where the invoices are organize by customer in customer folders; some files will list the products you sell, the lists of leads to call, the quotes send out to customers, the calls made to prospective customers with call dates and notes, etc.

It is difficult to get all of this to work. When you create a quote, it’d be nice to pull the list of products for the quote from a list of products you sell. When you make calls about the quote it’d be nice if you could record those calls about that quote. When the order becomes an invoice it’d be nice to quickly change the order form to say “Invoice”, create an invoice number, set the terms and due date, and add that report to the accounts receivable aging report automatically without doing more than clicking a single button.

But if you’re not an Excel VBA programmer or software developer it’s difficult to make all of those Excel files to work.

That’s where it is often necessary to take it to the next level. I’ll get into that next level in the next post.