Some of you out there in the world are probably familiar with the terms Capitalizing and Expensing. In the world of software development, this expresses itself in these general terms: If you are building new software or new features that add value in existing software, you can capitalize the costs. If you are doing maintenance (fixing bugs, etc), then you expense the costs. They are also terms that you tend not to think about a lot other than how to report costs to the Accounting and Finance folks.
Here’s another aspect of Capital we don’t always think about. Physical assets that are Capital cost maintenance over time. If you buy an office building, it requires maintenance. If you buy a car, it requires maintenance. The bigger the thing, the more maintenance it requires over its lifetime. This is just as true with software.
The larger and complex a software project is, the more you may have in the following costs:
- Hardware: servers, desktops, network equipment, etc all cost money, must be maintained, and have to be replaced.
- Hosting: Hosting internally means costs within your data center- more servers, more cooling, more power, more floor space, more people.
- Code: Greater the size and complexity of the software, the higher the likelihood that you will have ongoing bugs that need to be fixed. Also, you will have real costs attached to updating for security fixes, changes to the Operating System, to your web server, to the database, etc. Also, some types of systems will require constant updates. This is particularly true for software that emulates business or legal processes and evaluations.
- Training: Every new piece of software requires documentation and training for your users. Adding features means revising training and updating documentation.
- Liability: Software stores data and has to handle data correctly. Security flaws, calculation errors, data mis-entry, and more are all real areas where you (or worse, your clients) can end up with the wrong data in hand and making bad decisions as a result or receiving private data they were not meant to see.
These are all real costs you have to consider when building a new piece of software for your company. Sure, you may be able to justify the build based on saved labor for the business, but what about when you add additional costs for maintaining it? Does the cost still balance?
Another point to consider is are you staffed (and can you afford to be staffed) to support the product. If you had to bring in consultants to build the software because your existing staff doesn’t have the bandwidth to build it, then you should tread carefully here. Make sure to measure that your existing staff has the bandwidth to support the new product after the consultants are gone.
The biggest reason to consider this, though, is to keep yourself in reality. Two of the biggest and most common problems in companies today are rising IT costs and shortages in IT resources. Failure to consider, plan for, and allocate for the amount of work necessary to support IT projects after the project itself is completed is one of the biggest culprits that can be blamed for these problems. Be sure you think through these post-development costs before you engage in new software development initiatives.