By using this site, you agree to our Privacy Policy and our Terms of Use. Close
Adinnieken said:

The other problem with this is you create a silo.  When you use customized software you develop a skilled worker, yes, but you also develop a worker with certain job security.  Again, not a bad thing, that is until they get promoted, fired, die, or leave the company for any number of reasons.  All of a sudden you now have someone who has never done anything with this software that has to maintain and support it.  Custom code is a necessity, but technology changes quickly and skill sets vary.  You could be lucky and have a developer that can breeze through unfamiliar code and be able to maintain and support it, if not optimize it.  However, you could also be unlucky enough to get someone who barely understands the code they're asked to maintain and support.  God forbid they need to optimize it or worse do so at the fundamental level of an OS.

I worked in a business that relied on custom code.  The belief that custom code is cheaper than a common consumer product is laughable.  It often is actually more expensive, and if you have to customize everything from the ground up, it becomes even more expensive.  You need standardized layers on which you put customized code.  You don't want every layer of your IT infrastructure to be customized requiring a long build-up to productivity.

We had a situation where I worked where we had to fix code for a bug that was resolved in the OS.  The code was only about 2 years old, but the programmer who wrote it was no longer with the company.  The source code, missing because at the time our code repository was a file share on a directory server that no longer existed.  The code had to be reversed engineered requiring a significant amount of time and resources all to resolve a bug that was fixed in the OS. 

Now imagine in that situation, you  have people routinely building OS components, as well as middleware components, as well as server-client software.  Imagine you have a fluid IT employment base, meaning employees routinely move out of the company taking their skills with them.  Now imagine after upgrading to the next Kernel revision of Linux because it closes some significant security holes, your entire company goes offline.  Who do you turn to to figure out the problem?  Everyone has developed their own error reporting in their code.  Some are awesome, some non-existent. 

If I have custom-code running on top of open source software, the only people I can turn to are my employees.  If I have custom code running on top of commercial software, I can call up the vendor and get an engineer on site within 24 hours who can pinpoint the problem himself or send it back to a team at the home office to do it.  It may cost the same amount of money in terms of employees and time, but in terms of getting my business back up and running it costs DEARLY less.

Again, working from experience, we had this very scenario play out during our back-to-school "season" requiring us to get two vendors on site working with us for four months to resolve problems within their products and our infrastructure.  Granted, they told us to do the very thing I said we needed to do, but I'm a peon no-nothing.  With the management that was in place at the time they would have been in a worse situation than without being able to rely on the vendors.  BTW...that wasn't due to "poor management" that was due to "CYA management".   No one wants to be responsible for making the wrong decision, so they all cover their own asses and rely on an outside vendor to make the tough choices for them.  

Open source may often be free, but it bears a much higher cost in the long-term than commercial software.  It's a myth that it's cheaper.

I would argue that it really depends on what open source software you're talking about ...

Switching from a commercial database (Oracle or MS SQL) to an open source database like Postgres would likely result in substantial savings, as would running your servers on an operating system like CentOS/Redhat or your desktops on Ubuntu, as long as you can "get away with it". Small start-ups often save a substantial amount of money due to not having to pay insane licensing fees for this software, and often have lower support costs, but large corporations and the government often take decades to make these kinds of changes due to legacy systems being built for particular databases or operating systems.

 

There is a second topic and that is readily available software vs. custom software, and it has been my experience that large organizations (corporations and governments) tend to be guilty of spending 10 to 100 times as much on custom software rather than using commercial or open source software packages that are readily available. I have been in several of these organizations where they have built their own buggy time tracking software that has 50% of the features of something they could have gotten for free because they wanted to develop this package internally because they believe their problems are "unique".  In almost all cases, it is better for a company to use this readily available software and to write an extension/plug-in if they truly have needs that are not being met by the software than to produce something truly custom.