A software development relationship is unique in many ways, not the least of which is the level of detail and mutual trust that is required very early on. The average customer may not be technical experts or experienced developers, and just like someone who may not be savvy in law who speaks with attorney, the developer is likely to have a deeper understanding of what might be involved in your project than the customer. And more importantly, they bring a deeper understanding of all the hidden things that can drive up project costs and budgets.
And so emerges an interesting paradox in the development process – to accurately assess what is involved in a software project, how all the moving parts fit together, what features are critical, how long it will take, and what the cost is, a comprehensive up front and early stage engagement is typically required. This engagement is in reality a consulting engagement, and for a software project to be done correctly with an outside firm, this is how it’s supposed to be. This process provides the best odds for project success, minimizes cost overruns, and avoids conflict as everyone works early on to get on the same page before the development work commences.
We live in a time where information and data are delivered to us at rapid speeds. We have immediate access to Internet searches, articles, databases, and content. We’re trained to seek, expect, and receive fast answers. When prospective clients contact us, the conversation usually involves a fairly general overview of their project, and the inevitable questions: How much will it cost? How long will it take?
The real question that we really need to explore with them is this: What’s really involved in figuring out timelines and costs for a project? The honest answer that experienced, reputable software developers should tell you is this: That answer something that can be arrived at quickly, and to arrive at that answer, time, money, and effort is invested. If someone can hear a verbal description of a project (especially one that isn’t a clone of something already on the market) and respond quickly with cost and time estimates–or even a quote–in our experience they’re just making it up. And made-up costs and timelines equal big trouble for everyone in the long haul.
A software consulting relationship is designed to dive into these questions and appropriately explore them early on, with the developer and the client working hand-in-hand. Rough concepts are explored, evolved, and refined. Ideas and project plans are developed. Research is done to figure out what development tools and paths will be needed. Visualization documents (wireframes) are created, in conjunction with–and approved by–the client, and these are used to guide the look and feel of the solution. Technical requirements are written, as “blueprints” to guide the development stage. Budgets are discussed, to find out if the project needs to stay within a certain budget, and what the best possible end product is that can be delivered for that budget. Once all this happens, a clearer picture begins to emerge and all parties can align expectations as development commences.
Typically this early stage consulting engagement is a 30-45 day process, and one that involves higher-level team members who collaborate and contribute to the process together. Without this mutual investment, estimates are worthless, and frustration inevitably arises. We see clients like this all the time – folks that took the low-cost / quick quote method, only to find the project never being delivered, or the developer vanishing with their money after the project timelines and expense spiral out of control. The best software developers start off as consultants, and engage their clients in this manner early on. These are the seeds of true partnerships, and development relationships should always be a true partnership. Whoever you work with, take the time to plan and explore appropriately before rushing into development. You’ll save a fortune in the long haul.