In Software, You Get What You Pay For
Early in the lifecycle of any contracted software project is the estimate phase. The last step before the work really begins, the estimate is crucial for both the customer and the agency. As we are preparing an estimate, we are carefully considering how to stay competitive against other agencies while also minimizing the risk of exceeding the budget during the project. In the case of APAX, the number ultimately presented is the product of careful consideration by multiple members of our team. In each case, we explain the specifics of how we arrived at that figure, but I wanted to take a moment to discuss some factors you should be considering when comparing multiple proposals.
Going offshore can cost more in the long run.
Software development is a global industry by nature. Any potential project can be outsourced to an overseas development agency, usually at a fraction of the cost of having the work done domestically. However, a quick Google search can return countless horror stories of companies that outsourced their work to save a buck. In general, these regrets come from a combination of poor software and lack of availability.
Software is a significant investment. Whether a new startup or an experienced business is entering the digital world for the first time, it’s crucial to get your software right the first time. Programming done cheap is usually able to provide that price by cutting corners, and one of the corners cut is often industry standards. What this means for the client that if (and usually when) your outsourced software underperforms or breaks outright, it will be impossible for a new agency to navigate the code and find the bug. And if the bug can’t be fixed, you’re left back at square one with nonfunctional software and no return on the price you paid for it.
And sure, it might be easy to think you can reach out to the agency that built the program to fix any issues. But to my second point, that availability is often not dependable. There are obvious logistical issues, like the difference in working hours between a company in the US and one overseas. A language barrier can make it difficult to communicate needs clearly. None of these may disqualify the outsourcing agency at the start of the project, but when your software breaks and time is critical, clear and instant communication is essential.
Consider the work you’re not seeing.
The most exciting part of software development is demonstrating the work to the client. This is usually iterative, with each new feature being demoed and approved before work moves on to the next phase. As a client, this is the clearest indicator that progress is being made on your project. However, these demos may not reveal the full scope of work a responsible agency is doing for you. My example here is code reviews, a purely internal process that can be the difference between a quality end product and one that will need constant maintenance. And as a client, you may never even consider this huge difference-maker.
A code review is exactly what it sounds like. As work nears completion on a new feature or phase of construction, the code is submitted to peers for review. Coworkers work through the proposed code to identify places for improvement and potential risk areas. Once it is collectively approved, it is added to the project, and work moves on. This comes at the opportunity cost of more demonstrable work. It requires everyone to stop what they are individually working on to ensure the quality of another’s work.
While this lengthens the project timeline and increases the budget, it ensures that the program you are paying for is one that has gone through rigorous review. Having worked at an agency that didn’t follow code review best practices, I cannot emphasize enough how much of a benefit it is for the client for their agency to review at every opportunity. If I was contracted a software project, the first question I would ask a potential agency partner is about their code review policies. If they don’t answer confidently, I encourage you to reconsider them as a partner.
It’s always better to overestimate than underestimate.
One of our philosophies at APAX when working with a client is to “leave the campsite better than we found it,” meaning that our client should always be better off as a result of our relationship. This includes the estimate phase before the client has agreed to any work with us. We want to protect both ourselves and prospective clients from unanticipated costs, so we prepare our estimates cautiously and conservatively. We don’t add fluff to estimates, but instead, consider how long it could possibly take to complete a task before we attach a number to it.
The easy route would be to estimate the most optimistic scenario, exciting the client initially with a smaller perceived cost. But that would only encourage more rushed work to come in at that budget, and ultimately leave the client with a less-than-optimal piece of software. Alternatively, we could prolong the project to build quality software but frustrate the client by going over budget. By estimating conservatively, we create a working environment more conducive to a positive working relationship and leaving the campsite better than we found it.
Despite being one of the first steps in a project, the estimate lays the groundwork for a working relationship and is carefully considered by the development agency before it is presented. Though the final product may be reduced to a few simple numbers, the thinking that goes into an estimate is complex. Reading between the lines of an estimate will allow you to have a better idea of the quality of work you can expect from a potential agency partner. An estimate can tell you if the agency is likely to cut corners and deliver sub-optimal results, or if they will give you the quality and attention your project deserves.