It can be challenging to scale up an organization. One choice that can be made is "full time employee" versus "contractor". Another choice is "Co-Located" versus "Remote".
There are some important considerations with any combination but I'll share my experiences with "Remote Contractors".
I've worked with remote contractors from Israel, Italy, England, Pakistan, and Ukraine. I've also personally worked as both an on-site contractor and a remote contractor.
- A contractor is free to take on other client work in parallel or to say no to a project. They may also decide to stop taking new contracts.
- A long term contractor is incentivized to deliver sustainable value for repeat business.
- A remote contractor might never be met in-person (instead only via video, chat, email, etc.) - they can be based anywhere in the world.
- Contractors typically cost less for a short duration (considering the full cost of HR and the interviewing process, employee benefits, cost of office space, etc.)
- Contractors tend to cost more over a longer duration (i.e. you are paying a premium for the overhead of their company administration, marketing, profit margin, etc. , though it still might be absolutely less than an employee)
- Contracts and payments can be tricky, especially across international borders, though technology and digital payments have made this a lot simpler.
The following are some of the many negative things I've heard:
- Outsourcing is evil and consultants and contractors are the most expensive way to ruin your business =(
- Foreigners are hard to understand and work with
- You should only hire contractors for a specific task
- Remote workers are virtual and so they don't matter as much
- Contractors, especially remote ones, will never be as passionate and invested as your employees
A story with a happy ending
Of my many experiences I'll share a recent one where I've had fabulous success with some contractors in Ukraine.
We started with three open positions and had a happy coincidence that a potential team lead contractor was in the Bay Area finishing a different assignment. The in-person interview went well (communicated well, strong technical skills, showed ambition and experience with leading a team). I interviewed him just like I would any new employee/team member.
In the next phase I immediately encouraged this first contractor, our remote team lead, to be engaged in the interviewing of the remaining two members. (After all, they'd be on his team!) I then received resumes from each prospective candidate he'd already reviewed/interviewed. Next I had a conference call with each candidate where again I focused on communication, experience, and ability.
Once we got the team assembled we codified on a Monday weekly meeting that fit in the narrow window of time that accomodated the 10 hour timezone difference. All other coordination would be through Confluence, Pull Requests, HipChat (chat and, and of course, if needed, video call).
I gave them an example of the work I had done already for the task and asked about their experiences with different solutions/technology choices (test automation and Selenium). I also worked with them to create an inventory of the test coverage. Each week we would discuss the current progress and if there was a change in priority (i.e. a critical security release requiring extra help with manual validation).
After a year it became a clear success: productive part of the team, doubled their head count, and allowing us to ship with more confidence faster than ever before. Some of the trust has been having them own their portion of the system (CI and Automated Testing), very often when they bring up a bug or the tests fail we have to listen: delegation means trusting.
The timezone difference is still hard and they maintain their own Kanban board even though they participate in the common sprint planning meeting. As they've learned our problem domain and culture they have grown to proactively solve problems (like a hackathon where they wrote an API library for testing, or their extension into performance testing, and many other additions). We could not have hired as many full time employees so quickly nor with their specific expertise: our success is due to their success.
Things I've learned to succeed
Especially: Ensure there is clear Communication
- Have a regular meeting (I find weekly is the best cadence) to make sure progress is being made on the correct things and identify any "blockers"
- Prepare written agendas, repeat any decisions made in writing
- Verbally (Video Conference is preferred for visual cues) for "high bandwidth" back and forth, give them an opportunity to ask questions!
- Provide asynchronous tools to overcome timezone differences (HipChat/JIRA/Confluence)
- Have a clear idea of exactly what you want them to achieve (talk through your "definition of done")
Specifically: People and Organization
- Be involved and engaged in the interview process - your people and team are the largest factor for success or failure
- Trust is earned over time and is the most valuable component (especially when remote)
- You must give trust to receive trust
- For hiring a remote team lead: prefer communication and then organization skills and finally technical skills - remember this person must overcome language/cultural barriers
- Setup a remote hierarchy: they need to be able to resolve questions and become unblocked quickly via a local escalation process (i.e. a single decision maker in their office/timezone)
- Don't be afraid to "lose a week" for them to learn something, research an approach, or just because of a misunderstanding (this is normal and it only feels more expensive than an "internal employee" because you actually get to see a bill for it)
- Provide open ended goals (don't micromanage and over-prescribe) and people will often exceed expectations
- Being nice is a universal truth
Things to watch out for
Clearly not everything leads to success, here are some important considerations:
- Things that materially affect your user count or bottom line may need a stronger compliance/auditing chain than contracting firms can provide
- Misunderstandings can turn into personal conflicts if not managed correctly
- Beware slipping into an "us and them" mentality or "throwing it over the wall" or "finger pointing"
- Skills may not always match up and it's rare remote contractors will directly interact with your customers - don't create unwinnable situations
Be careful when using contractors for critical path projects or key competitive intellectual property: - You are betting your project/company success on a group that has more external risk and less alignment - They may be pressured into taking shortcuts and are less likely to have to "pay" the long term costs (e.g. technical debt by skipping tests or large volumes of support tickets) - Slippage and mistakes happen, by keeping it inside your own organization these can be managed quickly and appropriately
Things that you can takeaway
A foreign contractor can be just a productive as a domestic contractor or employee despite language, geography, cultural, calendar, and timezone differences. A good contractor is like finding a needle in a very large haystack so put in the effort to keep them happy.
Contractors are people:
- Personalize the relationship because you should get to know them: their interests, strengths, weaknesses, etc.
- Find how they complement your team and give them a path to grow as professionals
- Respect that they have national/religious holidays and personal lives
- Look to align their interests with yours, there has got to be more than "it's just about the money"