When it comes to cost, everyone hates unpleasant surprises. However, in the world of software development, some vendors pitch low price estimates in the hope of securing the business.
This often results in a poor experience, with a subsequent awkward conversation between the vendor and the client. Normally it's too late. The project has started and the client is committed. They begrudgingly let the project continue and end up paying more than budgeted.
We prefer a different approach. We are proud of our track record of virtually NEVER exceeding the price estimate we provide to a client. In fact, we will sometimes agree to a fixed price, to ensure there are no unpleasant surprises.
Whereas other software developers may pitch low with their price estimates, we prefer to be conservative. We prefer to under-promise and overdeliver. This normally means our actual invoice is no more than (and often less) than our price estimate. So our clients are happy and want us back for their next project.
It's important that people are aware of the things beyond our control that can impact the timeline and cost for bespoke software development projects. Examples include:
Lack of clear direction from the client. For example, if we're integrating with an eLearning LMS and our client is undecided about what modules to include, which people/roles should undertake eLearning, or what progression is required between levels (E.g. level 1 in year one, level 2 in year two, etc). Normally we are able to use our own experience and make recommendations that guide our clients, but ultimately we must still rely on timely decisions from the client.
Unavailability of dependencies for our developers. For example, when we reach the agreed date for our team of developers and testers to perform the scheduled work and the client says ‘Sorry, we're running behind and don't have the promised material ready yet’.
Stop/start project management. For example, when a client is slow to reply, or drip-feeds decisions, assets or resources for a project over a period of time.
Scope creep. For example, when the client decides during development to fundamentally change key decisions or required functionality.
Availability of API documentation and environment. For example, when the software we’re integrating with provides incorrect credentials, inaccurate API documentation, or their dev environment isn't ready.
Reliability of development environment. For example, when our developers discover the API is not returning what it should, then we perform extensive debugging to discover the system we’re integrating with is down or has changed.
Responsiveness of integration partner. For example, how long does it take for the third party software provider to acknowledge, investigate and remedy legitimate issues that we discover with their software.
Quality of historic data. For example, we are often asked to import historic data from other systems, but sometimes the data is untidy, inconsistently formatted, poorly structured, or requires manual manipulation or transformation.
All of these examples can introduce unnecessary time and cost. Some are within the control of the client, whereas others may reside with a third party. We will always try to manage projects as tightly as possible, but since some factors that impact costs and timeline are beyond our control, we prefer to provide a price estimate that is conservative.
This means we may miss out on a project because we're perceived as the more expensive option or beyond the budget available at that point in time. However, our clients have come to trust that we reliably provide what they want. And there are no unpleasant surprises when they get our invoice.