Now -- just to try and put me back into a few good books -- not all consultants or their companies are quite that mercenary. A lot of consultants will give you good advice even if it means they won’t get any future work out of you.
I was recently speaking to Microsoft, and I believe its staff when they tell me that this is their view – they’d rather help than profit. They profit enough from everyone using their desktop software, and believe that there are enough cases where telling the truth provides more work for them to pay for the ones where it doesn’t. Some other consultancies work like this, some don’t. Generally it’s difficult to tell which is which.
One good strategy is to ensure that your consultant isn’t going to profit further from the advice they’re giving you. One way to do this is to remember that a consultant’s job is to provide advice, not execute it. Once you have the advice, dismiss the consultant. If you fall down on this then you may be taken advantage of.
Perhaps the best strategy to avoid this is to consult with your own staff. You hire a consultant to provide advice in an area in which you don’t have sufficient knowledge to speak expertly. Are you absolutely sure that none of your staff have the necessary expertise? I would only "assume" that my staff couldn’t help if I had no respect for them.
Consultants have many dishonest tricks to generate more revenue from you. One example is the introduction of a proprietary development framework. If you’ve got one of these, then I’m sorry, but you’ve been ripped off. And if you were the person who bought it, then you should fall on your sword immediately. You’re far too stupid to be allowed to continue in your current job, and you should consider taking up basket-weaving as a fulltime profession.
First, a proprietary framework is understood only by the people who wrote it in the first place. This means that even though you own the intellectual property and source code for all the applications developed with it, it’s totally valueless because you can’t do a thing with it. Secondly, these things are, invariably, total crap, leading to incredibly high development times, huge amounts of defects and an almost total lack of flexibility.
Lastly, proprietary frameworks effectively freeze technology at the time when they were developed. Just try upgrading part of the framework and you’ll see the issues here. A common example is trying to move from Java SDK1.3 to 1.4 – a proprietary framework can make this nearly impossible.
Note that I’m talking about proprietary frameworks: those effectively owned by the consultancy giving you advice. In the Java world there are a few popular open source frameworks that are great, because they bypass all of the negative issues associated with proprietary solutions through being open source, and by being used and improved by thousands of companies globally. Struts is one such example.
Another dishonest strategy is trying to tell you that one technology is vastly superior to another. Most of the time, this is untrue. I’m a Java architect, consultant and tutor, and I really like the Java platform. However, now that Microsoft has released .Net I can see that there is finally some competition in my domain of expertise – the enterprise space. I can no longer tell a client with surety that J2EE is the correct choice, because .Net is apparently so strong in this area. It has to be; it’s a new entrant and has a lot of ground to make up.
This, of course, can cause further problems when dealing with consultants. What happens when you hire two from different backgrounds (which is always a good idea) and get two different opinions? If you had the ability to determine which is best, you wouldn’t have needed the consultants in the first place. How do you proceed?
Personally, I’d go with the most rational proposal. In the case of J2EE and .Net I think the most rational currently available to us is a hybrid platform. Get the best of both worlds. They can communicate with each other and are based on the same high-level architecture, so why not. Why would you want to replace the strengths of one with the weaknesses of the other?
However, this column isn’t about competing enterprise platforms; it’s about consultancies. If you’re using software then you need external advice. Whether it’s advice on the best word processor to use from the guy behind the desk at Quay Computers, or advice on the choice of technology for your enterprise architecture for the next decade from IBM and Microsoft, you need advice. The industry is too large for each of us to know everything, and you do need to know everything to be really successful – information is the lifeblood of industry these days.
When you need advice remember these tips and hopefully you’ll not embarrass yourself too much. First, ask your employees; second, ask two consultants; third, be aware of dishonest claims from your consultants, and if they are dishonest fire them immediately. Finally, don’t confuse consultancy with outsourcing; they’re totally different and work on different rules of engagement.
It’s important to remember that I’m talking about consultants. Don’t confuse these with salesmen. Their job is to sell you things whether you need it or not. Never let a salesman on to your premises until after you’ve gathered intelligence and already made your decision. You bring in a salesman purely to negotiate a price.
Before you jump on your email program and flame me – I realise that this article may appear to be attacking big consultancies but it’s not meant to be – like everything in the world things are grey, not black and white. I’ve worked for and with enough big consultancies to know that. I’m just trying to provide a perspective which some may find useful (though I'll probably never be asked to work with a big consultancy ever again).