$30 off During Our Annual Pro Sale. View Details »

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

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. Building A Remote Engineering Culture
    Jon Chan
    Stack Overflow

    View Slide

  2. 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

    View Slide

  3. 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

    View Slide

  4. Why remote?
    @jonhmchan

    View Slide

  5. 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

    View Slide

  6. 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

    View Slide

  7. 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

    View Slide

  8. Remote is flexibility
    @jonhmchan

    View Slide

  9. How we do it
    @jonhmchan

    View Slide

  10. 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

    View Slide

  11. 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

    View Slide

  12. People
    Finding and enabling people is the groundwork
    @jonhmchan

    View Slide

  13. 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

    View Slide

  14. 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

    View Slide

  15. 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

    View Slide

  16. Remote starts with people
    @jonhmchan

    View Slide

  17. Culture
    The philosophy that drives remote
    @jonhmchan

    View Slide

  18. 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

    View Slide

  19. 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

    View Slide

  20. 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

    View Slide

  21. A remote culture means inclusive empowerment
    @jonhmchan

    View Slide

  22. Communication
    Break conversations out of who, when, and where
    @jonhmchan

    View Slide

  23. 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

    View Slide

  24. 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

    View Slide

  25. 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

    View Slide

  26. Public artifacts allow for remote communication
    @jonhmchan

    View Slide

  27. Extreme remote
    @jonhmchan

    View Slide

  28. 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

    View Slide

  29. 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

    View Slide

  30. 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

    View Slide

  31. Florence, Italy
    A day in the life of a nomad
    @jonhmchan

    View Slide

  32. 6:30 AM Wake up
    I wanted to go to Cinque Terre for a hike
    0 Hours Worked
    @jonhmchan

    View Slide

  33. View Slide

  34. 7:00 AM Train to Cinque Terre
    I ended up doing a day trip, working on the train
    0 Hours Worked
    @jonhmchan

    View Slide

  35. Catch up on emails and docs
    With all that time, it was easy to catch up
    0 Hours Worked
    @jonhmchan

    View Slide

  36. 9:00 AM Arrive at trailhead
    You already have two hours of work in
    2 Hours Worked
    @jonhmchan

    View Slide

  37. View Slide

  38. Go hike for two hours
    You can go town to town in that time
    2 Hours Worked
    @jonhmchan

    View Slide

  39. View Slide

  40. 12:30 PM Grab lunch
    Still have two and a half hours
    2 Hours Worked
    @jonhmchan

    View Slide

  41. Write some code locally
    Yes, I brought my laptop with me on a hike
    3 Hours Worked
    @jonhmchan

    View Slide

  42. View Slide

  43. Take a train to the next town
    It only takes about 15 minutes if you decide not to walk
    3 Hours Worked
    @jonhmchan

    View Slide

  44. 1:30 PM Go to the beach
    I still have an hour to kill before I need to return
    3 Hours Worked
    @jonhmchan

    View Slide

  45. View Slide

  46. 3:00 PM Train to Florence
    I get another two hours on the train to work
    3 Hours Worked
    @jonhmchan

    View Slide

  47. Write some more code
    Picking up where I left off from lunch
    5 Hours Worked
    @jonhmchan

    View Slide

  48. View Slide

  49. 5:00 PM Arrive in Florence
    All my individual work done for the day
    5 Hours Worked
    @jonhmchan

    View Slide

  50. 6:00 PM Meetings
    Two hour block to do meetings with New York
    5 Hours Worked
    @jonhmchan

    View Slide

  51. 8:30 PM Dinner
    Start writing up my notes for teammates
    7 Hours Worked
    @jonhmchan

    View Slide

  52. View Slide

  53. 9:30 PM Send notes to team
    Day is finished and you can still get a drink if you want
    8 Hours Worked
    @jonhmchan

    View Slide

  54. 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

    View Slide

  55. Q&A
    @jonhmchan
    Slides will be tweeted

    View Slide