I think most people who have been in the IT industry for an average amount of time can agree with my perception that for the most part, the consulting industry is garbage. Consultants are expensive, usually on par or worse than your full time employees, and for the most part are willing to bend a client over the table if the opportunity arises. Here's what I perceive as the problems with the mainstream consulting industry and my thoughts on how to make things better.
Problem 1: Consultants don't have a large stake in your success.
One of the major problems with consultants is that they really don't have a large stake in the success of your project. They get paid whether or not the end result of the project is successful, and short of having their contract terminated pay almost no penalty. Hiring companies rarely check with your past project performance, and consultants regularily cover up assignments that didn't turn out all that well.
At the end of the day, if a project outright fails, the consultant moves on to the next gig relatively unscathed. It's not like in other fields like tradeskills where there are documented processes for complaining and a strong in-industry certification and review process. It's not like you can lose your developer license for doing shoddy work. You just need to locate another gullible employer willing to shell out a rate for you. To increase stakes in performance, I strongly believe that consultants should be offered incentives just like regular employees should be. If project deadlines and quality are met successfully and your FTEs get a cash bonus, give the consultant a bonus as well. Good consultants, like good employees are a relatively rare find and should be rewarded and incentivized.
Problem 2: Vague Scope of Work / Lack of penalties for non-performance
In addition, most contracts specify hourly or project rates, but rarely impose penalties for non performance or milestones. Corporate managers who are doing due diligence with hiring a contractor or firm must be careful to set explicit goals and milestones and demand monetary compensation if those milestones and goals are not achieved. Would you pay full price to a construction contractor who only finished half the job? You shouldn't pay full price to a contract worker who does the same. To be fair to contractors, however, this requires having very explicit goals and milestones, if you can't define these, maybe you should re-evaluate the need for a contract worker.
Problem 3: The old Bait and Switch
Bait and switch tactics are also fairly common with large consulting firms. With these firms the buyer is buying the services of the entire firm usually at standard hourly rates based on "duties". This means you'll agree to $105/hr for "DBA Work" and $95 for "General Development" etc etc etc. The reason I refer to this as a bait and switch is usually during the sale process the salesperson will bring out resumes and sometimes even bring technical workers with them who represent the best the firm has to offer. However, without the contract specifying who is actually doing the work, the client falls victim to the rather shady practice of the consulting company hiring inexperienced, desparate, and low ball employees so that the rate they're paying for the labor is much lower than what they are actually charging you. Just because you're paying $105/hr for "DBA Work" doesn't mean the person at the consulting firm doing the work is an $80k/yr dba with 10 years experience. You'll often find some kid fresh out of college, or worst case, an offshore worker doing the work without your knowledge.
Lesson to be learned? Demand to know who is doing what, and at minimum review their resume. Preferredly you should do a technical interview with any consultant who will be doing any work for your organization. Don't just trust that the consulting firm has your best interests in mind, like any other business, they exist to make money at as high a margin as their customers will put up with.
In Conclusion
Remember, you are paying a premium any time you hire a contract worker. The purpose of these workers is to improve your organization, not harm it. Contract workers are much less cost effective than your full time employees and it's very important that you ensure that you are getting value for your money. At the end of the day, a contract worker/firm exists to serve you, and they should serve you on your terms. With diligence, intelligence, and fairness you can ensure that not only does your project state improve, but the contract worker is clear on their goals and motivations and is able to supply you with outstanding service at a fair price.