First job out of college was a contract-to-hire job. The written agreement said I will work as a software developer, receiving $20/hr on 1099 with a conversion to W2 full-time at $30/hr after 3 months of contract work.
I took it, given that I needed more experience and didn't take too long in finding a job (4 months). Plus my last part time job paid so low, $20 was essentially almost triple the pay. So I was paid on 1099 accordingly but after the 3 months they gave me two options: switch to project manager (without a raise) or continue doing software dev work. I opted for the latter because I wasn't interested in being a PM for my career. They didn't move me to W2 though. When I asked why, the founder/boss told me they aren't yet able to setup payroll for W2 employees. So the “hire” phase never happened.
Eventually my colleagues and I realized they didn't hire developers in-house. They just treat us as employees but not classify us as one. 90% of their devs are overseas and they would rather keep most of the product work there. So there's no markup in our pay (since contractors have to buy their own insurance and pay more in taxes). We realized we were getting gypped and gradually quit including myself. The only good thing I could say about it is they didn't force us to work extended hours. I didn't know I could just report them for misclassification, but this time is long gone and past the statute of limitations.
Second contract job was actually not too bad, this was the least bad of my contract experiences. It had a good pacing and never felt overworked. It was still on the low side though- $25/hr and I was laid off when the startup decided to pivot in tech and obviously it's easier to drop your contractors first.
The third contract job I stayed for only a week. This had the worst terms I had seen as a contractor. It was another of those companies that wants to hire a contractor but handle them like an employee. They doubled down on cheap cost, by paying me a strange “whichever is lower” per-hour task policy. Basically, billing hours are pre-allotted by task. If I finish task and close ticket before the time limit I have to bill only that time, but if I pass the time limit, I must bill the max time limit and all additional time is unpaid.
This job was remote. Since I was told to be present for 40 hours a week, it was really “you're expected to be online 40 hours but only bill for the allowed time in tasks”. They'll basically assign you tasks that require 20 hours of work but set them for 5 to 10, and will thus effectively pay you at 25% to 50% of the advertised amount. You'll still be required to answer Slack and email within a few mins, providing them status reports and support on the features you developed, all unpaid.
Project setup is not billable. Testing and documentation are also not billable. Only the act of writing code to finish a task is billable. In this environment, a software developer will be compared to a typist.
Realizing how bad all these terms are, I decided not to do any more work, and just told him I'll consider it. A day later he said he thought I was too fussy because of our conversation of pay, and decided to “fire” me citing at-will employment status. So, that was interesting, because I thought I was a contractor.
I'm not sure why all my contractor experiences have been mostly terrible. You know what, maybe I do. I probably messed up by picking the first job from Craigslist, and the third one from Reddit. I do apply a lot more frequently to more serious job boards, like LinkedIn and Indeed, and some tech-centric places that aren't yet drowning in recruiter spam listings. But I don't have much luck getting offers there. I hear lots from contractors getting paid real big bucks for software work to multiple clients, but man I haven't been part of that group yet.