Chatbots Are Changing the Way Work Gets Done
When I was a teenager chatting on IRC (Internet Relay Chat), I enjoyed playing text-based role-playing games. These were delivered through programs called “bots,” which would connect as regular IRC users and respond to specially formatted commands like !status to check one’s character. I even got into mIRCScript and wrote some of my own, prototyping the code by hand in the back of my high school notebooks.
Fast forward to the present, and bots are still alive and well. Their range, and the richness of the functionality they can offer, has expanded. Discord, Slack, HipChat, Rocket.Chat, Twitch—they’re on numerous platforms. Let’s look into why they are so popular, and how we at Project Ricochet use them to enhance our productivity.
Why not just use a web application?
Chatbots reduce context switching.
One of the most compelling reasons for chatbots is that they reduce the amount of context switching—that is, switching between different tasks and applications. A developer who is otherwise immersed in code but needs to check something quickly can fire off a command to the bot, get the information, and go back to what they were doing in seconds. They probably already have the chat client open, and the cost to their focus is much lower.
Chatbots can share information with everyone.
When information is tucked away behind websites, sharing that information requires you to get everyone to go there, or for you to take and share screenshots. Chatbots, on the other hand, can reply to requests—say, for ticket information—in-channel, so that everyone can see what you’re talking about. Disagreement about the forecast? Ask the bot for the forecast. (Disclaimer: That might not actually solve the disagreement.)
People resist new tools.
Unless applications are mandatory or very compelling, people often resist adoption. And making too many applications mandatory may hurt productivity. Chatbots walk a fine line by being very accessible and by essentially advertising themselves. Every time someone publicly uses chatbot functionality, it reminds others that it can be done and helps with adoption. It is a virtuous cycle.
Chatbot uses
When it comes to what chatbots can offer, the sky’s the limit. Chatbots are limited only by the platforms they are on and the underlying programming code. Let’s take a closer look at a few use cases for chatbots.
Games
We’ve already looked at one use: games. This is a common application for bots on Discord and Twitch. Games played with the help of bots are usually text-based.
Event streaming
Chatbots can also pull information from multiple sources and share it with people who need to know. For example, many Slack integrations exist to post new Bitbucket pull requests, JIRA ticket updates, and other project-related events into the Slack channel for team collaboration.
Data lookup
Sometimes, team members or users in chatrooms may want to ask the bot for something, such as the weather. In that case, they may type something like forecast 90210. The bot would then reply with the current weather forecast for Beverly Hills, California. In the background, the bot often sources this data from external services, such as the DarkSky API.
Real-time notifications
A particularly useful application for chatbots is informing chat members when ongoing events become relevant to them. For example, the bot may combine the API of time-tracking software with that of a project management system such as JIRA and notify a developer when they are within certain thresholds of ticket estimates (e.g. 50%, 75%, 100%, 125%, etc.). The bot can also inform the project manager, in case they need to follow up with the developer.
Administration and access control
Chatbots aren’t limited only to data consumption. Chat administrators and privileged operators may also issue commands to make common actions quicker. For example, on IRC, channel operators often used !kickban-style commands to eject disruptive users from their channel, rather than assuming channel operator privileges or applying ban masks manually. The bot would figure it all out, and it typically possessed channel operator privileges itself.
When it comes to access control, many Discord servers manage member roles through bot commands. Sometimes members can self-assign specific roles, and sometimes administrators do it. (Roles on Discord typically control which channels members can see and type in.)
Writing our own chatbot in Elixir
Our colleague Konrad has blogged about Elixir before (here and here). You can read more about its history and features there. The main reason I mention Elixir here is that we have been using it to build a “team bot” that helps us stay on track with client and stakeholder deliverables and more. Elixir’s many libraries, such as Hedwig, have allowed us to rapidly iterate on chatbot functionality.
Current features include:
- Getting notifications when we’re getting close to get JIRA ticket estimates (both developers and PMs), and nagging us every so often when we’re over
- A meeting concierge that messages us with a link to our next meeting 5 minutes before and a button to switch our timer to that meeting
- Checking project commitments of team members for the week
We have many more ideas: for example, features around managing our JIRA ticket flow, code review process, searching our knowledge base, and so on.
Pitfalls to avoid
No project is without considerations, and chatbots are the same. There are a couple of things you should think about when building one.
Confusing UX (User Experience)
A chatbot’s UX is important:
- Is there a help command? Does it give useful advice?
- Are the commands easy to remember? If they are difficult, people won’t use them.
- Do people know the bot exists?
- Can people interface with it easily? (For example, newer or less technically savvy Slack and Rocket.Chat users might not know that various commands are available when one types a forward slash.)
Too much information
It is important that the bot provide information that is useful for the people requesting it. If it is too verbose, people will avoid using it to get that information, or other members may complain of it polluting the channel. Careful consideration of where information appears and what information appears is important.
You can always respond to a member in a direct message instead of in-channel if the information is not needed by the whole channel. HeyTaco! sends taco updates by direct message, for example.
Over-eager bots
Finally, make sure that the text your bot responds to is specific enough that it does not respond, seemingly randomly, to normal conversation. No one wants to have the bot suddenly respond with the API status when asking the people in the channel for a status update.
The future of chatbots
As artificial intelligence (AI) and machine learning (ML) continue to advance, we will see chatbots employ them more and more. Some companies, like Facebook and Microsoft, have already been experimenting with this, though it still seems to be a bit too soon (both projects ultimately failed).
However, even without AI, chatbots provide incredible utility on a platform where people already are, and they can enhance everything from community interaction to team productivity. The integrations and use cases are only going to expand.
Project Ricochet is a full-service digital agency specializing in Open Source.
Is there something we can help you or your team out with?