The Abysmal State of Contract Software Development

5 min read Original article ↗

The whole point of working a contract gig, instead of the traditional salaried job, was that you made a choice to trade stability for flexibility and short-term financial gain. The flexibility meant that, on paper, you could work multiple contracts, if you wanted. Unfortunately, this isn’t really true anymore, as companies hire large groups of contractors who aren’t paid benefits and can be let go with a lot less hassle, while also giving them less money than full-time employees.

I’d know. I was one of them, several times.

Aside from the stuff I already mentioned, there’s some other key problems with staffing companies that are making it so contractors really get the short end of the stick in every way possible.

Before I get further into the problems with modern contract software development, I’d like to mention that one big upside of contracting is the contract-to-hire arrangement. It’s when you work a short contract period, and then the client company (in my case, Chase Bank) decides if they want to bring you on as a full-time employee, which they did for me. I am vocal about people staying far away from working for Chase, but that’s a separate issue, and i often encouraged people in the past to go contract-to-hire to get their foot in the door as a software engineer.

Worse Pay and Benefits Than Full-Time Employees

I’m going to emphasize this point again, since it really rubs me the wrong way that people who are sacrificing the stability of a salary are also getting paid less. A contractor can still get some kinds of employee benefits through their staffing company, but these tend to be a lot worse than what the client themselves would provide, and on top of that, you’re still making less than FTEs, even if you waive those employee benefits.

Oh, and you don’t get paid time off at all. If you’re sick or otherwise need a day off, you just don’t get paid. This would be understandable if all the other issues I talked about didn’t exist, but as it is, it’s kind of just more salt in the wound.

Miscommunication About Roles Is The Norm

A big way in which contractors are set up to fail is there is often a severe disparity between what the contractor is told they will be doing, and the actual work they end up being assigned. In one extreme case, I interviewed for, and was offered a backend role in Java and Spring Boot, with a little React and JavaScript. What actually happened was that I barely got to write or maintain any Java code, and was expected to almost exclusively write React. The other contractor and I also had to fix the broken Jest tests, extremely sluggish Webpack configuration, and snapshot tests we inherited from another team.

After two months, we were both let go, citing completely made up and unsubstantiated “performance reasons”. I learned this was the case when I tried to log in to work on a Monday morning, and my credentials didn’t work, which prompted me to call my contact at the staffing company. I knew these “performance reasons” were just that, because the other contractor was awesome at his job. Him and I also had to spend the whole first month at the contract just getting set up and onboarded into Chase’s systems, like the databases, ID systems, computer networks, and such, with many issues along the way that were out of my, the other contractor’s, or the manager’s control.

Another painful mismatch I encountered was when I was assigned to a multinational healthcare client to do backend Java development. After another long, red-tape filled onboarding process, I was actually made to do long-running, tedious data exports that I was told was supposed to be automated, but the seniors were also swamped with dozens of said data exports themselves, and we had to meet service level agreements that were promised by the business. I was also expected to randomly bang out SQL queries and other kinds of reports on-demand by management. Weirdly, I did on-call rotations with this team, but wasn’t paid for being on-call on a Saturday morning; my timesheet with hours put in for Saturday was flatly rejected, and my boss called me and asked me why I added those hours.

I later found out that my staffing company didn’t want to pay me overtime for those extra hours. I was later cut from this contract, being told over the phone that “not everyone can make it at XYZ Client”. Completely ignoring the fact that I was set up to fail.

Long story short, contractors now get all the downsides and none of the upsides of contract work. If someone can turn a contract into a full-time job, that’s great, but contractors have been a second-class citizen in every company I’ve worked as one.