DevOps Guide

How to Achieve DevOps Success

It can be tempting to rush to implement a DevOps framework, especially if your current software development process isn't functioning as well as you'd like. Resist this impulse—as Greg Jacoby says, “Because DevOps is a conceptual framework, if you don't set it up properly, it's useless.” If you want DevOps to work in the long run, you have to ensure the changes you make are sustainable. Here's how.

First Things First

Before jumping in, it's important to evaluate whether DevOps is the right solution for your organization. “Sometimes your use case doesn't match with what DevOps has to offer,” says Gaurav Murghai. “DevOps is great for projects where you're consistently rolling out changes and updates, but it's not as suited for maintaining a piece of software that you're not changing in any meaningful way.” If you determine that DevOps is the right approach, start asking some questions about your system and identifying your pain points. You might think about:
  • What are you trying to accomplish?
  • What are the stages in your current software development life cycle? Who is responsible for each stage?
  • In what ways does your production process help you achieve your goals? In what ways does it prevent you from accomplishing them?
  • What barriers to productivity are you facing?
  • In an ideal world, what would your software development life cycle look like?
Understanding what is and isn't working in your current system will help you define your DevOps goals and guide your implementation process.

Pick One Project

The easiest way to begin implementing DevOps is to start small—pick one project or one development sub-team to start experimenting with DevOps processes. “Starting with just one project allows you to get a feel for DevOps and gradually scale it up,” says Greg Jacoby. And don't rush to buy a bunch of shiny new tools—at least not yet. Give yourself a chance to experiment using the tools you have. This will allow you to identify any gaps and prioritize purchasing software that you'll use. You can also try out open-source or freemium software to test what works well for your team before committing to any purchases. DevOps is, most importantly, a mindset change, so the most important thing is to start thinking as one team. Define common goals and encourage everyone to be open to new responsibilities and ongoing learning as you begin your experiment.

Visualize Your Team's Work

To improve your workflow, you first need to understand it. You can do this by visualizing your projects—identifying the stages in your software development life cycle and observing work as it flows through them. Here's where you should consider investing in a project management tool if you're not using one already. If your project is small, you might be able to get away with sticky notes or colored index cards on a wall, but this only works well if your team all work from the same location. At best, it's a temporary solution that won't be able to scale. Project management tools like Backlog enable you to track project progress, log issues, and perhaps most importantly, visualize your team's work through Kanban boards, Gantt charts, and burn-down charts. (And did we mention that you can get started with Backlog for free?)

Remove Constraints and Bottlenecks

Once you've logged and visualized your projects, take some time to observe your progress. After you've collected a few weeks' worth of data, you can begin to think critically about your process: Where is work being held up? What is causing these bottlenecks? What actions might you be able to take to minimize them? One frequent cause of bottlenecks? A lack of slack time. People might think they're working at their most productive when they're constantly preoccupied with projects because they feel busy, but that's not true. Staff who are too busy cause slowdowns because they aren't ready to start completing new work when it's handed off to them. If your team faces frequent bottlenecks, identify where these constraints are happening and think about how you can build in more time between handoffs.

Standardize and Automate

Another way to improve flow, increase cycle speed, and reduce error is to standardize and automate recurring tasks. This is particularly important because, as Netflix notes, “Ownership of the full development life cycle adds significantly to what software developers are expected to do. Tooling that simplifies and automates common development needs helps to balance this out.” Remember the “pets” vs. “cattle” server models? One big advantage of treating your servers like cattle is that the process of configuring new ones is easy and repeatable. People who played no role in setting the initial server up can look at the code to understand what the infrastructure does. If errors occur, they are consistent across all devices, instead of unique to a particular machine—making them easier to fix. Think about other recurring tasks that you can automate. You should try to script repetitive tasks wherever possible to free up your engineers to solve more complex problems.

Keep Learning

DevOps is iterative. The goal is to work in short cycles so you can get feedback quickly and continuously improve not only your product but also your process. The longer you do DevOps, the smoother your process becomes. Push yourself to keep learning new skills. Never used a scripting language before? Now is a great time to learn. “Even if you don't need it to do your job, knowing a scripting language can help you with so many small tasks,” says John Debs. And that doesn't just apply to scripting—stay open-minded and make ongoing learning an integral part of your DevOps practice.

Possible DevOps Pitfalls

Even though the results are worth it, the path to DevOps isn't always smooth. Here are some of the most common challenges that teams implementing DevOps face and some thoughts on how to fix them.

1. Reluctance to Change

Developers can sometimes be a little territorial—having to share responsibilities that were previously their domain alone can take some getting used to. The Fix: Emphasize knowledge sharing. The more everyone learns together, the easier collaboration becomes.

2. The Wrong Tools

“Having the right toolset is important,” says Gaurav Murghai. “It drives the team's enthusiasm and willingness.” The tools you think will work at the beginning of your DevOps journey might not be the best fit for your team—and that's okay. It's all part of the process of learning and improving. The Fix: Take note of your pain points. What is your team finding frustrating about your current tools? Look for software that fills those gaps and take time to evaluate which solution(s) fit your needs best—not which one is cheapest or flashiest.

3. Technical Debt

It can be so tempting to make a quick, easy fix and tell yourself you'll go back to it later. But this is contrary to the ethos of DevOps—all it ends up doing is piling up more work for yourself and slowing down processes in the future. The Fix: As good as your intentions might be, you have to be realistic. “You're never going to have time to go back and fix it later,” says Daphne Reed. “Do it right the first time.”

4. Cost

DevOps makes it extremely easy to harness more computing power in seconds. But this might mean that you spend more on server space than you intend—or have budget for. Even though these are virtual machines, they still cost real money. The Fix: Keep a careful eye on your server costs to avoid unexpectedly high bills for your provider.

Conclusion

“People don't want to give up what makes them valuable,” says John Debs. Remember the systems administrator from the introduction? He wasn't patching machines individually because he wanted to—he was reluctant to give up the very quality that made him valuable to the company. DevOps may provide the solution: While the role of the traditional systems administrator has all but faded away, many former sysadmins have moved into development roles, adopting new skills while sharing their operations expertise. DevOps practices promote knowledge sharing, so the whole engineering team becomes more valuable over time. That's a win for everyone.

Ready to start implementing DevOps?

Get started with Backlog, the all-in-one project management app for task management, bug tracking, and version control. Effortlessly collaborate with Wikis to capture your project details, custom fields to personalize your workflow, and file sharing. Backlog's built-in Gantt charts, burndown charts, and Kanban-style boards make it easy to visualize your project progress, allowing you to quickly identify constraints and optimize your workflow. Deploying small, frequent changes is simple, too—Backlog is fully integrated with Git and SVN so you can manage source code right next to your projects. With mobile apps for iOS and Android, you'll never be out of the loop, even when you're on the go. Try it for free.