Remote Development
Why it works for me
One of the reasons that I love "working remotely" and also being an independent contractor is that I can have my own schedule and set my own hours.
You may be thinking "What a lucky guy, he can work when he wants and he doesn't have to when he doesn't want to." It's really nothing like that. If anything, I'm probably a workaholic. I never would have thought that about myself, but since my burnout episode last year, and actually recounting to the doctors what I had been doing, I confess, I'm a recovering workaholic.
What it means in real life is that I start work when I get up, around 6:30 in the morning. Depending on the day or the season, I'm usually helping or getting the kids ready for school. I'm working most of the day, and occasionally I'm doing work in the evening, even though I'm trying to cut back on that. Before the burnout I was easily doing 60-70 hours per week without even thinking about it. Now I have to think about it to get myself to be around 40.
One of the things that I love about being able to work remotely is that I can tether my laptop to my cell phone or use my tablet and work anywhere. I often go with my wife and kids to the store, to the library or other places. Some of the times that I'm out with them, my youngest will be asleep in the car seat, my wife and older kids will be doing what they need to do at some store and I'll be in the front seat of the car working away. It's a wonderful freedom. I don't think that it's for everyone, but it is something that works really well for me and my family.
Here's a concrete example from this last week. We ended up going to Ohio Amish country this past week to spend some time helping family. It was great because I can work up there just as easily as I can work anywhere. I got the work done that I needed to do for the day and then 20 minutes later I was helping family move. From there, we went to Cleveland to spend some time with other family and I was able to work from there.
I needed to go to Chicago for the weekend to help with a server move. Being able to work fully remotely means that I was able to work while I was in the airport, the airplane, and I could have even worked while I was Lyfting, even though I didn't. I can shift billable hours to the times that work best for my family, and still make a good living. It's truly a blessing.
What are the advantages?
The advantages to both me and my clients are numerous. I've gone over a number of them above, but in addition to those, there are quite a few more.
I don't lose hours, days and months to commuting and traffic. On the odd days that I need to commute, it's so mentally grating. These days, most often, I work from various locations in our house, depending on what's going on. I have my "office area" which is where it is the quietest and I have the most connectivity, but I'm writing this blog post from my dining room table at the moment on an unusually cool summer day with the windows open and the birds chirping.
Working remotely, and knowing how to use technology to my advantage, I can reach out to clients and meet with them virtually using videoconferencing, screen sharing, creating video tutorials, Slack chatting, texting and many other means of communicating. When working remotely communication is #1, so I make it a point to be as available as I possibly can be.
Being driven and being judged by what I deliver means that my schedule is malleable and if I need to take an hour off to mow the lawn before a storm gets here, I can do that – if I don't have anything pressing. I just make up that hour in the morning or the evening.
What are the disadvantages?
There are definitely disadvantages too. I have to work extra hard at communication. Something most people take for granted "around the water cooler".
I also have to work extra hard at building and maintaining relationships. Again, the "water cooler" makes it really easy to build those work relationships.
You really have to be a "self starter" and a driven person to be able to work remotely effectively. It's so easy to "just watch a little bit of a movie or TV show" which then turns into a half of a day. I speak from experience. When that has happened in the past, I'm blessed to be able to bill for only the part of the day that I was working. Speaking of that. How do I deal with that? One, accountability with my wife who is at home raising our children. She's amazing. When she decides to go back to work, my other weapon to defeat productivity zappers is firewalls. Being able to just deny Facebook, or our Plex Server, while it doesn't totally stop me, it forces me to think about what I'm doing and 99% of the time, that's enough for me.
I'm sure that there are many more, and I'll amend this blog post as I think of more of them.
Tools
I've had varying amounts of "remote work" time in the past decade, but have really been doing a lot more of that over the past year or so. What are some of the tools of the trade?
I realize that the work that I do is different from a lot of other people, so YMMV.
- MOSH and TMUX - These two are my secret weapons. What do I like so much about them? MOSH is short for mobile shell. It's an amazing utility that basically makes sketchy ssh connections possible. Think: Airplane Wifi or tethered mobile. It allows you to type as fast as you need to and syncs your local typing with the remote server when it can. Super cool. The other part of this duo? TMUX is a terminal multiplexer. What does that mean to non-techies? Basically that I can be working on code for one or more clients, and each of them has a "tab". Kind of like having tabs in a browser, but for the "terminal". It also means that if I have, for example, a long-running database backup and my connection dies, that backup continues in the background until I reconnect. The secret sauce? Using them together. I can literally close the lid on my laptop when I'm at home, get in the car, do whatever, tether on my cell phone, open the lid on my laptop and everything on my terminal is exactly the way that I left it. Magic!
- Harvest or Google Sheets - Depending on the quarter, my mood, etc. I'm either using Harvest or Google Sheets for time tracking and invoicing. It's great to be able to have, from any device, full control over when I'm billable, time tracking to the minute and being able to run my business from anywhere.
- A browser that syncs tabs, bookmarks - Another game changer for me. I do the majority of my development from my MacBook, but sometimes I like to pick up a Chromebook, a Tablet, or a phone. All of these are possible. It's amazing when I can pick up my tablet, go to the list of open tabs or bookmarks on any device and bring them over to the current device that I'm using. This is more of a time saver and a productivity booster than it seems at first.
- Linode, DigitalOcean, etc. - I've started using these a lot more to host my development server. I've found that having a "cheap" server that's running all of the time that I can connect to no matter where I am is also huge. That means that all I need is a browser and/or a terminal and I can connect and do work from an internet cafe, library or other places and everything is exactly where I left it.
Final Thoughts
These are just some of the tools that I use for remote development. I'll try to update this blog post when I think of more of them. For me, being able to develop remotely, and also run my own business has been a game changer. I'm excited to get up and face the day, the challenges and everything. I enjoy community when I'm with other people, but it's huge getting to watch my kids grow up in front of my eyes.
There will always be challenges such as communication and networking, but for the resourceful, there will always be ways to overcome those challenges.
Happy Remoting!