As software engineers, We are knowledge workers. We build software and learn so many things. Learning shouldn't stop for us. There are so many technologies and solutions that exist today. Sometimes, learning a new "thing" can be overwhelming and stressful. At least, I sometimes feel it. In this post, I will talk about a practical learning method I used and succeeded in.
What is question-based learning
Say, for example, your team wants to use "Kafka" for event streaming. But, you are not familiar with it. The first thing you do is google for some resources. You find a lot of content but don't know where to start and how much content is sufficient. You feel overwhelmed to see the huge resources and procrastinate to start. Sometimes, we blindly read through all the resources and still feel like not learned anything. I used to feel like this. When we think practically, we don't need to learn everything. We need to scope the learning to the extent of what is needed. To figure out a sufficient portion of the topic, we need to come up with some questions. These questions tell you that you don't need to overwhelm or stress yourself, you just need to figure out the answers to those questions. So, it's more like a hunting game. You have questions, now you are searching for answers. It's more fun now!
Let's come back to our example. These are the questions that are needed when getting started with Kafka.
- What is Kafka?
- What problem is it solving?
- What are the basic principles, common terms?
- What are the use-cases?
- How does it fit into our use case?
These questions are enough when we are getting started. Let's say, we started implementing the project. Now, we need to go in-depth. Then, we can frame questions like this
- How partitions are stored in the disk?
- What are offsets?
- What are consumer groups?
- Can a consumer in a consumer group subscribe to multiple partitions?
- Can a partition be subscribed to by multiple consumers?
In a nutshell, the idea is not to go in-depth at the beginning. Learn only what is required. Believe me! this method had changed my way of learning a lot. It is pragmatic, intuitive and powerful. With this method, I feel confident about what I learned because it's like a hunting game. I hunt for answers to my questions.
If you liked this post, show your appreciation through the emojis and follow me for more content on software engineering.
Thanks for reading :)
Did you find this article valuable?
Support Lokesh Sanapalli by becoming a sponsor. Any amount is appreciated!