What It’s Like to Work for a Bad Contracting Company

Last time we met, I finished up by talking about all of the crazy work involved in pairing the right consultant/contractor with the right client project.

In my line of work, I get to see a whole lot of SQL Server projects – both good and bad – and work with the teams involved in building them. More often than not, I see contracting companies who have taken some disturbing shortcuts with horrifying results.

See, bad contracting companies have a huge sales force that goes out and asks customers, “Hey, what problems are you having? Sure, we can solve those. Just sign here.” They make impossible promises about their – well, YOUR – capabilities and timelines.

If you fail at the technical task, the salespeople will blame you.

And they’ll put another contractor in in your place in an effort to continue harvesting commission.

PowerBI got me like

The larger the company, the more barriers come between the technical delivery people and the salespeople. You just get thrown into crappy situations with no chance of success. Classic conversation:

Salesperson: “Go to Acme Anvils on Monday and implement PowerBI in two weeks.”

Geek: “But I’ve never used PowerBI.”

Salesperson: “You sure as hell better not tell them that, because I sold you as a PowerBI expert.”

So the geek reads blogs and watches videos all weekend, then shows up on Monday to find a client in an absolute mess. The real problem isn’t BI – the real problem is that they’ve got a mainframe, a SQL Server database, and a bunch of sales data stored in Access and Excel files. She phones home for help:

Geek: “Wait – this client isn’t anywhere near ready to do PowerBI.”

Salesperson: “OK, tell them what they need to do to make it work.”

Geek: “I don’t know how this could possibly work. Is there someone I can talk to about this?”

Salesperson: “We don’t have anybody else available. I can’t take you off this project – we don’t have any other work for you. You don’t want to end up on the bench again, do you?”

Geek: “…”

Salesperson: “So get started. Do whatever needs to be done to cross the finish line with their first BI Power thingy. I’ve got a bunch of other prospects who will want you to do this after the first one succeeds, and there’s a $10k bonus in it for you.”

So the geek works late every day, building a duct-taped ETL process to shuffle data around between different systems. Nobody at the client has any idea what’s going on, and the geek knows this whole thing will collapse as soon as she leaves.

But they manage to put together enough smoke and mirrors that it looks good long enough for the management stakeholders to sign off.

The geek leaves for a month, and then gets a call from the salesperson.

Salesperson: “Great news! Acme Anvils loved you, and they’re putting you on a long term contract.”

Geek: “Wait, that place was a hole, a total mess, and – “

Salesperson: “I know! They said the whole implementation collapsed after you left, and they need you back to make it a success. They want you to repair it, then expand it to also bring in six more data sources.”

Geek: “I’d rather stick a fork in my – “

Salesperson: “It gets even better. They’ll let you telecommute for one day a week!”

Not just contracting companies – some consulting companies do this, too. I’m fortunate to have never worked for one of those types of companies, but I’ve seen the impact on those who have. It isn’t pretty.

This is a really bad way to do business. You’ll end up with dissatisfied customers and disgruntled, stressed-out employees.

Yes, this sounds like how some of the lesser database consultancies in the UK operate, except for the part about the bonus. Not a good thing to sign up for unless you want to pretend to be an expert on Cassandra, SQL Server, Hadoop, SharePoint, MySQL, the whole MS BI stack, and whatever else the consultancy is trying to sell services on that week.

UK perspective here – as a contractor I work for agencies who pair up projects with contractors. So your comments really resonated!

The model here is a bit different though – instead of contracting / consulting companies, it’ll be recruitment agents with zero technical knowledge. Quite often the agent will go to some lengths to sell the gig without necessarily knowing or communicating very much. So I’ll land and find 2000/2005 in production, or no DR policy, or unlicensed software, or on one memorable occasion being told ‘you’re not here to do SQL, here’s an ancient DB2 mainframe application, you’re on data input.’ On another occasion (as a SQL DBA), I was unloading vans of hardware and helping the Cisco guy rack up for two days 🙂

This is exactly the situation I’m in right now but it’s not a Microsoft project. It’s on a popular Big Data open source platform (I’ll leave it a little anonymous but it’s like hadoop, spark, flink, kafka, etc) and they needed integration pipelines for d-o-z-e-n-s of entities actually coded within 6 weeks! So the plan was architecture for 1 week and subsequent 5 weeks broken into two week sprints with a buffer of a week. The sourcing team knew that no one had real experience with this platform. Myself, the other developer, and the architect all have little to no experience with this specific platform, but have experience with other platforms. Just a note, similar work I have done at other clients – probably 4 weeks for the first entity alone would be aggressive. So everyone was in a position to fail, but I thought it everything goes right maybe we can make magic. However, the architect wasn’t concerned with the delivery because he only had hours for 3 weeks so make it even worse, the architect dragged on simple conversations about file sizes that had little impact on the solution. Because he had never developed or architected this platform, he literally gave real zero insight to the platform and so the development didn’t begin until the end of week 4! After working with the platform for a week, I could see that all of the architect’s concerns were from a simple misunderstanding of the platform. Fortunately for the architect, the client also was not ready to contribute their own piece of the design so that was leveraged to drag on higher level architecture discussions without having to answer any questions related to expertise. But, the architect knew he would be gone and didn’t mind building huge pressure on the development team. The reason the architect wasn’t exposed is two fold – 1. The client did some internal work that was really good before we started and could build off and 2.The delivery management team did a good job managing the relationship before we started. So the client didn’t really grill the architect and expose him for his lack of expertise. Eventually, an actual SME was brought in for one day and provided a simple, workable design within hours. So of course the pressure just built – finally after having maybe two days of development time I needed to demo something and the client actually complained “but wait… we are just leveraging the code we already wrote mostly”. I’m like well wtf planet are we on? So I probably slept 10 hours for the entire last two weeks (20 total hours, I’m not kidding), but at least I can leverage the client’s internal work, and the delivery management team is totally confused about me billing over time. No seems to know how long things actually take to CODE and TEST. This is the most jacked up “sell, sell, sell” project I’ve ever been on.