Teaching and mastery
The reference to mastery in this blog title is mostly ironic, as I would readily admit I am definitely not a master of Python and indeed very far from it! That said, I certainly aspire to this sort of intangible concept of mastery.
This idea comes from a place of seeing software development/engineering as modern day craft, and the historical career progression of craftsmen in the European guild system from apprentice, to journeyman and finally to being a master1.
As someone who didn't start off their software engineering career through any formal training, I find this way of thinking about my skill progression both helpful and unhelpful. Having no qualifications that confirm I've been tested to a standard as a software engineer, I think of myself as a journeyman. Having broken through the apprentice phase of learning, I'm now confident writing Python and understand the basics. However, being a journeyman is a rather large grey area. I can definitely do stuff but I wouldn't consider myself an expert, and I'm hungry to learn more and expand my Python skills. That's not to say being a master or expert is a static position where you've learned everything, but perhaps those labels are merely aspirational. Or indeed as a wiser colleague than me once remarked "someday you'll find that the next wisest person from you leaves and suddenly everyone is asking you for advice".
So, on this rather unclear trajectory towards mastery comes what I would say are the tremendous benefits of sitting down and teaching a topic. Teaching is actually a rather large part of my role as a research software engineer, whether that be one-to-one advice to students, or larger more formal workshops we run. When I first took Python workshops I was quite apprehensive, as teaching felt like a real test of my own knowledge. Thankfully, our courses are based on the great resources from the Carpentries and have been honed many times by very experienced educators.
Now, I really enjoy teaching Python. I find it a unique opportunity to have to unwind everything I know that I've learned through my weird and winding journey and share it with others. Sometimes I don't know stuff, or find a concept hard to explain, and will have to go off and recover something I thought I knew. This only ever helps me learn (or relearn) crucial things I thought I knew. I like to think that act of teaching is actually helping make me a better Pythonista because every student comes with a different perspective forcing you to clarify your own understanding of concepts.
So on your path to /mastery/ take the opportunity to teach if you can, it's scary but fun and will make you better!
-
https://en.wikipedia.org/wiki/Master_craftsman ↩