And of course, there are always those who think their cause is so just that you will gladly work for less just to get to work with them. I even had a couple of people try to convince me that it would help me out if I did work for them for free because it would help me get noticed. One even went so far as to say that my work would be more credible if I didn’t do it for money. The person who told me that is employed by the company full-time and is well payed for it so draw your own conclusions.
However, simply charging more is no guarantee that the person truly knows what they are doing any more than charging less means that they don’t know. Indeed, I see quite a few people out there that grossly undervalue themselves. So can you find a good consultant for cheap? Sure. But unless you know how to tell a good consultant from a good talker, the odds of finding a really good cheap consultant is stacked against you. I’d like to share one such story that involved me.
Disclaimer: I do not currently offer consulting services, but I did in the past.
That time they chose a cheaper consultant to fix their corruption
I often help people out on forums answering questions, giving advice, etc. The usual stuff that most of us who are active in the SQL community do. One forum poster was asking about how to fix a corrupt database. There were no SQL Server people at his company, but the application they use is giving an error stating that the database is corrupt. We walked him through the process of running DBCC CHECKDB on the database so we could find out some details on the corruption. They of course had no backups from which they could restore the database.
CHECKDB found no issues in the database, but the application kept reporting that the database was corrupt. He felt it was time that he got the company to pay for a consultant to come fix it. Someone else participating in the thread recommended that they hire me. The original poster sent me a private message asking for my rates. I told him my rates, and said that I would check the database for free and give them an estimate of what I think would be require to fix it so they would have an idea of the total cost before they commit to anything.
The next day, he said that they found a consultant in their area that was a lot cheaper. I recommended that he first make sure the person is experienced with dealing with corruption because doing the wrong thing can be worse than doing nothing some times. He assured me that the other consultant claimed to know what to do.
Fast forward to about a week later, and the person contacts me again. They consultant tried running CHECKDB with repair and the application still reported that the database was corrupt. So he then spent 40 hours exporting all of the data from the database, dropped and recreated every table, and re-imported all of the data. And you can probably guess what happened next … if you guessed “the application reported corruption”, you can call yourself a winner. The consultant took his check for 40 hours of work and gave up.
Here’s a key caveat to what I charged as a consultant. I always stated that if the problem was beyond my ability to fix, they owed me nothing. I did the job successfully or I did not get paid. If I had spent 40 hours trying to fix it, I would have told them that they owed me nothing. That was written into my standard contract.
After telling me about how much money they spent on the “cheaper consultant” with no results, he asked me if I would “help them out this one time for free because they had already spent their entire budget for fixing the issue”.
I told him the same thing I told him before. I would look at the database and give them an estimate of what I thinks it would take to fix it.
I logged in to his server and ran CHECKDB myself on the database. No corruption. I set up a SQL trace and had him reproduce the error in the application. I identified the query that was failing and causing the application to report the database as corrupt. I ran the query manually, and I got an error.
Msg 208, Level 16, State 1, Procedure <View Name>, Line 12 Invalid object name 'dbo.<table Name>'.
It was trying to query a view that had a table in its definition that no longer existed. Total time spent was about 15 minutes. I told him to either remove the table from the view definition or recreate the missing table. He removed the table from the view and reported back that everything was working. No corruption, just bad application error messages. Turns out that application reports database corruption anytime it gets an error that it doesn’t explicitly check for.
Moral of the Story
The moral of this story is that simply picking a consultant because he or she is cheaper often costs more in the long run. Before you hire that cheap consultant, ask yourself if you can really afford the potential cost if it doesn’t end well. This is an extreme story where the cheap consultant spent 160 times as many hours and yielded no results, but how much cheaper is a cheap consultant? If they charge 1/4 the price but take 4 times as long and their solution isn’t as good, you’ve paid the same price for lesser work.