The culture of email has always been a challenge for me. With the ever-growing list of different collaboration channels, across roles, services and tools, all being funneled into a singluar system, I strongly believe email as the one tool to-rule-them-all doesn't work for the demands of a modern product development organization.
For a brief moment, my design team decided to evaluate Slack as a meaningful alternative. In only just a week, it was truly amazing to see how much fun we were having already, whether it was the rampant use of Giphy and/or emojis, or the fact that we could continuously joke with each other at all times of the day, on any device (contrasted with the belief that most people don't enjoy really writing email on mobile).
At the heart of all this, we felt that it was the Slack Bots that were the stars of the show. Besides the built-in Giphy and slackbot, we found other ones to keep things interesting, such as a Foursquare bot to tell us where the closest donut shop was or a Poll bot that helped us decide where to eat lunch.
The more we used the bots, the more interested I became in writing my own. Coincidentally, our team was also just starting to think about natural language experiences for Windows, which further piqued my interest in understanding the Slack bots inner workings.
"Learning-by-making" is an essential part of my design process, so I decided to dive right in and write my own Slack bots to help answer these questions:
- How did it all work and what was possible?
- How smart could it be?
- What expectations do consumers have?
- How should developers think about meeting these expectations?
- What was the developer workflow?
- Where did this fit in relative to digital assistants like Siri and Alexa?
I felt these were important to answer not only for my own curiosity, but also to help our design team ramp up on the experiential and technical nuances of bots, assistants and AI in general.
I quickly stumbled upon Botkit, an open-source toolkit for creating bots. At the time, it was the most popular way to build bots for Slack, despite not being from Slack (although strongly endorsed). I then used it to create two bots:
- Gossip Bot - bot that loved to hear gossip but only would tell you random tidbits (code on GitHub)
- Meeting Bot - bot that told me if my colleagues were in a meeting
The insights I gained in understanding Botkit's approach to building bots was invaluable for my future work on natural language experiences:
- Intents, slots and dialogs are the lego blocks to building natural speech apps.
- The magic behind bots and digital assistants are technically not all that different.
- Building a bot Slack means you can build a bot for any other platform.
- Bots are usually single-purpose, with suspended disbelief on what it tasks it can complete. Digital assistants on the other hand are unrealistically expected to work with human intelligence, which usually leaves us disappointed.
But I couldn't just keep these things to myself. So I decided to share my insights with our design team through a Bot Workshop.
The workshop was a huge success - by the end, each participant built their and modified their own Slack bot, understood the developer workflow and were aware of the experience ramificiations ahead.
I finished things up by sharing my development experience on Medium, as a way to give back to the community and give big kudos to Botkit.