RailsConf 2017

The Effective Remote Developer

The Effective Remote Developer

by David Copeland

The video titled "The Effective Remote Developer" by David Copeland, presented at RailsConf 2017, explores the challenges and rewards of being a remote developer. Copeland, who has been a remote developer for over four years at Stitch Fix, emphasizes the importance of being proactive in building trust and maintaining effective communication while working remotely. He discusses various mindsets and behaviors that can help remote team members stay connected and productive.

Key Points Discussed:

  • Understanding Remote Work:

    • Remote work often involves minimal face-to-face interaction, requiring individuals to adapt to various environments like home or coffee shops.
    • Effective remote work means producing value, feeling included, and having agency in one's role.
  • Building and Maintaining Trust:

    • Trust has a 'half-life' of six weeks, necessitating continuous effort to cultivate and sustain.
    • Copeland introduces four crucial mindsets:
    • Communicate frequently and clearly
    • Be responsive but set boundaries
    • Assume good intentions
    • Help others help you
  • Effective Communication Techniques:

    • Utilize chat systems, video conferencing, and proper microphone equipment to facilitate communication.
    • Adopt clear communication practices in emails and code reviews, ensuring clarity and sufficient context.
  • Engagement and Responsiveness:

    • Set clear working hours and promptly respond to communications to demonstrate engagement.
    • Emphasize the importance of providing detailed feedback and affirming others' contributions to foster a positive remote culture.
  • Socializing and Team Bonding:

    • Small talk and informal interactions are vital for building relationships in a remote setup.
    • Suggesting and participating in in-person meetups can help replenish trust and facilitate connections.

Conclusion and Takeaways:

The session concludes with the assertion that being an effective remote developer requires intentional actions, clear communication, and a commitment to fostering a trusting and inclusive environment. Remote work offers unique freedoms, but it necessitates diligence in maintaining relationships and collaboration with team members.

00:00:12.000 Well, thanks a lot for coming! My name is Dave Copeland, or Dave Tron 5000 on Twitter.
00:00:17.140 I'm going to talk about how to be an effective remote developer. I hope so! I spent the last four and a half years as a remote developer.
00:00:28.900 I was one of the first engineers at Stitch Fix, a personal styling service for men's and women's clothes. When I started, we were a very small, scrappy startup, and I was just writing code as one does in that situation.
00:00:43.690 However, due to the way we work at Stitch Fix, my role has changed over time. I was a tech lead of a small team and now I am a manager of several different teams.
00:01:02.590 I've worked with a lot of different people, not just developers. Certainly, I work with many developers, but I also collaborate with the business people who run Stitch Fix and the vendors that we rely on, all of whom have been remote.
00:01:15.970 This remote working situation is typical at Stitch Fix. We now have over 70 engineers, and most of the engineering work is done remotely.
00:01:29.350 Over half of the engineers do not live in the Bay Area. Although we're headquartered in San Francisco, most engineers don't live there.
00:01:43.690 Those who do live in the Bay Area certainly come to the office, but they don't necessarily come in every day—there's a lot of remote work happening.
00:01:58.899 So, what does it mean to work remotely? When I was thinking about this, it occurred to me that people work remotely a lot more than you might think. If you think about what that means...
00:02:16.070 You do not often interact face-to-face with the people you work with. It’s not a great sentence, but I think it gets the point across.
00:02:29.360 You go somewhere and do work; maybe that's a coffee shop, maybe that's your basement, and you work with people, but those people often aren't there.
00:02:38.360 That's the situation I mean by remote. If you think about it like that, you'll realize there's a lot of remote work happening in the world—not just with developers. We also have the 'lone wolf' remote experience.
00:02:58.899 This is the hard mode of remote work when you are by yourself, and everyone else you work with is at another office. However, we have 'easy mode,' where everyone is distributed and there is no office.
00:03:13.150 You could go to an office every day, have a commute, and sit at a desk, but if the people you work with aren't in that office, you are still a remote developer.
00:03:29.220 So, what does 'effective' mean? Obviously, producing some value is important—your company is paying you to do things, and you need to do them.
00:03:39.810 However, you also want to work on something valuable. You want to ensure that you’re focused on the right things—the things that are useful to others.
00:03:54.790 You also want to have some level of agency; you don’t want your job to just be closing JIRA tickets all the time. You want a broader effect on the team, the people you work with, and the company.
00:04:09.810 You want your experience to be rewarding. No one wants their job to feel meaningless, and to the extent that having a job is a necessity, you want it to be as rewarding as possible.
00:04:20.940 Now, I don't want to imply that you get these things for free just because you go to an office.
00:04:36.830 However, you do get some of these things automatically by being in the same physical space as your coworkers. The implicit level of effectiveness you can gain from being around others increases your ability to achieve these goals.
00:04:56.540 As a remote worker, you will have to work a little harder and be more intentional in your behavior to ensure that these things happen.
00:05:06.540 There's not a week that goes by that I don't think about my remote experience or the experiences of my colleagues, and it does require constant upkeep.
00:05:19.170 It is not what I would call easy; it’s not impossible, but it is part of my job to focus on making our remote experience good.
00:05:33.660 Who here works remotely most of the time?
00:05:40.289 It's totally worth it because you gain a level of freedom and flexibility that you do not get by having to go into an office.
00:05:55.570 I don’t have to commute anywhere at all. I can make lunch in my kitchen, which is stocked with my preferred snacks instead of everyone else’s.
00:06:04.960 I can work outside if the weather’s nice; I don’t have to use a public bathroom.
00:06:13.620 The best part about working remotely is that I don’t have to live in San Francisco.
00:06:23.590 My favorite thing is not living there. No offense to San Francisco, but I don’t want to live there.
00:06:37.260 The company benefits too. Stitch Fix is glad that I can make lunch at home, but they gain access to a wider pool of talent.
00:06:54.130 If Stitch Fix had decided that every engineer had to come into an office in San Francisco, it would have taken us much longer to build the team we have.
00:07:04.310 That would have made it harder to build the type of team we currently have, and it would have led to a significant impact on the company’s growth.
00:07:11.950 Because we committed early on to making remote work, we’ve been able to find talented individuals from all over the place.
00:07:27.150 There are exceptional developers who don’t live in San Francisco, and we have many of them on our team.
00:07:42.490 I want to emphasize that this talk isn’t technical; I won’t talk about Slack or anything like that.
00:07:56.790 You need to invest energy in building and maintaining trust with people you don’t know and with those that you do.
00:08:16.250 This constant effort forms the backbone of our success in remote working.
00:08:27.370 I want to share four mindsets that guide behaviors driving trust among team members. These are: communicate frequently and clearly, be responsive but set boundaries, assume good intentions, and help others to help you.
00:08:44.750 The first mindset is that you have the power to create a good remote experience.
00:09:01.170 However, we must briefly chat about technology. The biggest issue with being remote is that you’re not physically present.
00:09:16.010 You can't go to someone’s desk to talk; you must rely on technology to communicate.
00:09:29.080 So, you’ll need a chat system that everyone can use and check regularly. This is critical for effective communication, and it should be something non-developers can easily access.
00:09:44.200 You also need a video conferencing system that accommodates multiple participants. Tools must be user-friendly and include calendar invites.
00:10:05.680 A decent microphone is also essential. The experience people have of you is mainly through video conferencing.
00:10:17.800 You can’t control the crappy internet or awful software involved, but you can control your microphone input.
00:10:31.500 Your laptop mic is often inadequate. Apple earbuds are fine and like I mentioned, it’s about finding something that works.
00:10:47.350 Now, let's return to the harder part of building and maintaining trust. I want to talk about behaviors tied to various tasks we do as developers: coding, communicating asynchronously, engaging in synchronous discussions, and socializing.
00:11:05.290 When it comes to coding, remember that that’s what you were hired to do. Your outputs matter—they are your work product.
00:11:20.400 Think about what it’s like to walk into a room full of developers. They’ll be typing on keyboards, and the visual aspect creates an impression of productivity.
00:11:36.080 When you’re remote, there’s no visual indicator that you’re working. Trust needs to be built by showing that you produce results.
00:11:51.680 One approach is to break larger projects into smaller, manageable tasks. Find ways to deliver parts of your work quickly.
00:12:04.370 A small change is easy to understand and can generate quick feedback. This not only builds trust but also demonstrates your ongoing productivity.
00:12:19.260 You also want to think about how to communicate effectively about these changes. It’s essential that others understand what you’ve done.
00:12:34.120 When submitting changes, whether via pull requests to GitHub or another method, ensure you explain your work clearly.
00:12:48.360 Every time I document a change, I aim to structure it to provide clear insights into the problem I’m solving and my solution.
00:13:06.080 This way, even if it is the only chance for others to review my work, they will have the context they need.
00:13:26.830 Additionally, learning to screencast can be invaluable. In the early days at Stitch Fix, I didn’t have an easy way to share my work.
00:13:46.120 I would run applications on my laptop and screencast while explaining what I was doing. This method allowed me to communicate effectively without relying solely on written communication.
00:14:03.130 Learning to create effective diagrams can also improve communication. Both tools enhance your ability to convey information quickly and clearly.
00:14:20.490 Regarding responsiveness, setting boundaries is crucial. Start with setting your working hours, especially when working across time zones.
00:14:38.750 I include my time zone in my email signature, and I make my working hours clear in my calendar.
00:14:56.540 If someone schedules a meeting outside my working hours, I kindly let them know, as a way of setting boundaries without being rude.
00:15:13.660 When seeking feedback, be responsive. It shows you’re engaged and helps retain the context behind feedback.
00:15:30.700 It’s important not to develop a workflow that isolates you from communication.
00:15:47.510 When working, keep an eye on communication channels, as being unresponsive can alienate colleagues and limit your effectiveness.
00:16:04.990 Establishing trust takes time. Early in a remote setup, being responsive is crucial because it helps build rapport with your colleagues.
00:16:17.660 You should assume good intentions, especially regarding code reviews. These can be tough to accept, but it’s vital to approach feedback positively.
00:16:36.330 Remember, peer reviewers' comments are meant to improve the project overall, not to criticize you personally.
00:16:50.780 If a communication isn’t yielding a productive outcome, consider switching mediums, such as jumping to video.
00:17:04.810 Being specific when asking for feedback enhances the process; when you clearly articulate what you need, people can engage more effectively.
00:17:18.930 The same principles apply to asynchronous communication. Try to provide more context in your emails, sharing documents, or through texts.
00:17:32.950 Context is essential to convey messaging clearly, far more than in conversation.
00:17:45.560 Being a strong writer will serve you well both professionally and personally.
00:18:00.310 Take time to revise your messages, ensuring clarity and correct phrasing. Typography also matters; use paragraphs, headers, and bullet points.
00:18:14.340 Furthermore, diagrams can significantly aid communication, especially for complex topics.
00:18:27.930 Finally, in many instances, being responsive connects you to your coworkers and elevates team dynamics.
00:18:40.450 Affirming feedback is equally important. Praise should also be specific and detailed.
00:19:00.780 Such reinforcement fosters a collaborative culture and supports trust.
00:19:15.570 Assuming good intentions means everyone in your team can thrive together, despite different communication styles.
00:19:29.580 Regardless of how frustrating it can be, try to remain open-minded and give people the benefit of the doubt.
00:19:44.140 Help others to help you. Determine what feedback you want. This invites input into the work you do and strengthens relationships.
00:20:00.050 In async communication, provide clear questions or prompts to guide those interactions and yield better feedback.
00:20:12.380 Synchronous communication can be challenging. Sometimes it's easier to speak face-to-face rather than through screens.
00:20:28.840 To improve engagement in those situations, you need to be prepared with your contributions. Knowing your subject matter builds confidence.
00:20:47.430 When discussions happen, be sure to use nouns instead of pronouns. This minimizes confusion and improves understanding.
00:21:03.100 Pause frequently and ask the group for clarity. Engaging others in discussion yields fodder for more in-depth conversations.
00:21:16.560 It’s essential to resist multitasking during video calls. Such distractions lead to lost context and disengagement.
00:21:30.050 If interruptions occur, be transparent about needing clarity in discussions and invite pauses for questions.
00:21:47.620 Lead by example; watch for others who may be less willing to engage in conversations. Point them out for their insights.
00:22:04.110 Self-awareness is crucial in these interactions—always seek feedback to adjust and improve your contributions.
00:22:19.320 Empathy should also be part of the equation—recognize the struggles of others and support them.
00:22:36.130 Conveying the frustrations of technology during discussions can create a bond, as you all face similar obstacles.
00:22:51.650 When dealing with audio/visual issues during meetings, take on the role of facilitator and guide others.
00:23:10.160 If possible, find an ally within the organization to monitor back-channel communications and address issues without interrupting the flow.
00:23:25.090 Let's talk about socializing. In an office, people learn things about you through typical day-to-day interactions.
00:23:40.450 For remote workers, those interactions don’t happen naturally; you're going to need to make an effort.
00:23:54.560 Engage in small talk—weather is a safe topic to start with and can help bridge personal connections.
00:24:14.640 Consider scheduling informal one-on-ones with colleagues to build camaraderie, even without work agendas.
00:24:28.450 Socializing can also be challenging when you travel for work; be clear about the travel expectations upfront.
00:24:41.320 Express your concerns regarding travel in advance, as it may not be apparent to your employer.
00:24:55.320 However, if possible, prioritize in-person meetups to strengthen relationships, as these experiences replenish trust.
00:25:12.420 People can want to engage during in-person interactions; let them know you're open to sharing!
00:25:30.840 Don’t shy away from being genuinely open, but also recognize that you can protect your boundaries.
00:25:42.640 Travel is just one example; you can suggest a meeting to have coffee if you find coworkers nearby.
00:25:56.290 Be creative in your efforts to build relationships.
00:26:11.320 Ultimately, take initiative in proposing social events or opportunities to meet in person.
00:26:27.690 All these little moments build trust, and when trust is established, you'll be more effective at your job.
00:26:44.320 The focus should be on frequent communication, responsiveness with clear boundaries, assuming good intentions, and helping others help you.
00:26:59.740 I invite you to connect with our company and to share experiences about remote work.
00:27:13.000 We can offer more insights into how we foster a successful remote work culture.
00:27:30.360 Thank you for your attention!
00:27:47.130 Let's take a moment for questions.
00:27:57.050 When there's social events and business talk happening together, that could be challenging.
00:28:10.240 It can be difficult to get to know your company's culture from afar, but asking direct questions can be helpful.
00:28:23.050 Establishing a good visitation frequency can vary; I started doing every two months.
00:28:39.050 Currently, the team meets every three months, and this seems to work well.
00:28:57.350 Thanks a lot, everybody!