To in-house or to out-source, that is the question
Outsourcing is an effective way of providing a variety of services, particularly for a small or medium-sized IT department or corporation. At my company for example, clients access delayed stock data, U.S. and Canadian news, and other financial information via our website. To negotiate individual agreements with every exchange, as well as pay the fees associated with directly obtaining data from every exchange, would have proven to be extremely time-consuming and expensive. A cheaper solution was to buy the stock and news data off a licensed re-seller, who specializes in this arena. For similar costing reasons, we utilize an external, world leader in edge-technologies, to speed-up the delivery of video and audio feeds to our clients.
Proper research including background checks when choosing a vendor may mature into a mutually beneficial, long-term relationship with a valuable partner. This can result in perks like Beta product availability to your company, in advance of competitors, or the ability to request those specific features be incorporated into future product packages. There might even be free trials of other products by the same vendor. But like many good things, there is always the potential for problems.
Reality Bites or He Said, She Said...
Development ideas often originate from the business leaders within a company. Good business leaders will consult with their Information Technology department to determine the technical feasibility of the project. Business leaders are busy people, with restrictions on their time, and do not necessarily possess extensive technical knowledge. Vendors sometimes take advantage of this fact and focus on the positives of their product, making light of any technical or integration concerns. In contrast, in-house IT staff tend to be more critical, citing the technical difficulties or obstacles in the way of accomplishing the project when examining the overall feasibility of the project. IT staff may be able to articulate more clearly and vociferously the extent and complexity of the integration work required to mesh with current systems, since they are more familiar with the strengths and limitations of existing company applications. Unfortunately, business managers can interpret this realistic perspective as due to a lack of ability or knowledge on the part of the in-house staff, preferring to listen to the outsider who "tells them what they want to hear".
IT - (the) Ignored Technologists...
One financial house that I know of, learned the hard way that it would have been prudent to pay attention to the assessment of its own IT department before entering into a contract to purchase a customized version of a popular Contact Management Software package. The vendor extolled the versatility, user-friendliness and low-cost ($0.5 million) of this product to a credulous Research department. The IT department expressed concerns about the programming language used (Visual Basic), speed of execution of code and the potential for conflicts with existing systems. The Research department dismissed these as professional jealousy, incompetence or laziness to assist in integration of new software with existing systems. Sixteen months and $1.5 million later (the extra dollars was for patches and "workarounds existing systems"), problems with the software continued to occur. The research department that had been continually on the defensive whenever the software did not function correctly, finally acknowledged they were throwing away good money after bad. They had to concede that their in-house IT staff were right and to request that they build a replacement system. In less than two months, IT staff were able to design and build a replacement application, not only with functionality equal to that of the vendor's package, but with enhanced versatility and efficiency. The IT staff had always maintained that they could build the application, but their proposal had not been presented in as slick a manner as the vendor's sales presentations.
The trouble with five-cent cigars is that they cost a quarter...
Franklin Adams' observation aptly describes the predicament of companies who purchase a software package out-of-the-box, only to find that it needs to be customized to actually meet their needs. The cost of customization is usually in addition to the cost of the software, and can cost more than the package itself. The problem occurs, not just the financial industry, as in the example of the previous paragraph, but in all business sectors. A few months ago, a friend from my university days who works with the IT department of a chain of retail stores mentioned that his company had just purchased a program to automatically create marketing letters, en masse. The software cost $100,000, but the customization would cost "something extra". A month later, he told me that customization was being billed at $4,000/day with an estimated 60 days being required to "tweak" the software to the point of usability for the dept. The department had signed on the contract, without any clear arrangements about cost of customization.
Income Tax was a temporary measure too...
Relying on an outsider for development frequently means relying on them for maintenance or future changes. Many firms hire outsiders to build an application or fill a specific need, expecting that there would be a transfer of knowledge to in-house staff at the termination of the engagement. In theory this sounds wonderful, in practice, in-house staff can resent being forcibly trained by an outsider. As well, when the time comes, out-sourcers resist transferring their knowledge - not only to safeguard their own future job prospects but also so that the company which purchases their software is forced to hire them again to fix problems with the software. They are very aware that without that transfer of knowledge, the IT department is not always able to resolve the problem. Remember too, vendors and out-sourcers have more to gain by prolonging an engagement, particularly if their bill for servicing clients is based on the amount of time spent, rather than the amount of work completed
If this is an Emergency, press 1 to leave a voice message...
Outsourcing services and products means losing direct control over those systems. You and your company are at the mercy of the hosting company; this might mean they are not readily available in emergencies. In the best case scenario where the hosting company is available 24x7, there is still the delay in contacting and conveying the problem specifications. In addition, there can be delays when implementing code changes, as development timing is contingent on the availability and convenience of the coders at the hosting company
The decision on whether to rely on in-house staff or take the plunge into outsourcing a new undertaking is never easy. There is the risk that your IT staff does not possess sufficient time, resources or range of knowledge required. On the other hand, the consequences of outsourcing can be unpredictable. I have found the following tips to be helpful, when deciding whether to have internal staff complete a new project, or look for resources outside the company:
Resistance is Futile (pointy hair optional)...
Yeah, I know this sounds daft, but one of the techniques that I have found to be successful in nudging business heads in the right direction, is to behave like a marketing person. This is difficult for the average person, let alone the average coder. But do not worry, the change is not permanent, and usually will not result in long-term mental damage (unless you do this for days at a time J). If you have an in-house marketing department, then it might be helpful to consult them, in creating your presentation. Business leaders have limited time, and so try to tailor presentations to focus on a few, key points, rather than a lengthy discussion of the problem and potential solutions. Presentation software like Presentation (Corel), Power Point (Microsoft) or Presentation (Astound) as well as storyboards have the capacity to be very effective, since they convey large amounts of information in a relatively quick and easy fashion. (See http://www.dilbert.com for effectiveness of some of these strategies)
Half a loaf is better than none...
It is not an all-or-nothing situation. If the notion of outsourcing all of your IT products and services is too intimidating, try outsourcing components. Assess core competencies, identifying areas where in-house staff is particularly brilliant or cost-effective as well as areas where there are weaknesses or gaps in skill levels. Evaluate the risk factor tolerable for each component to be out-sourced, including a consideration of latency times in terms of development or emergency response times that could occur with utilizing outside services.If you decide to Out-source:
Comments from actual vendors: