Hi Jeremy,
Bot technology is in its early infancy. There aren’t any best practices yet, which is why I felt compelled to write this article on bot…
Hi Jeremy,
Bot technology is in its early infancy. There aren’t any best practices yet, which is why I felt compelled to write this article on bot protocols.
The biggest challenge when building bots is the overwhelmingly huge decision tree that must be implemented. Even for very simplistic scenarios, when building a bot we have no other technology to hide behind. Everything is laid bare, out in the open.
A heroic programmer could take a swag and implement a bot that could attempt to follow certain decision tree, but the problem is, even if the first cut works flawlessly, maintaining that bot would quickly turn into a nightmare.
The first cautionary sign that things are going to hell in a basket is when you spot the dreaded ‘pyramid of doom’ — if-elsif statements that go many nested levels deep. Those are the worst, because they are the breeding ground for software bugs. Having to deal with the pyramid of doom is a surefire way to dig ourselves deeper and deeper into the hole. Difficult to debug, almost impossible to reason about, prohibitively expensive and risky to modify and maintain, pyramid of doom is to be avoided at all cost.
But what’s the alternative? Some people would say deep learning, neural nets, etc. Those technologies help us eliminate the horrors brought about by the imperative pyramid of doom. Sure, that’s great, but there are two issues with neural nets/deep learning:
Those technologies are still on the fringes, not mainstream, possibly expensive and extremely resource hungry (i.e. minimum 1,024 multicore CPUs)
Businesses tend to be weary if asked to rely on a service that is implemented using some weird ass fuzzy logic. No one knows why a neural net behaves the way it does, nor does anyone know how to roll up their sleeves and fix any glitches, which will inevitably occur.
So we’re back to hand coding. Unlike web apps, where we’re privileged to enjoy a very nice declarative REST framework, we don’t have such fortune when it comes to building bots. With bots, we still have to start from scratch and build everything from ground up.
I have created my first cut for a bot-centric development framework which aims at avoiding the pyramid of doom and exposes declarative bot programming syntax. However, this framework is still in the early alpha stage (although it’s showing good promise).
Sorry, I wish I had better news for you…