It has been a whirlwind adventure, but I'm rapidly approaching 3 years as a remote engineer and realized I haven't once taken the time to share my thoughts on what has worked, what hasn't, and everything in between.
I started my career at a digital design and web development agency here in downtown Knoxville while finishing up my bachelor's in Computer Science. I worked hard, learned a ton by being part of a small business, and wouldn't trade that experience for anything. In fact, that time really prepared me for starting Lotus Apps and what it took to be a business owner. I left that agency looking for a larger engineering team, the chance to work with seasoned Rails engineers, and just work with others outside of my comfort group to continue to learn and grow. There was not, and still isn't, any opportunities here in town for Rails development, so I ended up taking the plunge into remote work.
I've had the opportunity to work solo on remote projects, as well as work on large (15 member) distributed engineering teams - one team had members in the US, Canada, France, Jamaica, and Columbia at the same time! The constant is always the people - whether you're looking to join a team in town, or remote, find a team that you click with and want to work with every day.
I'll say the biggest thing that helped me with remote work, was simply easing into it. I didn't drop everything and start full time, but rather began part time and built up to it. Beyond that, here are my thoughts after 3 years of being on various teams.
Communication is King
Use whatever tools to stay in contact, from chat rooms to video chats and even the old fashioned phone. I find it reassuring that if everything else fails, I have a phone number to call.
Coworkers can not pick up on any "vibes" as easy when there is no coffee pot to gather around. Voice concerns early, and listen to others to build trust.
Get to Know Your Team
Work can be fun, and hopefully it is. But I found I enjoyed and did my best work when the team got to know each other outside of "the office". A Google Hangout or phone call every so often to check up kids, spouses, hobbies - all that paid off to really build morale and make a place that I loved being a part of. I still keep in touch with several of these folks, and I've never met them in person.
Invest in Tools and Documentation
Tools are going to be the way your team collaborates. Ensure that your team has everything they need to remove barriers and communicate on a whim. For engineers especially, this can be crucial to solving a problem quickly and effectively. Without good tools, you're stifling your team's creativity and productivity.
I say this without meaning a strictly Scrum approach, but be sure to see your team every day and have an idea of what everyone is working on.
Having worked with so many distributed teams, I share these as items that didn't work as well for me - your mileage may vary.
Odd Man Out
At this point in my career, I vary rarely consider an engagement where the organization has never had remote workers and I would be the only one. It's a tough learning curve for the organization to keep you included, and you will find yourself needing to lead the conversation and direct to provide the best experience for you both.
That said, I would have missed working with the team I loved the most if I had stuck hard and fast to this rule, as I was the first remote engineer and the others followed.
It's harder to trust people that you don't know well. From a pure business perspective, make sure you get plenty of details about an organization before joining. It's even more important when you're halfway across the country, to know things like mailing addresses, contact information, business standing, how well the company is funded, and more. Do your homework.
In a remote team, or even as a solo remote engineer, you'll have to work even harder to build connections with others in your organization. Make yourself available and reach out to others.
I work in a home office most of my week, but find myself taking a trip to do grocery shopping, working from a coffee shop a morning a week, or working from a park crucial to keeping my sanity. People crave being around other human beings, so find something that works for you. Coworking spaces are popular in larger metropolitan areas for this reason I believe.
Remote Team, Onsite Company
I found myself on a team where the engineering team was remote, but the rest of the company shared an office space. Overall it was a challenge to ensure that the organization felt like one cohesive unit. Communication was a struggle because information naturally flows more freely in person, and the remote team found ourselves "the last to know" on many occasions.
For whatever reason, many places that are looking for remote engineers will want you to travel to do team building exercises. I've been amazed interviewing with organizations that wanted me onsite for as much as 2 weeks every month, to about a week every 9 weeks. About 90% of my trips to be onsite have been unproductive, disruptive, and expensive attempts that failed to deliver any value. Inquire about travel policies early on if this is something you would want to avoid.
I believe regular communication, transparency and personal connections remove any need to be on-site for most remote engineering jobs.
I write this section as a standalone, because it is a big one. If you're considering remote work, there are two camps you can fall into as a US resident and have major impacts.
A 1099 contractor receives no benefits from the organization hiring you, and you are treated essentially as a business. You want to impress your client, but you have the freedom to set your own hours, use the equipment you want to use, and more.
In this setup, you are responsible for billing your client and pursuing them if they do not pay. Generally speaking, that involves writing a demand letter and possibly taking the client to court or sending the liability to a collections agency to collect on the debt for you.
If you're looking to purchase a home in the next couple years, be aware that there is a huge burden to prove you can afford a mortgage when your income is not via payroll, which is presumably more stable as viewed by the banks.
The alternative is a W2 employee, where your organization actually registers in your state to hire you and pays you as any other employee. They'll withhold the normal holdings on your pay checks and theoretically you are no different than if you had an office to physically go into every day.
In this setup, you are paid for the hours worked, or by a salary. This makes banks happy to give you money for a mortgage, and can help you in the case that you are not given a paycheck that you deserve.
I was a remote employee in TN for an organization that never gave me my first pay check and ended up owing me $9k in gross wages before I ended my time there. I had thought the state of TN would help me pursue the wages, as I was an employee with an offer letter agreement and the company had the legal obligation to deliver a final paycheck, pay for overtime, and withhold federal taxes. However, in my case, the state of TN refused to investigate and pursue because the business was located in Washington DC, and both Deleware and DC refused to help because I had performed all the work in TN. In the end, I had to sue the organization in civil court just as if I had been a 1099 contractor, and the protections that states are supposed to provide were of no help.
I hope that this sheds some light on what it is like to work as part of a remote team every day, and gives you some good questions to ask yourself and your potential employer if you're thinking about making the switch. If you have anything specific to ask, just ask me on twitter!