Building a collaborative and lightning-quick DevOps organization is a complex (but critical) business mission today. The technology industry is filled with a host of best practices that promise to help companies achieve this objective. Some of it makes a great deal of sense, but much of it guarantees mediocre results and organizations simply can’t afford to be half-good when it comes to DevOps. Here’s how you and your team can achieve real DevOps progress.
1. Encourage specialization
There’s a lot of talk that developers need to be full-stack generalists with expertise from the front end to the back end. That’s ridiculous; there are very few people who are good enough at everything to deliver across-the-board breakthrough innovation.
I support specialization, but not narrow specialization that chokes off cutting-edge possibilities.
Full-stack developers must be full-empathy developers. That means understanding the entire pipeline from idea to customer feedback on running systems. Dev and Ops should not be on different sides of the fence.
They need to be good at their respective jobs but aware of each other, demonstrating mutual empathy, appreciation and respect. And this is true in many industries, including music. When Run-D.M.C. and Aerosmith decided to collaborate on remaking “Walk This Way,” Run-D.M.C. didn’t have to become rockers or Aerosmith rappers. They stuck to their specialty with deep context about the other in a way that allowed them to collaborate for a stronger output together.
2. Innovate with cross-training
The best way to ensure we’re nurturing full-empathy developers is to ask them to walk a mile in other people’s shoes.
One approach to do this is cross-training. Have the Dev team sit and work with sales, support and customer service to take in lessons learned from these other departments. This way, the Dev team can bring knowledge back to its department and go forward with a changed business perspective.
Several years ago, when I was at CustomInk, I took my team to Etsy so they could learn how others outside our company did their work. And our learning increased. Since then, Etsy has cross-trained its developers with Twitter. Collaboration is effective, whether it’s a simple, one-off brown-bag lunch, or a more involved one-week immersion.
Target developed The Dojo, an approach to building new technology muscles that brought people in from all over its organization. New practices and new workflows are learned, as well as new ways of doing project management. After completing a project in the Dojo, people return to their individual departments in the company richer in knowledge and inspired by new ways of working.
Hosting Demo Days is another great example of how to share your work and show others what can be done. It allows anyone who has developed a new feature within an organization to present it to his or her peers on video. Adobe and Chef each run Demo Days, and so does Comcast.
3. Make sure management plays a new and different role
Too many times, management and the Dev team are engaged in an us-versus-them conflict or a management-versus-practitioner standoff.
Management has to be the support system that provides the team with an understanding of overall business context, business goals and objectives as well as business risks—all of which extend beyond the team’s work. Management has to help the team fully grasp its importance when it comes to the success of the organization. Most significantly, management has to give the team the autonomy to succeed. They must set goals and metrics with the team—not for the team.
4. Break down silos—really and truly!
I support specialized work, but silos are a real problem. It’s all about business context. If I’m in a silo and need something from another department, I go up the chain of command to my manager. He or she then goes across to another business vertical and interfaces with its top manager. Then the request goes down to my counterpart on that side, and the cycle continues.
This is wasteful, inefficient and dysfunctional. We need to build bridges between mid-level practitioners. It’s about the entire system, not just local optimization.
5. Think of investment in new and different ways
There’s a real difference between Dev and Ops. Dev strives to build an elegant solution, and Ops strives to build an efficient solution.
An efficient solution lets you restart an app at 3 a.m. with minimal impact on the customer. An elegant solution looks at the features that are failing and keeping people up at night and prevents the problem from the start.
Investments come in different forms. In some cases, it may be beneficial for the organization to take on a technical debt to invest resources elsewhere and ship a new feature sooner. In other cases, organizations need to invest in people, putting employees first through team building and career growth initiatives.
6. Work the distributed workforce
Collaborating in the same conference room is great, but, given the global talent market today, organizations need to embrace a distributed workforce and think distributed first. It’s not productive, for example, to have an organization-wide video chat with 80% of the team in the room at headquarters and 20% orbiting in different locations. At Chef, we have company-wide video Happy Hours so that everyone’s involved in the party, wherever they’re based in the world.
If you take the proposed steps I’ve outlined to heart, and then put them to work, you stand a much better chance of creating and sustaining DevOps excellence within your company.