When software developers sit down to plan out a new project, they are increasingly asked to be acutely sensitive to the return on investment of that project. How can the cost to benefit ratio of the project be minimized? And in choosing technology for implementing their project, developers must balance four main cost factors that affect ROI: ease of use of the application, ease of operations, ease of deployment and ongoing maintenance, and ease of initial development. Based on the total cost associated with each of those factors, they should be assigned in a specific order of priority.
- Ease of use: The usability of an application affects the bottom line of a company every day, and that effect is multiplied by the number of users the application has. Studies show that poor software usability can double the amount of time employees need to complete common tasks, and that adds up to tens of millions of dollars of lost productivity per year for larger corporations. For mission-critical apps, where not only lost productivity but user error can severely impact the bottom line, those numbers can be much larger.
- Ease of operations and administration: The costs of operating a software application -- how many servers are required, the network bandwidth consumption, and whether special administrative skills are needed -- affect the cost of the application on an ongoing basis and can also scale with the number of users.
- Ease of deployment and maintenance: The costs associated with the deployment and maintenance of applications affect a company's bottom line on an occasional but usually repeated and perhaps regular basis. These costs are incurred whenever an application needs to be deployed to new users, upgraded with new features, and have bugs fixed.
- Ease of initial development: The costs associated with the initial development of a new application affect the bottom line of a company only once per app, and they scale with the number of developers involved, which for the vast majority of applications is far less than the number of users of the application.
Many companies fall into the trap of prioritizing these factors in precisely the opposite way for the simple reason that they encounter each them in that reversed order. Since the first task a company has to face is the initial development of the application, most attention is given to minimizing costs associated with it. Then it's on to deployment and maintenance and the operations. Finally, ease of use is far too often simply an afterthought.
The temptations of the immediate gratification of fast initial development can be so strong, in fact, that companies will sometimes lower overall ROI in an effort to remove up-front development costs.
One common trap is to try to get away with no development and shoehorn applications into places they were not meant to go. Moving deployed fat clients into the corporate portal is one simple example. Instead of rewriting the presentation layer (a one-time cost), many companies add significant, ongoing operational costs to those apps by using terminal services.
And although many of rapid application development (RAD) systems let programmers quickly put together a great-looking but simple application, they are ironically difficult and time-consuming if you need to create a sophisticated application thanks to an inherent lack of flexibility. As the saying goes, if you want to get to the moon, climbing a tree gets you going in the right direction, but building a rocket is probably a better approach. A good implementation technology will enable rapid prototyping but won't do so at the expense of production version development.
Philip Brittan has been writing software and running software companies for more than 15 years. He grew up on a ranch in Montana and has a degree in Computer Science from Harvard University. He is currently chairman of Droplets, Inc., (www.droplets.com) which he founded. Previously, he founded and ran software development firm Spheresoft, Inc., and before that he was lead developer and CEO of financial software firm Astrogamma.