Mathias Rosenthal - Fotolia
David Copeland, director of engineering at Stitch Fix, is an advocate for allowing software developers to work remotely and offers a method for how to do it effectively.
Copeland leads nearly 90 developers at Stitch Fix, a San Francisco-based personal shopping and style service. He's been with the company more than four years and has spent that time working remotely from Washington, D.C.
As director of engineering and senior-most contributor to Stitch Fix, Copeland interacts daily with developers, users, business people and vendors, he said, noting that of the nearly 90 developers on staff, more than half of them do not live in the Bay Area -- and those that do, don't come into the office every day.
Moreover, as the third developer hired by Stitch Fix, "Me and developers one and two decided we were going to make remote [development] work because I was not moving to San Francisco, Copeland said, speaking at the recent QCon New York conference.
"They get access to a wider pool of talent," he said. "There are a lot of really amazing developers that don't live in Silicon Valley," he said, adding that "there is always more work to do than there are engineers."
"Remote staffing in software development has become very common as the quickest path to scaling a development team," said Rhett Dillingham, senior analyst of cloud services at Moor Insights & Strategy. "Software development has become further suited to remote work as collaboration tooling has improved, for example with GitHub, JIRA and Slack, and as open source development has grown the culture of global scale development norms -- for example, in projects like Docker, Kubernetes, Cloud Foundry and OpenStack. DevOps has followed this trend in that the operations-focused roles have been further enabled for remote work as the tooling has enabled more seamless development and operations collaboration."
DevOps requires flow and feedback to succeed
In the DevOps world, the principles of flow and feedback are key as companies need to constantly bring new business value to the market to remain competitive.
Rhett Dillinghamsenior analyst of cloud services, Moor Insights & Strategy
"That kind of work requires constant communication and creativity," said Mik Kersten, co-founder and CEO of Tasktop Technologies and creator of the Eclipse Mylyn project. "I've noticed that full remote and asynchronous modes of work are insufficient. Even if we could get all the developers into a single location we could never get all product managers, support and other staff into the same space. Yet collaborating across those team boundaries is what DevOps is all about. So now we ensure that all planning meetings are done with video conference to level the field between local and remote team members."
Tasktop also brings its people together for regular face-to-face meetings to foster the relationships that help make great teams, Kersten said.
"This gives us the best of both worlds, in terms of leveraging the talents of remote staff, while fostering cohesive and highly collaborative team structures," he added.
Remote developers must master communications
The element of trust is crucial for remote development, Copeland said. And remote developers need to have four mindsets to build and maintain trust communicating frequently and clearly, being responsive but setting boundaries, assuming good intentions of their co-workers and helping others to help the remote developer.
"You really have to double down on being good at communication and being clear and building relationships and trust with people," Copeland said in an interview. "Because if you don't trust somebody they're going to think you're a talking head."
Copeland noted that a base level of technology is required for remote developers to be effective. A chat system is required, he said, as well as a video conferencing system that supports multiple users and a good microphone for each user.
Regarding synchronous communication, Copeland said, "I hope that we have holographic telepresence someday," but until then seeing each other on screens will have to do.
Often, remote developers like Copeland are among an organization's top development assets. Grady Booch, an IBM fellow and chief scientist of Watson/M at IBM, works remotely from his home in Hawaii and has been doing so for years.
Booch told TechTarget the requirements for successful remote development include:
- the ability to communicate clearly, concisely and confidently on all technical matters;
- tools that make possible a sense of presence -- throughout a day Booch is on Slack, he's texting, he's taking various Zoom meetings, and is an active presence to his team;
- time for opportunistic and personal connection, because meeting face-to-face from time to time and developing a trusted connection is essential; and
- management support.
Maintain a focus on shipping products
"[Working remotely] is not a thing where you just install Slack and everybody's good," Copeland said. "You have to constantly upkeep your remote experience."
For instance, when coding, remote developers should try to turn big projects into smaller ones so they can get their work out in front of people more often and demonstrate a cadence of productivity. Remote developers should also learn to screencast and diagram, Copeland noted.
In addition, remote developers ought to consistently show that they are driving toward shipping things and avoid spending hours heads down on anything, Copeland said. They instead should develop service-level agreements or SLAs for all forms of communications.
Remote developers must also be willing to travel to meet with other team members, he said.
Asked what advice he had for lead developers, Copeland told the audience at QCon, "I would say finding a way to drive things to completion expediently. Remote or not, getting things done, showing a result that is demonstrable and clear is super important. Because talking about a result is way better than talking about a theoretical thing you can do."
Video conferencing is on the rise
Team collaboration success with chat apps
Cloud tools enhance remote developer productivity