As I often come across in my engagements at Perficient, there comes a juncture where the client must make a decision between whether to pay us to write a custom application or purchase software that satisfies some business requirement(s). Depending on who I am working with, the conversation typically goes one way or the other…adamantly. If I am with a developer, the consultant will go right into a discussion about how he/she will be able to satisfy the requirement (and sometimes attempts to elicit requirements right there). If I am with a business analyst or architect, the consultant will suggest several packaged software solutions that will satisfy the requirement.
The Triangle of Truth
When it comes to software development, there is an adage that states: you can have one or two of the following three attributes of your software solution, but not all three:
a. Quality
b. Speed
c. Robustness
If the client opts to have us write the application, that in and of itself, becomes a completely new project. Estimating the cost of application development is a science and sometimes a complex one. There are ways to keep a handle on costs, of course, and protocols and practices to keep it all in check. But no matter how you slice it, it will cost time and more money in the long run. The biggest things that worries me when the client opts to have us develop the solution is “Who will support the code after we are gone?” When systems get upgraded, will the code be upgradeable? I get uneasy especially around the time the platform is due for a rehaul.
It’s a much easier route if the client opts to have us give them demos and pricing for various packaged solutions. This route takes care of the code supportability. And sometimes…sometimes ends up being a less costly method.
There is certainly no one easy answer for all situation. It comes down to which points on the Triangle of Truth are the sharpest.
>When systems get upgraded, will the code be upgradeable?
> I get uneasy especially around the time the platform
>is due for a rehaul.
That is something that I think more people should think about. However, it also depends on the platform used. IBM is known for making Lotus Notes/Domino fully backwards compatible. In 1997 I built a custom system for my then employer. It was built in 3 weeks, right after I gave notice and told them I was going to move from Sweden to the US.
The system still runs today, using code written for Notes 4.5 or 4.6, currently running on Notes/Domino 8.5… They had someone make some little tweaks once or twice, buit the code is practically unchanged.
Of course, I doubt any code I wrote in say VB6 on Windows 98 would work today on 64-bit Windows 7… So you have to look at the track record for the company that delivers the tools or platform where the application runs.
I don’t know how well applications created with the first version of Sharepoint runs today on the latest version. Hopefully that platform is fully bacwards/forward compatible as well.