Although I disagree with the overall sentiment of the article (remote working doesn't work for generalists). I commend the author for at least trying remote work (especially as a YC company, an organization that openly discourages remote work).
Full disclosure, I work remotely and it's by far the best decision I've ever made in my entire life.
So to address a few points. Collaboration to me is when a group of people, at least two, are working on a project together. As a designer this is one of the core aspects of my job. I'm constantly working on things with engineers, founders and marketing people. Therefore I feel that I have a solid idea of what it takes to collaborate efficiently.
At my previous job, that was location dictated, collaboration typically took place over chat. We did have meetings to go over larger ideas and aspects of the project, but typically critiques, pair programming, decision making all took place over chat. Even though we were in the same room we made it a point to communicate over chat because one: you need to respect my space and not interrupt me just because we're in the same room and two: we have a transcript so we can reference it later.
When I decided to leave that job as a developer and pursue a career in design I decided that I would look for remote work only. I firmly believed that everything I did on a daily basis in a single location could be done remotely.
The biggest point I want to make in this post is that tools are essentially irrelevant. What matters most is the management of people on remote teams. When you hire remote employees they need to be both self managing and self motivating. You need to make them aware that collaboration on a remote team is what each individual member puts into it. If they aren't documenting their work each day, if they aren't participating in daily scrums, if they aren't contributing to chats, if they aren't volunteering to review PRs, etc. it's just not going to work out.
For me, and many of the folks I work with, remote work is about freedom. The freedom to build your own schedule. The freedom to work on something early in the morning or late at night, in the comfort of your own home. The freedom to walk to a coffee shop and work from there. The freedom to forgo that commute. The freedom to be more productive. The freedom to spend more time with your family and loved ones. The freedom to just build great products without the hassle of office politics.
How does pair programming work over chat? I feel like pair programming relies on you both looking at the same code + talking things through while one of you is actually coding. It seems like having to switch over to a chat client to communicate would decrease productivity a lot.
I can't comment too much on the pair programming aspect. I know Floobits[1] has been floated around often. It seems most of the pair programming we do is with interns or junior developers, who are located at HQ until joining full-time/gaining more experience.
As mentioned below Screenhero is really great for 1v1s (they plan on adding team collaboration early this year).
For reference I wrote a post a while ago with some tools and methods we use at Catalyze. The only tools we've added to the list that aren't in this[2] post are trello and teamspeak.
How has Teamspeak worked out for you? We're actually building a similar product that's specifically for teams. I'd be curious to hear your feedback on it as it may be helpful for you. Here's a quick walkthrough https://www.youtube.com/watch?v=KV7HBXuhT7Q Let me know if you have any thoughts / ideas.
I've had good productive sessions by using Skype video screen sharing with headsets for talking. Some benefits over doing this at the office on a workstation include:
- less disruptive to others in an open space
- both have a good full screen view of the code
- both can use their second monitor to look things up or try something during the session
- it's easy to switch from one "master" computer to the other (eg. I fix something, commit, and we continue the session on the coworker's screen, on the environment he's comfortable with)
None of these things are exclusive to doing things remotely, but they're included by default.
While I prefer this for pair programming, I find coaching works best in person, where body language (understanding), off-screen talking and drawing stuff on a piece of paper, are more important.
We (Aptira) start a screen (as in GNU screen) session on a VM we both log into and use skype for audio. This also allows us to quickly swap who is driving and copy/paste in/out of the shared screen session, which is less fluid when using video based screen sharing.
This wouldn't work for folks who work in an IDE though, since it's terminal based.
Full disclosure, I work remotely and it's by far the best decision I've ever made in my entire life.
So to address a few points. Collaboration to me is when a group of people, at least two, are working on a project together. As a designer this is one of the core aspects of my job. I'm constantly working on things with engineers, founders and marketing people. Therefore I feel that I have a solid idea of what it takes to collaborate efficiently.
At my previous job, that was location dictated, collaboration typically took place over chat. We did have meetings to go over larger ideas and aspects of the project, but typically critiques, pair programming, decision making all took place over chat. Even though we were in the same room we made it a point to communicate over chat because one: you need to respect my space and not interrupt me just because we're in the same room and two: we have a transcript so we can reference it later.
When I decided to leave that job as a developer and pursue a career in design I decided that I would look for remote work only. I firmly believed that everything I did on a daily basis in a single location could be done remotely.
The biggest point I want to make in this post is that tools are essentially irrelevant. What matters most is the management of people on remote teams. When you hire remote employees they need to be both self managing and self motivating. You need to make them aware that collaboration on a remote team is what each individual member puts into it. If they aren't documenting their work each day, if they aren't participating in daily scrums, if they aren't contributing to chats, if they aren't volunteering to review PRs, etc. it's just not going to work out.
For me, and many of the folks I work with, remote work is about freedom. The freedom to build your own schedule. The freedom to work on something early in the morning or late at night, in the comfort of your own home. The freedom to walk to a coffee shop and work from there. The freedom to forgo that commute. The freedom to be more productive. The freedom to spend more time with your family and loved ones. The freedom to just build great products without the hassle of office politics.