Yo! It’s Alvin!
I’ve been working as a software developer for almost 12 years—the first 10 as a subcontractor.
In that decade, I experienced the pros and cons of being a subcontractor—NONE of which people ever talk about online. This is despite many developers employed by staffing agencies that contract out their services.
No longer!
Whether you’re looking to become a software developer, or you’re just curious, let me take you Below the Surface in the secret life of a software subcontractor.
What do I mean by software subcontractor?
I mean, I was employed by one company (an IT consulting firm—the “employer”), which contracted me out to work with software development teams in other companies (the “clients”).
Why not apply directly to those client companies?
You could! And I did. But companies that aren’t tech-focused typically have much higher standards. They like senior developers with experience who can jump right in and start making a big difference. And those that hire juniors look for A+++ talent straight from academia.
I wasn’t either.
Benefit 1: a consulting firm or staffing agency typically has broader hiring standards.
They’re willing to look “lower” to fill positions in their companies. As long as the employer believes you have the potential to grow into a better developer, and they have a vacancy, they’re more inclined to hire you. Of course, they won’t just assign you to a super important project/client from the start. No, no, no!
Benefit 2: you’ll be paired with a senior member of the employing firm.
This often means one-on-one mentorship where you can focus on
honing your technical skills,
sharpening your soft skills, and
developing your business sense
… while your mentor takes care of administrivia and coordinating with the client. You’re kind of like an apprentice at this stage. Having a mentor giving you feedback on everything you do lets you grow fast as a professional.
And that’s the point. Cultivating strong talent within the firm strengthens the employer’s reputation and relationships with their clients. Of course, that implies:
Cost 1: you won’t get to choose who you work with or the projects you work on.
… at least, not until your employer trusts your ability to keep clients happy and grow the employer’s business. Typically, you must be a senior developer or higher. And even then, you’ll have to coordinate with your managers to move onto projects you want to work on. After all, someone must take your place in your original project. And that means putting in extra hours to work on multiple projects at once.
Benefit 3: it may be easier to get broader experiences.
Within 10 years, I worked on a dozen different projects, with 5 different clients in:
real estate,
retail,
hospitality,
telecommunications, and
banking
… industries - from small mom-and-pop shops to global corporations. And it’s because of this variety that I got to experience the absolute worst teams and the best ones. It made me realize what I want and don’t want in my career, and in my life. And it’s the reason I believe in the power of broadening one’s perspective in life.
Your mileage may vary, though. I was lucky positions on other projects opened, and my managers wanted me on those projects, so I moved frequently.
On second thought, maybe that wasn’t so great…
Cost 2: switching teams too much makes it much harder to develop seniority.
Part of what makes a good senior developer is getting things done faster. And the longer you work with a specific team, the faster you’ll work as long as you’re learning because you’ll get more familiar with…
The domain—all the industry-specific terms and processes that your software is automating, which are always incredibly complex.
The team’s and company’s internal processes—including forms, approvals, and steps you need to get things done.
The tools—the entire technology stack the team uses day-to-day.
The history—you know why things are done the way they are, which helps you make sense of the 3 things I listed above.
But, whenever you switch companies, you must learn all the above from scratch. It doesn’t matter how many years you worked as a developer. You’re starting from the bottom at a different company because someone else there knows more about the domain, team, tools, and history than you.
The cool thing is, the more you jump around, the faster you pick things up. So, as long as you work smart and hard, you can develop seniority faster this way. But, as long as you’re jumping around, it’s hard to be seen as a “true” senior, even in the eyes of your employer. In the words of my former manager, “we need to find you a home, so you can come into your own.”
But, in a way, it doesn’t matter which client you’re assigned to…
Cost 3: you have more managers and rules to follow.
Since you’re employed by one company and working for another, you have to follow the rules of both—typically, whichever is stricter. It didn’t matter that my client had causal Fridays. My employer required business casual at minimum every day, so I wasn’t allowed to wear shorts and a t-shirt even when working with my client onsite.
You also have more managers to report to. My employer ultimately paid me, so they tracked and reviewed my performance. But, of course, my client companies’ managers handled the projects I worked on, so I reported to them, too.
If you don’t like extra bureaucracy, this may not be for you.
Cost 4: you’re probably underpaid (compared to market rates).
Your employer must make money somehow. So, whatever they bill their clients for your time must be more than what you’re asking of your employer.
Overall…
I’m grateful for the opportunity I got to work as a software subcontractor. If it were not for the IT consulting firm taking their chance on me, I probably wouldn’t be a software developer today. And while I encountered the worst managers ever, I was also mentored by 10x engineers who elevated me to leadership roles. That was only possible because it was easy to bounce me around from team to team. And through those experiences, I discovered the career and life I wanted most.
But, as the years passed, the excessive bouncing also held me back. Under-leveled, underpaid, and mired in layers of bureaucracy, I decided it was time to join a new team, not as a subcontractor, but as a full-time employee.
I hope you found this Below the Surface look into the life of a software subcontractor informative. Reply to belowthesurface@substack.com if you have any comments or questions for me—especially if you have a completely different experience.
Today’s Visual
Thank you for reading. Have a wonderful day. And I’ll see you in the next one!
Nice perspective. Thanks for sharing!