Do you assume that remote working is a compromise? That it's a soft option?
Around 5 years ago my team at Biomni, and much of our software house, decided we could work as effectively from home. Many of us left London and headed to the country, replacing bars and restaurants with poultry keeping and mountain biking. Today we are closer, collaborate more, recruit better people and work more effectively than we ever did. Over the last few years our business has flourished, It's giving us a competitive edge. This is the story of how we did it.
People
Our ability to develop software depends entirely on people. We need to recruit the right people and once we have them we need them to stay motivated, committed, inspired and healthy. Can we do this without an office? Could being remote even make it easier?
Recruitment
What do you have to offer? When my current team worked in a London office it was hard to attract great developers to join us. They often went to for the big bonuses at the banks or the trendier start-ups. It became expensive and time consuming to compete. Now the team is remote we are able to employ people situated anywhere in the UK. Our last new starter came from Blackpool, a place with limited opportunity for developers, but the place he wanted to stay. He is young, smart, open to new ideas and motivated.
It has long been understood that the difference between the most and least effective programmers is vast. How can we attract talented people who share our vision? We can try paying more than everyone else, or offering perks, but as Dan Pink tells us, knowledge workers aren't driven by money, higher incentives lead to lower performance. What we should be focusing on is autonomy, mastery and purpose. When working from home it's hard not to feel more autonomous. Mastery and purpose seem unaffected by my location.
If you're based in a big city you're competing in an overcrowded lake, if you're out in the sticks you're probably fishing in a small puddle. When recruiting remote workers you can pick talent from an ocean: anywhere with a compatible time zone. I don't think the value of this can be underestimated. Whilst many of the most ambitious people will move to find the best jobs, plenty have good reasons not to. Those with children needing good schools will often prefer to be outside the big cities and there are plenty of developers who prefer an alternative lifestyle to the standard bustle of the city. Remote working is incredibly valuable to most people, both financially and in quality of life.
Travel
Travelling into your office probably doesn't add value to your staff's day. It's stressful, tiring, perhaps dangerous, boring and unpredictable. How often are people unable to get to work on time because of delayed trains or arrive stressed, cold and wet, only to spend the day dreading the journey home?
I used to spend two and a half hours a day and around three hundred pounds a month commuting. It was a tiring, expensive and a depressing waste of time. It kept me away from my young children and left them spending long days in childcare. Working from home eliminates all of that. I walk my children to school before settling down with a large coffee and get straight to work.
Health
If the commute doesn't kill your office workers, what will? Offices can be stressful affairs: egos, hierarchies and politics scare the life out of developers. I grew up with a father who suffered from work related anxiety and saw the damage it could do. I've always been determined to find a better way. When I work remotely I can connect with people more freely and I'm removed from much of the dysfunction I see in offices.
Typical developer personalities have much in common with people with Aspergers and as Jeff Atwood put it in 2006:
Replacing the hubbub of the traditional office with a screen and an email address inserts a controllable interface between a programmer and the chaos of everyday life. Flattened workplace hierarchies are more comfortable for those who find it hard to read social cues. A WYSIWYG world, where respect and rewards are based strictly on merit, is an Asperger's dream.
Loneliness
What about the loneliness of the remote worker? Some people thrive on it, some fear it. I personally felt more alone in an office, surrounded by people but anonymous, offices can be lonely places. When working at home I feel more confident, freer and more independent. Some people tell me that they struggle to motivate themselves at home, but I suspect that if you need someone watching over you to stay motivated you're in the wrong job.
I pair program about eighty percent of the time. This type of intense collaboration leaves no time to feel alone. But what about the many developers who prefer not to pair but like to have people around them? Well there is always the local Coffee shop or Co-working space. There are also tools such as Sqwiggle that allow you to see the faces of your team working and quickly initiate a video link.
Social life
And what about those moments around the water cooler where we meet the new guy from accounts or enjoy that quick pint with colleagues over lunch? These connections are important and help us feel part of the organisation. Isn't remote work a bit isolated?
I still enjoy these moments with a remote team. There's plenty of banter in our text and voice chats. The conversations are more positive than those we had in the office: we are all at home and life's good, there's less to moan about. So how else can keep the important social bonds when we are remote? Here's a few suggestions:
- Encourage people to arrive at the virtual stand-up a few minutes early each day and have a social chat
- Invite people to social meetings, perhaps on a Friday afternoon to discuss the week before and the week ahead in a relaxed atmosphere. This is a good time to share some learning.
- Try to physically get together every few weeks and devote that time purely to social activity. A day of organisation wide Open Space every month can do more for bonding than any water cooler.
With remote work these activities need to be deliberately organised but that doesn't mean they have to be formal, we can design them to be a bit chaotic and have a greater chance of those random connections emerging.
Organisation
An organisation isn't an organisation unless the people are in some way organised. We can try to organise others or let them organise themselves. I prefer the latter, give me a daily stand-up over a project manager any day. How does working remotely affect the way we organise ourselves?
Visibility
It's a little disorientating not being able to see what each other are doing at first, but I've come to realise it really doesn't matter. The main thing that matters is the code we commit. When I want to collaborate it helps knowing if someone is available. With the tools we use I can see who is in conversation and who's free. I'll often ask a question on a team chat that often leads to two or more of us working together. In an office I'd often find myself not asking other people for help because they looked so busy. At home I ask and if they are too busy they ignore me.
To be organised we need visibility of what the people on the team are doing, what problems are arising and what's being learnt. In the past this was a job for Project Managers and status updates, today most teams are doing this themselves with Task Boards and Daily Stand-ups. After 5 years of doing daily stand-ups online, with conference calls using something like Skype, GotoMeeting, Webex or Lync. I can reassure you it works fine. We chat a bit beforehand then work through the board, sharing what we've learnt and what’s holding us up. It’s a daily ritual that gets us all connected and understanding the big picture of where we are.
Is it as good as a real stand-up? Stand-ups are as good as you make them, it makes little difference where you are. You never actually get to walk up to a board and move a card, which is a shame but there is still some satisfaction in dragging cards around on boards like Trello, Kanbanery and LeanKit. Do I actually stand up? Sometimes.
Teams need trust. How can we trust somebody we can't see? In an office you can see if someone is working because they are typing. In fact they are probably scared to stop and think in case you think they're slacking. When I worked in an office I rarely took time in my day to question the way I was working, I was too busy trying to look busier than everyone else. When I'm remote I can only be judged on the work I do, not the way I look when I'm doing it. Over the years of Remote working our culture of continuous Improvement has certainly strengthened. I wonder if this is one reason why.
Meetings
I dread being stuck in meeting rooms. Online meetings can be even more painful, but over the years we've got better at them. The easiest way to destroy an online meeting is by one person having sound problems, it can turn the meeting into an excruciating waste of time for everybody. These problems are easily avoided by ensuring we've all got good internet connections and invested in good headsets and hardware. With a good setup we can rely on being able to hear everyone clearly and share screens with no delay.
In an online meeting it's easy to switch off or go and do something else with one ear on the meeting. Just like office meetings remote meetings can get dull and many programmers will start to code in the background leading to embarrassing moments when they are asked a question. Is this bad? It reminds us to keep focused and keep it short, just like being in the office. I've gone from meeting up in the office to have a day of meetings to having shorter more timely meetings online and letting the days when we do meet up be more about social bonding than problem solving.
We've learnt techniques to try and keep everyone engaged and ensure they get a fair say. I often call I quick Round Robin of opinion if I feel someone has been dominating. This is even more important online as the person doing the talking can't see the frustration on others' faces. If someone hasn't spoken for a while it's good to ask them what they think. Keeping everyone engaged is the key to a productive meeting. Is it as good as being face-to-face? Does some nuance get lost? Perhaps, but after a while I think we compensate by speaking more expressively.
Creating and Maintaining
Building the software is a process of discovery and experimentation, most of our time is spent learning. To do this effectively we need time to think and the ability to collaborate. When we work remotely there is the added complexity of requiring remotes access to all the servers and source control needed to build and deploy and test our solutions.
Learning
The quality of the software we create depends on the speed that we learn not the speed that we write code. We need to be constantly learning about what's needed and how we can best implement those needs. In an office we often overhear conversations that contain important information about what other people are learning, conversations that we are never aware of when we're remote. We can compensate for this by encouraging everyone to deliberately share what they learn. It takes a change in mind-set to notice when we are learning and volunteering to share that with others. I try encourage this in the daily stand-up by asking questions that often lead us to follow the stand-up with some knowledge sharing.
Space to think
Remote work can give us the space to think that's so hard to find in a busy office. Many office workers arrive early or stay late to try and get some work done free of distractions and interruptions. Is remote working really any different? I still get messaged by people looking for code reviews or questions from the support desk. I can change my status to "Do Not Disturb", but this can discourage others to ask me for help killing trust and collaboration, so I rarely do.
With remote work, just as in the office there are various channels of communication that can be more or less invasive. It's worth agreeing as a team which ones are best to use in different situations. A pattern has emerged on our team where conversations initially start on chat. Chat is pretty easy to ignore if you deep in some code. We invite people to collaborate and those that accept are the people that want to be there. We then switch to voice, leaving those looking for space to think, undisturbed.
Collaborating
So we can share information effectively and find space to think, but can we actually work together? In an office we might huddle around a desk, hit a whiteboard, or chain ourselves to a meeting room. Can we do the same remotely? In many ways it's better.
I spend most of my day Pair programming remotely with screen sharing or other tools such as tmux. It beats sitting side-by-side by far. I've heard many people do this even when they are in the same office. You are connected but still retain your own desk and setup.
What about when the whole team wants to get together to work on a problem together or discuss the next steps. We use one of the online tools to talk and share screens and again it's nice to stay at the comfort of our own desk. It can be a lot simpler than trying to find a meeting room or a spare whiteboard.
Conclusion
We have a long history of working together in offices and a very short one of doing it remotely. The tools are just about there, with plenty of new ones emerging as WebRTC starts to become a reality, but it will take us some time to adapt our way of working and learn how to use them as effectively as we do in the office.
Can remote working change our organisations? I certainly feel less of the negative effects of silos and hierarchy without the physical structures we build in offices to separate and elevate us. This leads to a feeling of greater autonomy and freedom to collaborate and connect more widely within the organisation.
So if we can be as effective working remotely, can it give our organisation a competitive edge? It will come as no surprise that I believe it can. In the 5 years my team has been working remotely not one developer has left. We have a more committed, creative team and we've started picking talent from all over the UK without having to pay banking salaries. Many start-ups like 37Signals and Wordpress.com have embraced it, I think it’s time for the enterprise to start taking collaborative remote working seriously.
About the Author
Tom Howlett believes that lasting change takes time. In the last 12 years he's helped take the team at Biomni from Chaos to a strong culture of Continuous Improvement, whilst the company transitioned from office to home working. In that time he's written about the difficulties he faced and how he overcame them in over 100 blog posts, and a book called "A Programmer's Guide To People". He has a strong focus on breaking down the barriers that restrict collaboration and ensuring the people who do the work can effectively decide how it's done. He is becoming well known in the Agile community through his speaking and running his local group the "Cheltenham Geeks'.