Say ‘custom software development’ to a small business owner, and you are likely to receive a look of dread and horror. Visions of really expensive software solutions taking twice as long to implement immediately come to mind, accompanied by many hair-pulling meetings with programmers explaining that ‘you didn’t specify that functionality.’
To be fair to the programmers, there are many excellent developers out there who take the time to craft a great, cost-effective solution. Unfortunately, there are many more who either can’t relate, or can’t understand the fundamental business of the client they are working for.
Years ago, I engaged a large programming group to build a sophisticated stock market analysis database. After seeing no results for three months, the development team was inexplicably changed, and I was suddenly working with three people who didn’t know the difference between a stock and a bond. Needless to say, the results were never satisfactory, and their work eventually had to be completely redone.
The responsibility for these types of failures does go both ways, but the hard truth is that very very few small businesses have the right experience to speak the language of programmers. Creating a detailed specifications document is not trivial, requiring at least a base of knowledge of the limitations of the software and hardware that will be part of the final solution.
A good spec document also requires someone on staff to think through the business process behind the custom development. If you are trying to build a program that dispatches pick-up and delivery notices to your fleet of drivers, you need to know how that program is going to impact all your existing staff. How does a missed delivery get communicated back to the dispatcher? What happens if a customer cancels a pick-up? Without laying out the existing process clearly, it is easy to lose sight of the business objective of the project. (I’ll write more about defining business objectives in a later post).
The encouraging news is that software development has progressed significantly over the last 10 years. New development tools have dramatically cut down on the time and effort it takes to code an application, and the rise of applications delivered through your Internet browser has cut down the need for in-house servers and specialized hardware (and the prerequisite IT contractor to maintain it).
Software development can now take place as easily next door as across the country, allowing distributed teams of experts to contribute to a development problem. Access to a far broader pool of programming talent allows project managers to find the right combination of skills and experience for a job. Whatever your idea may be, odds are that someone (or in fact, many people) have already worked to develop something similar. Finding those people is the one of the essential steps to ensuring a successful outcome to a custom development project.
Tinybriefcase recently worked with a client who wanted to build a iPhone application specifically for her contracting business. The application would display key information about the job site, and then capture pictures of completed work as it happened. Any unexpected problems could also be recorded and shown to the client immediately via email. The solution has dramatically reduced project delays, and the contractor was able to recover her modest investment in the custom application and hardware in less than a month.
One of the keys to success of this project was understanding the process the client was trying to improve through the iPhone application. By sitting down and walking through the exact steps that were involved in organizing her job site information, we could clearly lay out how the proposed solution would fit into the contractor’s work flow. We also identified which steps in the process were most critical, and focused the solution on addressing those needs. By keeping the application centered on a handful of key features, we were able to keep the project on-time and on-budget.
In future posts, we’ll talk about how to think about your business processes to identify which activities add the most value, and how to automate those activities using some surprisingly simple tools.