How ChatOps helps your team ship software better
I had an interesting discussion with a fellow developer about ChatOps and its benefits for the teams making software. During our conversation, I realized that even though people have heard about ChatOps (or chatbots, which is a more sexy buzzword right now 😉), it isn’t very apparent how this practice could help teams ship software better.
It’s fun to interact with a chatbot, give it commands and see it do all the boring work for you. But what if you had to explain to your team (or a boss) why you want to take the time off to work on such an entertaining task as chatbot?!
What is ChatOps?
Let me take a moment to briefly explain what is ChatOps? ChatOps, a term coined at GitHub, enables teams to operate their repetitive and usually boring tasks from within chat. Behind the scenes, it’s an application that receives text-based commands from the chat participants, analyzes them, then runs a set of predefined scripts and finally responds back with results, usually back in the chat.
There are a number of open-source chat implementations written in a variety of programming languages. Some popular ones are Hubot created by GitHub and written in JavaScript, Lita written in Ruby, and Err in Python. Most of them support multiple chat systems, such as Slack, HipChat, FlowDock and Campfire. Almost all provide a way for 3rd party services to easily add their integrations, thus further extending the number of operations available in the chat.
In the past couple of years, with the advancements in machine learning and natural language processing (NLP), ChatOps took a whole new dimension, making the bots more intelligent and less human-dependent. Additionally, companies that have chat-based products, such as Slack, Microsoft Teams, and Facebook Messenger, started to provide their own APIs and SDKs to help developers write the bots for their platforms.
For instance, at Dockbit we’ve built our primary interface to operate software deployments on our platform with the Slack’s Bot APIs. Over 70% of all our deployments are currently run from Slack, as opposed to clicking the Deploy Button in the Web app — users love it!
What’s the deal?
So, what are the real benefits for the software teams to invest in ChatOps? Let me summarize the reasons why I think ChatOps will help your team ship software better.
Forces to automate tasks
The number one benefit, which is more of a prerequisite for taking the ChatOps into use, is that it forces you to automate repetitive tasks. All those manual, creepy scripts that your team has created over time (and rarely documented), now have to be put into a central place, consumable by the chatbot.
Reorganizing and refactoring the scripts that power your infrastructure brings a lot of value. Not only it reduces your team’s technical debt, but it also makes your entire software release process more reliable and efficient. Automating common operational tasks is your first step towards continuous software delivery and shorter feedback cycles.
Eliminates fear
Once you’ve got the automation in place, developers and other people involved in your team’s release process will start shipping features more frequently, with less fear of breaking stuff. Instead of going through a number of manual tasks, which is error-prone, it’s now as simple as giving the bot a single command, entirely automated behind the scenes.
During some 10+ years in software development teams, I have experienced firsthand how developers tend to delay releasing features. They over-engineer things in order to avoid the complex process of deploying software established in their organizations. ChatOps could eliminate the fear and let your team ship software more often.
Fosters collaboration
One of the main reasons why team-based chat systems became so popular in the recent years, is their ability to foster collaboration in the teams. Magic things happen when the information about your internal processes appears in the same place, available to everyone in your team.
People start having conversations around the problems that arise and collaboratively come up with their respective solutions. In many cases, due to the asynchronous nature of communication, it’s more productive to discuss things in a chat than holding a regular meeting. The feedback you receive is more constructive, concrete and has the real context — information delivered by the chatbot.
Makes things easier to find
After having the tasks run from within chat and hopefully fruitful discussions around them, you’ll start noticing that you suddenly have this central place of everything what’s happened.
Most of the chat systems today provide rich search interfaces, bookmarking and even advanced exporting features to help you find things quicker. It’s definitely easier to look for things in the chat than going through threaded email conversations and detailed system logs. And if you’re worried about the “noise” produced by the chat messages, you can always isolate operations in their own chat rooms.
Boosts productivity
Obviously, the biggest benefit of having ChatOps is your team’s productivity boost. With gained automation, confidence, collaboration, and transparency, every developer in your team will certainly enjoy not only building features, but also being responsible for shipping them.
The features will be delivered in smaller increments, resulting in less errors and faster build-learn-measure cycle, thus making your entire team more productive and users happier.