Answering questions as a learning technique
Whenever I’m planning to seriously invest an amount of time into a new technology, framework, library, or API, I try to immerse myself in the community.
Community forums, whether they’re old-style phpbb forums or Discord, provide a great way to understand whatever it is you’re working with. It should be relatively obvious that they’re the best place to get your questions answered, so I’m not going to focus on that. Instead, I’ll focus on a learning technique I’ve used my whole online life: answering questions.
If you start answering questions people have, it’ll help you identify common problems people run into. By replicating the conditions they’ve encountered to run into their problems, you’ll be exposed with more use cases of the tool. Some may make sense, some may not. The amount of documentation and internals you are exposed to through helping others debug is far greater than for the use case you yourself have.
When I first got into the Elm community, there were many questions around integrating with React, or using Elm headless (i.e without rendering). I wasn’t particularly personally interested in either use case at the time, but I was sure it was possible. So I figured it out, put some examples on Github, and shared it with the people curious about it.
I didn’t think about it much after that, but it turned out to be invaluable in the near future where I worked on a project using a React library for rendering, but I wanted as much of the developer experience of Elm as possible. React was used as a rendering layer, but all the data transformations were in Elm. Later on, my exploration with headless Elm would eventually lead to server-side Elm. If I hadn’t gone out of my way to help strangers on the internet with their questions, I wouldn’t have gained that obscure yet useful knowledge.
For the creators of the tool, this is a winning combination. More people are able to help others learn the tool, while also providing life to the community, and creating champions who will spread the word about the tool.
So next time you’re working with something new, consider finding where the community hang out, and start answering some questions.