I have a lot of feedback forms on my website - for getting people to submit questions about Dialogflow, to feedback for getting course discounts, to testimonials for my courses etc.
In one of these forms, I ask about the challenges when it comes to learning Dialogflow from the official documentation.
Here is how someone responded:
100's of hours later, I am still learning and trying to figure out the information for the gaps in the tutorials
But you don't have to waste those 100s of hours.
This article will give you some tips on learning Dialogflow. Now, this is what is generally called a "meta" article. You won't learn Dialogflow, but you will "learn how to learn" Dialogflow.
So obviously it cannot all be technical. 2 of them are about mindset, 4 of them about process and the last one is about getting help.
Since quite a few non-programmers send me comments, reviews and other feedback about my Dialogflow material, I have been noticing a couple of patterns which relate to mindset.
1 Lower your expectations, especially at first
This might amuse you (or not!), but it is actually quite important.
Most of the non-programmers who make the most progress are not stating that they want to have a day job as a coder in a month.
Instead, they say things like:
"I want to be able to communicate better with the developers on my team"
"I want to get a better understanding of the end-to-end flow of a webhook"
This is very different from expecting that you should be able to code the entire webhook after going through a course for 3 days. Some people could do that, but its quite unlikely.
But you don't have to permanently keep your expectations at that level either. Once you get more confidence in what you are doing, it is almost a certainty that you will start picking up the skills you need for coding a webhook much more quickly.
2 Keep calm
Maybe you are thinking "It's all easy for you to say. I have to learn Dialogflow in 2 weeks and submit a report to my boss."
While I can't do anything about your external circumstances, I can tell you things you should avoid.
Here is an email I got from someone (student #1) who took my Dialogflow for Non-programmers course:
I did try your course to enable fulfillment by accessing data in a database. It has not worked no matter what I try. From uploading the .csv into restdb.io, obtaining the database url (DBURL) and API_key for the runkit.com publishing of your web hook, and doing some other iterations, it has not worked. Any suggestions? when I type in what is the color of earth, it responds with the fallback intent.
He is clearly in a hurry. At this point, he is the opposite of being calm.
Am off to try your weather api example and if I cannot get that to work, will sign off and head over to other youtube videos.
And then he goes on:
Thanks though for at least trying to wade into this thicket of creating webhooks for dialog flow chat bots by accessing a 3rd party database.
Then he comes to his conclusion:
I have yet to find someone who has successfully gotten fulfillment to work.
And finally, not completely unexpectedly, he says:
Who knows...it might just be dialog flow.
Now, there are some people who say "If the student doesn't understand, the teacher has failed". While that is somewhat true, I think there is an implicit assumption that the student is fully relaxed when doing the learning. It is very rarely the case.
As a contrast, here is another non-programmer student (student #2) who went through the same course:
This course provides a great insight for non-programmers. Its easy to follow and allows a non-programmer to understand how Dialogflow can be used. It was easy to follow and work through on my own. I had a few outstanding questions, Answers were provided via consultation - all really easy to follow and clear.
The same person (student #2) left a review for what I think is a highly technical course:
The course is targeting programmers, but as a no programmer who works with programmers this course is perfect... it provides an overview, well explained concepts and frameworks, and not too technical to follow. As with all other courses on MBD, I find it easy to follow and understand.
What is the difference?
I don't have a crystal ball. But if I were to guess one thing, it would be that student #2 was more relaxed as she was learning the stuff, while student #1 was already stressed by the time he took my course.
So you have persuaded yourself to start with lower expectations, and you have also put yourself into a somewhat relaxed state of mind for learning (I have a tip for this below).
Next, I suggest following a process.
3 Break it down into smaller chunks
When learning anything, it is helpful to break the subject down into manageable chunks.
For example, the current approach that Google uses to explain Dialogflow is quite bad, IMO. All kinds of concepts are presented all at once, and I have received plenty of feedback from readers that this has been their biggest challenge when learning Dialogflow.
I have been stubbornly following the same progression : intents -> entities -> contexts -> webhooks from the time I started creating articles on this site. In addition, each concept is presented independently.
When you break it down into smaller chunks, it becomes easier to learn the subject.
4 Prioritize understanding over "hot" technologies
Did you know that the very first tutorial that Dialogflow (when it was still API.AI) used for explaining webhooks was based on Python, and had a single-click deploy to Heroku?
Now, everything is geared towards the Inline Editor and using NodeJS.
For beginners, and especially non-programmers, this presents a really steep learning curve.
For one thing, the inline editor uses something called Firebase Cloud Functions, and Cloud Functions has been evolving very quickly over the last year or two. And sometimes in backward incompatible ways. As a result, nearly every tutorial you find which uses the inline editor will have some aspect which doesn't work correctly today. Firebase Cloud Functions came out of beta and became generally available only in August 2018.
So when I created my webhooks course, I went in the complete opposite direction and fully low tech. 🙂
My suggestion is to understand the concepts using simpler technologies instead of whatever is the current flavor of the day.
I am not saying you shouldn't learn hot technologies - sometimes that is the only way to stay relevant and there are also times when it is the best way to attract talent, investments etc. Instead, I am suggesting that you learn using old, boring (a.k.a stable) technologies, and then adapt that learning to newer technologies as you go.
5 Follow a system
I have actually created an entire learning path for someone who might be interested in Dialogflow.
Whether it is the best sequence, I don't know [although obviously I believe so 😉 ]
But you do need a sequence. It will drastically simplify your learning, and also help you keep track of your progress.
6 Track and reduce errors
Here is a tip that I wish I had followed when I was learning how to code.
You don't have to do anything very complicated.
Have a note taking app open as you are learning the material - e.g. OneNote, EverNote - something which allows you to paste in HTML formatted content copied from a webpage quite easily. Don't use Notepad.
Almost certainly, something will not work as expected when you are learning about webhooks.
When that happens, make a note of
a) what you are trying to do (e.g. type in a URL into the fulfillment editor)
b) what you expected would happen (Dialogflow will accept the URL)
c) what actually happened (Dialogflow rejected the URL with some mumbo-jumbo error)
After a while, you will usually figure out what went wrong. At that point, make a note of
d) what caused the error (the format of the URL matters)
e) how can you avoid this mistake in the future? (don't skip typing in the https in front)
Now, you may never again come back to read these notes. It doesn't matter. It will still help you a lot. Over time, you will be able to write down these notes a lot more quickly.
I would especially recommend this if you find that you are getting stressed and cannot relax as you are learning.
The last tip is about not trying to do everything by yourself.
7 Get a coach/mentor
It might actually be even better to get a friend who is at the same level and wants to learn the same stuff (within the same sort of timeline), but that might be a bit challenging.
If you don't have that option, I would suggest getting a coach or a mentor.
One important benefit of having a coach is that they will be able to see what you are doing with an outsider's perspective. When you are writing code, it is so easy to get completely caught up in what you are doing. That is why sometimes the best thing to do is to leave the desk, go and do something else which doesn't require thinking, and then come back to your work. You can sometimes immediately see your mistake, because you are not as caught up in the work!
When I was in grad school, a friend from another department came to me and said "Aravind, I have been looking at solving this small thing in my code for two days and I cannot figure out what is wrong". I took a look for a few minutes, and spotted that the code was missing an if condition, and it worked.
How did I know what to look for? I hadn't written any code exactly like what he was working on before.
But over the years, as a programmer, you build a sort of imaginary toolbox of "patterns" you use to solve problems. I had run into the issue he was facing in other code I had written, so it wasn't very hard for me to see what was missing.
If you are wondering where to find a coach/mentor, I can help.
I am working on a Dialogflow training program for non-programmers, which will probably begin around end of Feb 2019. It will be a combination of self-paced online course work, plus hands-on help.
Here is the announcement I sent about this to my email list:
The training will consist of the following:
1 You will be building a series of 5-6 practical chatbots using Dialogflow [note: I mean bots which are focused on a specific, meaningful task, which doesn't correlate with whether it is commercially viable]
2 The self-paced video training component consists of instructions for building the bots, which will be dripped out within the course (1 chatbot a week)
3 During the week, you will follow the video training and build out the bot
4 If you have any questions about the bot, or you get stuck, we will have a 1-on-1 Skype call (which you can schedule according to your availability) and I will help you fix any issues you face so you can move on to the next chatbot.
5 The fastest you can do it will probably be in about 6 weeks. But the training is designed so that you can do it at your own pace, and don't have to worry about falling behind. (Although, I do expect you to finish it inside a reasonable timeframe).
A few things to note:
- I have figured out a system which makes it reasonably easy for people who don't have a programming background to build these chatbots
- You will be working with backend data for each of these chatbots - these are not trivial bots
- You will be able to build your own Dialogflow bot prototypes after going through the whole training
- The training will help you clear many of the "gaps" you have in your learning around Dialogflow webhooks
- Obviously, you should be willing to devote at least a couple of hours a week towards the course
If you are interested in enrolling, you can fill the form to get on the waiting list. If you apply before Feb 15th, you will get a (minimum 25%) discount when I open the training program.