When Nathalie and I created CookiesHQ we knew two things: One, we wanted to create a great technical team, and this would mean recruiting people that might not be Bristol-based. Two, we wanted to create a great culture where people would be able to be productive and happy at work.

CookiesHQ gang on Sqwiggle

From day one, CookiesHQ has been a remote by default company since the beginning. In fact, a little bit by accident. I wanted to be able to work from home or work from the coffee shop, and still be able to communicate with the Nathalie without using my phone.

Today we have one full time remote developer, Julio, living in Seville and we’re looking for a second full-time remote developer. You can read about his remote working experience here.

We’ve had some freelance help coming from remote people as well.

We also have an office, but no one in the company is not required to come in the office. You don’t have to warn us either if you want to work from somewhere else today. You just do it.

We are remote by default… with an office

It’s easy to think remote working is when someone works for a company that is in another country, or like 200 miles away.

But there is more than this. You could create a fully remote team within the same city, if that would make sense for your business.

You are remote at the moment where you are physically separated from your colleagues.

This separation can be due to distance, but also on to preference. Some prefer to work from home, where they can concentrate on this big problem.
Or work from the coffee shop, and finish writing this blog post.

What’s important is that when you’re separated, you (can) keep in touch with the team.

What tools do we use?

We try to keep our tool stack as lean as possible.

What’s important for me is that I can have some quiet mode on any tool, so when I need to concentrate, I can enable the quiet mode, without turning them off.

Basecamp, unsurprisingly. We use it for client’s communication, general todos and calendar planning.

Pivotal Tracker, long-loved project management tool. I’ve tried a lot other new apps, but none come close. It’s easy to understand and it handles the estimation heavy work for you.

All our clients have access to their Basecamp and Pivotal tracker. Communication can happen in both apps, and the PM keeps track of them.

HipChat, as its name suggests, is just a chat collection of chat rooms. We have a CookiesHQ one, that serves as a water cooler where everyone is present, then we have a room per project, where only the related team members are invited. This way we try to minimise the distractions caused by the notifications. We also link HipChat to some auto notifications like Airbrake, CodeClimate, Codeship, Pivotal Tracker and Github. So any action will be logged in the relevant room.
A handful of our clients have access to their project’s chat room as well.

Sqwiggle, this one is the last tool we’ve added to our arsenal. It takes a snapshot of everyone every minute, using your computer’s webcam. Click on the snapshot and you’ve started a conversation. This also means you can replicate the headphones blocking system that a lot of developers use in an office:

  • 2 headphones on: don’t even think about disturbing me unless the server is on fire.
  • One headphone on: go for it if it’s urgent.
  • No headphones: yep, you can disturb me if you fancy.

Tmate.io, is also heavily used. When someone else working in the office asks a team member to have a look at their code, or help them with something it’s fairly easy for them to get up and sit down with the other person.
But if the person is remote, we will revert to Tmate.
It starts an ssh-accessible Tmux session on your computer. Give the generated ssh url to another person, and she can access your terminal.
From here, Vim is your friend!

Practicalities

When it comes to remote working you have a couple of practicalities to consider.

Hiring process

Before hiring someone, we want to judge 2 things:

  1. Their related area of work abilities (for example their coding expertise).
  2. Their level of engagement and communication.

Testing this starts during the hiring process.

After a first Google Hangout/Skype discussion with potential hires, we select a handful of them.

Each of them will receive the same test project. We expect this test project to take around 4 to 5 days to complete, and people will be paid for those days.

The test project is done in a way that they need to ask us questions if they want to complete it properly. The brief is somewhat sparse, and questions will need to be raised.

For this they are allocated an HipChat room each, where all our current team members are invited.

Doing it this way, ensures that we will start to have some level of chitchat, and we will be able to judge their level of interaction/communication on top of their coding abilities.

Contracts

If your new full time hire is in the same country as you, then this should not cause a problem as it will be a new employment contract.

If the person is not in the same country, chances are that it will make things a bit more complicated. We’ve opted for the full-time contractor solution. So people will send us an invoice at the end of the month.

What’s important on the latest scenario is to keep everyone on the same level as everyone else. So Julio, even if he is a contractor and not living in the UK, still has 25 days holidays, he can decide which bank holiday to take between the UK and Spanish ones, and he is paid on the same date as everyone else every month.

Communication, communication, communication

As a team you need to communicate if you don’t want people to get bored, of feel they lose touch with your company realities.

As a remote team it’s even more important.

When working on a project, we make sure to log everything in Basecamp and/or HipChat. Even if I have to ask a question to someone next to me, if the other person on the project is working remotely, the question will automatically be raised on HipChat and not by voice.

This has 2 advantages:

  • Avoid distracting the other person. She can pick it up when she is ready.
  • Make sure that everyone on the project has visibility of the question and the answer.

When discussing something, relative to the company or not, on a table’s corner, we try to log it into HipChat at well. We will never replace the usual office interactions. But in order to avoid remote ones to feel left out, we will always log what’s happening in the office. This include results of meetings, new leads calling/emailing, last joke project and so on.

Perks

When people spend more that 3 months with us, we offer a couple of, what we think are, valuable perks:

  • If you don’t have one, we will offer you a Kindle, as we have an extensive ebook library.
  • We will pay for your gym membership.
  • We will pay for your pension and life cover insurance.
  • You will be allocated a conference budget.
  • Cookies Lab: one Friday a month not spend on client work but only on self-improvement.

We haven’t found how to solve the pension/life cover issue for remote workers – as they are contracting it’s legally not possible, so they have to handle it themselves.
But for all other items, remote people will have access to them as everyone else.

Get together

The other perk remote people lose are the typical paid lunches, beer evenings. Again, hard to justify flying someone over just to have a beer!

But as Nathalie wrote earlier this year you should all get together time-to-time.

We will fly full time remote people once or twice a year for a week in Bristol. This includes payment for flights/accommodation and usually a nice meal once or twice a week.

Is it that easy? Is it worth it?

It’s certainly not easy. Both for the team and the remote.
You have to recruit the right people on both sides to make it work, and be prepared to let people go if the alchemy doesn’t take.

As a business decision, I’m sure it’s the best decision we’ve made. Every time we mention we are recruiting remotely, we have access to talents we would never have access too if we were staying in our Bristol circle. And this is the real benefit for me. Being able to recruit the best people we can afford, independently of their location.

Don’t hesitate to contact me directly if you have any questions or if you would like to work with us 🙂

Also if you have any experience with hiring remote junior developers please let me know how it went. This a step we haven’t taken yet and I’m still undecided if it’s a good idea or not.