Remote Development: To be (there) or not to be

Remote Development, like anything else has its pluses and minuses. Remote working in general came under fire as recently as last week, when Yahoo’s CEO, Marissa Mayer, recently ordered the troops back to the fort. What are the benefits of remote working and more specifically, remote development?

I’ve been remote for over a year and a half. I have enough experience on both sides of the fence to weigh in on the benefits and drawbacks of saddling up with the team at the office and riding solo at my home office or remote location.

Experiences with Remote Development

After Groupon acquired Obtiva, I took a job with LexisNexis working on lawyers.com. I was working remote along with two other developers in Denver (Jim Ray and Jeff Powell). Every morning we had our morning stand-up call, which I had programmed into skype. I got up, threw on my headset and called in. This worked well.

In addition, there were 12 people on the team in New Jersey at the physical campus every morning.

To my surprise, our team of remote developers accomplished 20 times more than the people in Jersey.

Here’s why:

I had to go to the office for a week every 3 months. When I was there, I realized why we were so much more productive. It’s extremely difficult for programmers to focus in the corporate environment. I couldn’t get focused because there was always some kind of distraction. Overall, I felt it was a suffocating atmosphere and there’s nothing I or anyone else can do to change it. That’s the nature of the beast.

Being a remote developer for lawyers.com, I really saw the benefits of not being in the corporate environment. Personally, I was much more productive when I was able to get up in morning and run through my personal routine, focusing on the tasks ahead of me. After that, walk up to the home office, say “Good Morning” in campfire, then call in for stand-up.

Using screen sharing apps and paired programming to really focused our collaborative efforts. Some of our favorite tools were iChat (now called messages), skype, join.me, VNC, and lately Google Hangout for stand up.

The reason we were twenty times more productive than the team in the office, the benefit of remote development was our focus was on the task at hand and not on the other politics, bureaucracies, interruptions, and other trivial matter that find themselves floating around the office.

In the Office

Currently, I’m the Director of Application Engineering at RECSOLU and being in the office sometimes is important to collaborate with the other people within the walls of the business. We have a whole mobile team. My responsibilities are building out the APIs for the mobile team. Being in the office when I’m on task is not important.

The new company I am with is in the early growth stage. Realistically it’s still a start-up, but they’re beyond the startup profitability problem. They’re very profitable, generating money off their SaaS business model. RECSOLU is a company focused on student recruitment and advancing recruiting for large organization via technology (at a high level).

Students and Employers are able to join Recpass.com. Creating a Profile, which assigns students a QR code that can be scan using RECSOLU software. This action gathers the students resume, career history, and basic demographics at large University Career Expos. Employers are able to gather all this information using RECSOLU mobile software, which currently runs on iPad/iPhone.

Why Remote? The Computer Away Philosophy

At the office, I’m surrounded by fresh college grads who think being seen in the office is almost important as the work they get done. Being in the office late is important to them. Being seen is important to them.

Being seen by a client is very important. Being seen at the office is not. It’s much less distracting to be a computer away from someone where they can’t actually touch you and no one can come by and say, “Hey, how we doing on this? How we doing on that?”. That kind of environment impedes progress.

Another example is when someone on a team doesn’t know how to do something. If they’re getting hung up on a problem, a computer slows them down. It forces them to send an email or start a chat. That process of inquiry makes them go through the problem and begin to work it out rather than just tapping someone on the shoulder and getting a quick answer.

Pairing

Unfortunately, office work doesn’t allow time to pair, which I’m trying to change. Junior developers/apprentice should be pairing with an expert mentor all the time. There’s no reason they should be doing work by themselves. That’s the reason they have so many questions.

On my team, I average three questions an hour from junior developers. Sometimes I want to tell them, “Ask at 4 o’clock”. However, I was in a development shop that did this and I never liked it. Communications almost broke down and in turn collaboration wasn’t very good.

The only solution is for the business to allow paired programming. If you’re not allowed the time to pair with other developers, questions become very distracting and a remote environment works better.

Does a remote environment work better for senior developers?

My answer to this question is a resounding, yes.

On lawyers.com it was all senior devs and we were cranking daily. No one needed assistance or bothered each other with novice questions.

We were pairing on advanced issues that really needed two heads. Like the old saying goes, two heads are better than one. We always accomplish things better while pairing. Aside from solving the complex issues, we also picked up on each others typos and other small mistakes. It also helps with writing tests.

Being around fresh college grads who haven’t been in a real software environment and are doing sales and all the other things associated with the office, all the while wanting to tap the developer on the shoulder and ask them questions is not a conducive environment for developing software. Therefore, being remote is extremely beneficial.

Also, sometimes it’s flowing and sometimes it’s not. You may need to take a break or take a walk, which allows you to get back in the flow so you can hit it again.

Remote programming works so we just hired a remote dev who’s in Montreal (Andy Maleh) and another who’s in Costa Rica.

These two remote developers are very senior and we’re now testing the process with them.

I’m remote at least 1 to 2 days a week and as I’ve highlighted above, I’m seeing big benefits.

After a year and a half of being remote, this seems like the way to hire developers. Remote development forces us to use the tools we have. Being a computer away gets more productivity out of your developer while strengthening his/her weaknesses through pairing.

I don’t think the startup environment is always the best place for talented software developers. Walking into the office, (after the morning commute) you encounter two people asking you different questions, answer emails, morning stand up, talk to this person or that person and then you try to get to work. By that time I’ve lost my focus from the morning shower, which is how I focus my day. This turns into nothing getting done and a “let’s try to get it done tomorrow” mentality. Tomorrow, comes and the same thing happens.

Benefits of Remote Development
  • Increased problem solving and retention
  • Increased productivity
  • Decreased interruptions
  • Pairing with strong associates
  • Focusing on the task at hand