I’ve been a software engineer for over 16 years. As a Principal Engineer in a research group in a fortune-50 organization, I get to work on a variety of interesting projects ranging from Blockchains and VR to AI and Machine Learning. Parallelly, I also helped start (and currently manage) the Philadelphia Google Developers Group, a community around Google technologies ranging from mobile development to cloud services, for the last 10 years. In both these roles, not only do I have to learn new technologies fast but also share my learnings with other developers so that we can all be productive faster.
One of my constant frustrations in either role was watching junior engineers struggle with learning new technologies and concepts. But whenever they asked me how to break into programming jobs and learn software development all I could point to them were big books that even I never read or really long videos that most people never watched. Code camps or tutors are an option but only for a few who can afford it.
The idea of using a chatbot came to my mind about 4 years ago. A chatbot could be a really great tutor for a variety of reasons:
- Unlike a book or a video, it could adapt to your needs by skipping over concepts you are good at and focusing on those you need help with
- It could employ the best learning techniques like spaced-repetition to anchor programming ideas into your mind
- Carving time for learning is often hard, so It could live on your phone and could be used when you were on the go (I hadn’t planned on the pandemic changing that lifestyle though 😱 )
Most of all I wanted the experience to be fun, something that you looked forward to instead of dreaded.
However, the journey took much longer than expected. While there are numerous chatbot platforms like Facebook and Telegram, none supported the interactive elements that I needed, like a simple code editor or flashcards
On the other hand, while there were numerous tools to build chatbots, most of them assume small interactions with the user (like finding a restaurant or booking a ticket). I was planning to build a whole course that was distributed over chat.
Three years later I am reasonably happy with what I have. I ended up building a lot of software: a platform for authoring conversational books, a custom scripting language that lets me add interactivity and conversational dialog, and a Flutter+Firebase-based mobile app. Whew!
In the next few posts, I’ll share the details of some of these components and the capabilities they have enabled. I have a lot of ideas for Jax and would love to share and get some feedback on them as the project evolves.