"Acknowledging you don't know something is the dawning of wisdom" - Charlie Munger
That can be difficult to do at times in the software world. If we don't know something, (it is almost expected that) we say nothing, look it up, read a Wikipedia page, and come back to the conversation with an air of having known about the concept all along. I have this visualization of xkcd comic where time is paused, there is dash to the keyboard, unpause time, start nodding. I can't seem to find it now, but I know I've read this hilarity before!
In doing this pretending, sometimes we fool ourselves too. We squash the desire to go back and actually understand concepts at a deeper level. As developers we do have to walk a fine line. I wrote about abstraction and the constant need to be able to make use of something without understanding it fully. Suppressing curiosity at times is a necessary part of being an efficient get-things-done kinda developer. Other times we do have to dig deep to figure something out, especially while debugging. Where things are not working according to our expectation, pointing to a likely gap in our current understanding (OR a silly typo!). And these times can actually be enjoyable if we can put on a learning mindset and allow for actual wisdom to seep in!
I like the idea of pulling at threads to understand something deeper in my spare time. But this is not very efficient. There are only so many things I can get through in a week or month before I get exhausted or distracted.
Thinking out load here: what if we could do this in a distributed way with a group of like-minded independent developers.
A group of developers can decide on a shortlist of concepts they'd all like to learn at a deeper level. Then divide the list among themselves, each person can research a concept or two and the group can meet regularly to share their learning with everyone. Hm. This could work. Couple things come to mind that would make this beneficial for all:
- We all focus on collaborative understanding (no self-promotion or boasting) - So really practice articulating the concepts clearly. The teacher's goal is to ensure the learners really get it and have that aha movement. So that everyone can be nodding their heads by the end, for real this time.
- We focus on topics that are foundational to doing software building work. This seems preferable than focusing on a specific language, library or framework. So HTTP, SSL, DNS, Caching, Databases, Networing Protocols, Webhooks, Browser internals for web developement for example.
This could be interesting. Hm..to get a group of developers together for a learning circle. Okay this will be added as a kernel of another idea that I only have time to document but not implement, for now.
Hey if you happen to read this and think 'I would love to be a part of a developer learning circle', send me a message.
In my experience good things come from connecting the dots.