Software development is challenging even in the best of circumstances. When your company is considering hiring an outside firm to do your development, it is incumbent upon you and your entire staff to make sure the project comes together without stumbling over obstacles that shouldn't have become problems in the first place.
Key to any technical endeavor is planning and expert analysis of where a project is headed, and how it is going to develop. While management of the process is important, planning for all the foreseeable contingencies is far more likely to clear the way for success.
The number of software projects that get halfway through development without even the beginnings of a plan are inexplicable. Programming a computer presents a business with all the problems of a major film production combined with all the problems of building a small spacecraft. No director or aerospace engineer would dream of starting work without a script or a set of blueprints, but for some reason, software developers do quite often.
Outsourcing a software development project to another company only amplifies the problems that are already present in highly technical development. Leaving aside the management issues, basic necessities like regular communication become a challenge when the project is over there instead of in the same building.
A design document helps mitigate these problems, because it describes in clear terms what is meant to be built. It answers questions that haven't been asked yet. It is the document that a total stranger can read and use to understand what is being built and how to build it without ever communicating with its author.
Almost all project management on software development encourages the use of milestones as the key metric for measuring both success and progress. The reason for this is simple. Any large scale project can be distilled into irreducible tasks. These tasks, when organized properly, can be used to determine whether or not that portion of the project functions and can also be used to mathematically determine how much of the project remains to complete.
This success/progress monitoring is at the heart of project management. When both sides of the metric are advancing at an adequate pace, it indicates the project is on track and it allows management to determine major milestones like alpha, beta and a gold master.
When outsourcing, the indispensable feature of a milestone is its accountability. The company retained to do the work must prove it has reached each milestone on time, on budget and with working components. When success, progress and an accountable milestone are combined, they produce results.
If a direct lender commissions an accounting system from an outside company, that system must be tested under a variety of circumstances and measured against specific criteria to determine if the system is functioning properly. Not only are there regulatory requirements, but the system must be proven reliable before the commissioning company can be expected to entrust its customers' finances to it.
A high-quality testing framework is crucial to the proper development of any software system, no matter how simple it might be. The good news is most testing can be conducted against the requirements set forth in the original design document and the results can be used to demonstrate compliance with the original milestone schedule.
This is the keystone to any project intended to be sent to another company for completion. Formal testing validates against both milestone and design, and produces proof the system is working as originally designed. These are the elements of a successful project.
Far too often, software development is outsourced in the interests of saving time or money or both. These interests sometimes overshadow the importance of working code and a clear, easily understood design. When companies take the time to do a good job, it usually turns out better for everyone involved.
This article is published as part of the IDG Contributor Network. Want to Join?