Works On My Machine is the place where Cognitects reflect on tech, culture, and the work we do. The views expressed on Works On My Machine are those of the author and don’t necessarily reflect the official position of Cognitect.
Working for a distributed company -- Cognitect is scattered across much of the United States and Europe -- does have its ups and downs. I love not having to commute. But I miss hanging out with my coworkers, live and in person. I love that my office is just upstairs, in that spare bedroom. But sometimes I wish I could put more distance between my job and the rest of my life. I love that the Internet lets me talk to just about anyone, anywhere. And sometimes I wish I could throw my computer, complete with its bogged-down network connection out the window.
Working for a distributed company also means that I get asked "the question" a fair bit. Actually the question is really a family of questions: "What's it like?" is a common variation. So is "Isn't it hard to get things done?" Then there is "What skills do I need to work remotely?" and, of course "How do I talk my boss -- or potential boss -- into this?"
I recently sat down with Craig Andera on the Cognicast to talk through the experience of working for a distributed company. You can listen to that conversation in full on the Cognicast (audio or transcript), but given the level of interest in that episode -- and how disorganized I can be when I'm just talking -- I thought I'd lay out the distributed case here.
What's In It For Me?
The first thing to understand about working distributed is that it is a series of trade offs. Certainly there are pluses and minuses for the people working in far flung locations. But there are also costs and rewards for their managers and for their company. Understanding the trade offs is key to making a distributed company work.
For the individual, many of the trade offs are obvious: Working for a distributed company means that you can live anywhere you want. All you need is a reasonably private and comfortable space and a decent Internet connection. For some people that means buying that house in the lovely but isolated woods, for others it means moving closer to relatives or other significant people. For me it mostly means I'm free to travel, to spend a month at the beach or a week helping my son move. Where would you live if your job was not a constraint?
Except that being distributed doesn't remove all of the spatial constraints. Yes you can live anywhere -- but you do need that Internet connection. You are also probably going to need to have an airport within reach: Even distributed people need to congregate in person sometime. I was recently reminded of this the hard way when I spent a chunk of my idyllic month at the beach driving for hours to an airport so that I could go on a "quick" business trip.
As I say, another individual plus of being distributed is that your daily commute either disappears entirely or it mutates into travel to a co-working space or a coffee shop or even the public library.
Simply put, not having to physically show up at 144 Generic Office Building five days a week means that I have a lot more control over my physical work environment. If you like brightly lit rooms, then find yourself a solarium and plug in the sun lamp along with the laptop. Conversely, if you -- like me -- are a cave dweller, then paint over those windows and get to work. You can blare the heavy metal or have the Bach just barely audible. The same reasoning applies -- within reason -- to dress. Even back when I still had an office no one ever accused me of dressing for success. But these days I do sometimes show up to work in my pajamas, at least when I'm not expected to appear on a video chat.
But again there is a trade off: Yes, working in a distributed company means you have control of your workspace, but it also means that you need to take responsibility for your workspace. Many distributed people work out of their homes -- I do -- but if you have noisy construction going on over head or even noisier kids underfoot, then you are probably going to need an alternative. And while most companies are willing to help out with these kind of issues (Cognitect does) mostly they will fall to the individual to work out.
What's In It For the Company?
There are also costs and benefits for companies considering going distributed but here the considerations are dominated by two factors. From a company's point of view the one gigantic negative in building a distributed team is that you are trading the best possible communication channel -- people in a room, talking face to face -- for whatever tiny bit of interaction you can squeeze down an internet connection. There is just no arguing with the idea that a group of people within walking distance of each other can create value more easily than the same group spread all over creation. After all, if you're familiar with the game telephone -- or with trying to get a complex idea across on an actual telephone -- then you know that many things are easier if you can just get everyone into the same room for five minutes. Pulling people together physically also tends to make them feel like a group, a team and, with a bit of luck, like a family.
But it's not all downside: Go distributed and the pool of people that you can employ expands from everyone within commuting distance of your office to everyone in the world that you can legally employ. Imagine that somewhere out there is exactly the person you are looking for, the one ideal colleague who has the perfect combination of skills, enthusiasm and experience to make your company hum. Now imagine they live on the wrong side of the river or in the next city or two timezones over. So the question is, would you rather try to reach your goal with the fine folks who are within commuting distance? Or should you go big? Are the difficulties in working with a team spread all over the landscape outweighed by having the ideal -- or at least a more ideal -- team?
For Cognitect, the tipping point came about six years ago as we shifted our focus to Clojure. Durham, NC was (and is!) a vibrant tech center at the heart of the Research Triangle, but many of the leading lights in the Clojure community were elsewhere. And we wanted those leading lights. So we made the decision to go distributed and started hiring people who lived far and wide.
Making It Work: Developers, Designers and Other Individual Contributors
There are a few things to keep in mind if you are a interested in working in a distributed environment:
* Ain't nothing like experience. If you have never worked in a team scattered here and then, the first thing to do is try it out. This isn't as hard as it sounds: The world is full of people working on open source or charity or nonprofit projects that aren't in your backyard. If your circumstance permit it, have a go at working remotely for some cause you believe in and karma will reward you with experience.
* Know the tools. People sometimes ask what techniques and tools they should be familiar with as they try to make the transition to working in a distributed setting. Here, the large pachyderm in the room is pair programming. At Cognitect we used to have a standard answer to the pair programming question: We would set up a development environment on an AWS instance and each developer would SSH in and use something like tmux to share the session. The upside to this setup is that it is dead simple and as reliable as AWS. The downside is that you are mostly limited to text based tools like VIM and EMACS. But, that was then. These days we at Cognitect do a lot of architectural reviews, code walkthroughs and team mentoring and in those situations -- where it is less important that everyone have exactly the same access to the keyboard -- we use the whole panoply of screen sharing tools.
* Reach out. If you are in your first distributed situation, try to get to know the folks you are working with. Since you aren't likely to run into them at lunch ("Who are you and what are you doing in my kitchen?!!") take the time to reach out via email or chat or Skype or whatever. Just because they work way over there doesn't mean that you can't make a personal connection.
* Don't let work bleed into your life. One of the dangers of distributed working is that the work tends to distribute itself throughout your life. Since everyone is different, there are no hard rules here except that you shouldn't let the fact that you are working out of your apartment mean that you never stop working. Think through what the boundary between your work life and your real life should be and patrol the fence every now and then.
Making It Work: Managers and Other Organizers
The issues are a little different if you are the person in charge, contemplating taking your team distributed. Like any other transition, the road to becoming happily distributed can be lengthy and a bit bumpy. Here are some things to keep in mind:
* Distributed is for everyone. If you are going to let some people work from the comfort of their home office or coffee shop, then let everyone work from where they want. This has two benefits: First, it helps prevent a feeling of them and us from creeping in. Second -- and more important -- it helps everyone understand the challenges of working from somewhere else. It's a lot easier to identify with the person at the other end of the conference call who can't hear if last week you were that person. All of this is why we at Cognitect say distributed instead of remote: If I'm remote that means that others are local or worse central. And that's just not how we look at it.
* Conversely avoid treating distributed as a perk to be grudgingly granted to certain people. The only way we could get Old So-And-So to join was to let them work from Cleveland is a great way to sabotage the whole effort before you even get started. Old So-And-So is inevitably going to feel isolated and others are likely to be resentful. Again, when a company goes distributed it is accepting the trade offs. Accept them gracefully.
* If you are just getting started being distributed, if you only have one or a few people somewhere else, then consider assigning each of them a buddy back at the ranch. My first distributed experience was a two person project back in the early 1990s. I was the guy working out the office while David, my partner, was hundreds of miles away. The project went smoothly in spite of the TFF (Telephone/Floppy/Fax) system that we were using to collaborate. A key factor was that I was there, at the office, able to act as a conduit between David and everyone else.
* You have to get everyone together -- in person -- periodically. Over the years Cognitect has tried different ways of gathering some or all of our team together. Early on we required the people working elsewhere to come into the headquarters office one week out of four. Later we would have designated weeks where some or all of the non-headquarters people would converge on Durham. This evolved into periodic company meetings, events that we call CogNation. Like the circus, every so often all of the Cognitects come to town for a few days of talks, meals, music, games and general syncing up. I can say that for me these events are, like Christmas, my birthday and the opening of the latest Star Wars film, among the highlights of my year.
* Look for other ways to connect people. Interactivity is key here. Most tech companies like Cognitect these days use some kind of chat system, perhaps Slack or HipChat. Scatter everyone far and wide and the chat system is now your water cooler. At Cognitect we also make extensive use of Google docs, not because they are the best organized or most featureful way to share documents, but because they are interactive. You type something and I see it in real time and then I type over your something and you see it, again in real time.
* Video really helps. For this we are indebted to Craig Andera, who was the person at Cognitect who consistently turned on his video for Skype calls. It turns out that being able to look the person you are working with in the eye is worth at least a thousand words. In this spirit, I know that companies that are semi-distributed in the sense that they have two or more widely separated offices have seen value in leaving a video call running all day between two large, centrally mounted monitors.
* In fact you need Craig Andera. Well not our Craig Andera, you can't have him. But your own Craig Andera, the person at the other end of the conference call who is willing to point out that the microphone is too far from the person speaking, that no, we can't see the whiteboard and that if everyone speaks at the same time no one outside of the physical room can hear anything. Have an advocate for the folks who happen to be somewhere else.
* Respect the boundaries. Just because they always work from home does not mean they are always at work.
In the end, making a distributed company work is like everything else in business: The key things are an open mind and a willingness to experiment. Certainly Cognitect would be a very different company if we weren't distributed. I'm not sure what that other company would look like, but I do know that I really like the one that we actually did build.