Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Building A Remote Engineering Culture - Jon Cha...

Building A Remote Engineering Culture - Jon Chan - Agile SG 2016

Presented in Agile Singapore 2016 conference

Agile Singapore

October 07, 2016
Tweet

More Decks by Agile Singapore

Other Decks in Technology

Transcript

  1. My TL;DR Stack Overflow Marketing Engineering Lead I think about

    growth and re-engagement across the company and what people think about the Stack Overflow brand. Bento Founder I’m interested in making it easier to become a self-taught developer. I think about how to democratize tech education. Other things Diversity & Inclusion Partnerships at Stack Overflow Creator of Descartes.io @jonhmchan
  2. Agenda 1. Why remote? We believe that remote work is

    the future of talent. There are so many different advantages to having a remote team. 2. How we do it At Stack Overflow, remote is part of our DNA. Here are the different things we’ve done to make remote possible. 3. Extreme remote I’ve personally taken our remote policy to an extreme. I’ll give you a look into what it’s like to be nomadic while working full time as an engineer at Stack Overflow. 4. Questions Ask me anything. Also, I would love to keep in touch and answer any questions you may have in the future. I’ll let you know what the best way to get in touch is. @jonhmchan
  3. Things to think about Talent Having a remote workforce gives

    you access to amazing talent. It also makes your workforce resilient to change. Productivity We think that remote, when done right, can make engineering more productive. Flexibility and autonomy do wonders. References On Working Remotely, Jeff Atwood Why We (Still) Believe in Working Remotely, David Fullerton @jonhmchan
  4. Talent Engineering talent is rare There is 1 programmer for

    every 5 jobs. There aren’t enough programmers to fill all the jobs, including the ones you have open. Diffuse the competition Restricting your talent pool to people who live within a 50 mile radius of you makes hiring extremely competitive. Expand. Getting untapped talent There is amazing engineering talent in areas where there aren’t great engineering jobs. Being that opportunity for them is huge. Resilient to change We don’t lose talent to big changes: partners needing to move, needing to travel back home, or other life events. @jonhmchan
  5. Productivity Flexibility == Performance Being remote means you give people

    the ability to control their work environment and optimize their own productivity. Private office We believe engineering needs uninterrupted time to work. Private offices help with that, and working remote is even better. Better time spent Remote means a really short commute, flexible hours, and working when you are most productive. Managing for results It’s easy to think butts in chairs means “work.” Remote forces managers to think about what people produce, not time spent. @jonhmchan
  6. Background Pretty big and everywhere We’re at around 300 people,

    with offices in New York, Denver, and London. 25% remote overall, 70% in engineering all over the world. We started remote Our co-founders started remotely, and our first few engineers were in different cities as well. Remote is something we began with. @jonhmchan
  7. What to think about People We believe that remote is

    a people-centric problem. These are the things we look for and how we set up people for success. Culture Remote can only be done well when everyone is bought into it. Making it part of the culture keeps everyone on the same level. Communication Keeping everyone informed is tough, and it’s even tougher when you’re talking about remote. These are the tools we use. @jonhmchan
  8. People Hiring We think you can hire for remote. Shift

    your thinking away from managing accountability and really focus on hiring right. Onboarding Onboarding is difficult at any company, but remotely it’s even harder. Setting people up for success remotely is key. @jonhmchan References Guerilla Guide to Interviewing, Joel Spolsky
  9. Hiring Hire instead of manage You can’t be looking over

    everyone’s shoulder all the time. So you have to try and find people that work well remotely. Two kinds of people When left to their own devices, some people will get anxious if they’re not doing anything and others will simply drift. Gets things done Not everyone is great at remote. If someone chooses remote, we look for people who are proactive and self-starters. Look for history. We have offices too For those people who aren’t great at remote, we also provide the option. It’s about letting people choose and supporting them. @jonhmchan
  10. Onboarding Set up for success Once you find good people,

    you need to educate them on the culture and familiarize them with the tools. Infrastructure is key. Stack University All engineers go through a 6 to 8 week checklist of tasks to finish. It consists of remote meetings, pushing code, and reading docs. Having a (remote) mentor Every engineer that starts with the company gets a mentor who is also an engineer. It’s usually their first remote relationship. Best equipment $ can buy Every remote gets a headset, standing desk, ergonomic chair, and high-speed Internet subsidy. We make home like the office. @jonhmchan
  11. Culture Everyone is remote It’s very important that we think

    of ourselves as a remote-first company. It makes everyone feel like they’re on the same level. Empowerment Being unable to do your work independently of others will make remote working a nightmare. Empowering engineers is key. @jonhmchan References Empowerment Organizations, Jon Chan
  12. Everyone is remote Nobody “on speaker” Have you had the

    experience of having people in a conference room and everyone else dialing-in? We don’t do that. Virtual Social Spaces Remote work can lack the casual social interactions people need. We created virtual spaces for “bev” bashes and other events. Physical meetups For engineering, we typically fly them in for a meetup about once or twice every year. We have one large annual meetup for product. Non-engineering teams It’s important for teams that work with engineering to be remote-first too. Communication means collaboration. @jonhmchan
  13. Empowerment Gridlock Being highly dependent on others to get things

    done means things are slower. This is worse if you’re in different places and times. End to end engineering What do you do is allow engineering to be able to work end-to-end. That means control from ideation to production. Infrastructure Fast deployments, feature flagging, and automated testing means you can do a lot of work independently of others. Trust Giving this freedom means you trust your engineering talent is smart. This is the other half of “Smart & Gets Things Done” @jonhmchan
  14. Communication Asynchronous tools It’s difficult to get a lot of

    busy people to the same time and place to communicate. It’s even harder remotely, so stop trying to. Public by default Transparency is a key part of our ability to be remote. That means we think of information as being available to everyone by default. @jonhmchan
  15. Asynchronous tools Get out of when and where We emphasize

    written record whenever possible. It’s really hard to coordinate across many regions, so artifacts are key. Chat Our primary mode of communication is internal chat. Having a record of conversations helps catch up if you’re absent. Video Chat When you really need to talk face-to-face, Google Hangouts is our primary platform. Zoom for larger groups. Usually recorded. Docs and Trello For project management, we rely heavily on Google Docs and Trello for writing up specifications and keeping track of tasks. @jonhmchan
  16. Public by default Get out of who As a company,

    we value transparency and almost all information is available to others. Access enables autonomy. Weekly standups The few times we really are synchronous, it’s our regular weekly standups. Each team has a record of it that is public. CEO Report Every week, weekly standups get bubbled up into a CEO Report that is emailed to everyone at the company. Details are in links. Back to empowerment Not having the information you need because others own it fails to empower you. Public by default means you get what you need. @jonhmchan
  17. Pushing remote to the limit Hello World! Starting in August

    2015, I ended up traveling while working full-time for over three months. It was treated as an experiment. Going nomadic The idea here was that if we already have a great culture of remote, why stay in a single place? The same principles still apply. @jonhmchan
  18. Where I went New York, USA Dusseldorf, Germany Berlin, Germany

    Barcelona, Spain Sitges, Spain Paris, France Marseilles, France Aix en Provence, France Milan, Italy Lake Como, Italy Florence, Italy @jonhmchan Siena, Italy San Gimignano, Italy Pisa, Italy Rome, Italy Vatican City Hong Kong Taipei, Taiwan Taichung, Taiwan Hualien, Taiwan Los Angeles, USA San Diego, USA
  19. Nomadism 22 cities in 3 months I rarely stayed in

    one city for more than a few days. The only exceptions were in Los Angeles where I was staying with family. Preparation I ended up doing a lot of homework to make this happen. It meant taking all the things we did remotely and 2x committing. My work day Half of my workday would be spent doing individual work like coding, writing. Other half would be dedicated meeting time. Global time zone 10 AM to 2 PM Eastern Standard Time is a pretty good timezone in Europe and in Asia. That’s when I had my meetings, except Fridays. @jonhmchan
  20. 6:30 AM Wake up I wanted to go to Cinque

    Terre for a hike 0 Hours Worked @jonhmchan
  21. 7:00 AM Train to Cinque Terre I ended up doing

    a day trip, working on the train 0 Hours Worked @jonhmchan
  22. Catch up on emails and docs With all that time,

    it was easy to catch up 0 Hours Worked @jonhmchan
  23. 9:00 AM Arrive at trailhead You already have two hours

    of work in 2 Hours Worked @jonhmchan
  24. Go hike for two hours You can go town to

    town in that time 2 Hours Worked @jonhmchan
  25. 12:30 PM Grab lunch Still have two and a half

    hours 2 Hours Worked @jonhmchan
  26. Write some code locally Yes, I brought my laptop with

    me on a hike 3 Hours Worked @jonhmchan
  27. Take a train to the next town It only takes

    about 15 minutes if you decide not to walk 3 Hours Worked @jonhmchan
  28. 1:30 PM Go to the beach I still have an

    hour to kill before I need to return 3 Hours Worked @jonhmchan
  29. 3:00 PM Train to Florence I get another two hours

    on the train to work 3 Hours Worked @jonhmchan
  30. Write some more code Picking up where I left off

    from lunch 5 Hours Worked @jonhmchan
  31. 5:00 PM Arrive in Florence All my individual work done

    for the day 5 Hours Worked @jonhmchan
  32. 6:00 PM Meetings Two hour block to do meetings with

    New York 5 Hours Worked @jonhmchan
  33. 9:30 PM Send notes to team Day is finished and

    you can still get a drink if you want 8 Hours Worked @jonhmchan
  34. Thing I learned It can work The experiment was successful,

    and I’ve been nomadic three times now. If the infrastructure is in place, nomadism can work. Most productive at night When everyone is asleep and not doing anything, this was when I was most productive. It also meant stable internet at home. Stay in one place longer I was most productive when I was in a place for more than a week. It let me plan correctly and concentrate for longer periods. I’m not on vacation Even though I was still putting in a full day’s worth of work, I had to remind my coworkers that I wasn’t on vacation! @jonhmchan