A couple of years ago I'd become quite interested in martial arts.
Hours upon hours of watching "The Karate Kid" growing up must've taken their toll on me...
And so, I found myself at this smelly little gym, joining my first couple of karate practice sessions.
(By the way, my "Mr. Miyagi" wasn't the fatherly philosopher from the Karate Kid movies—our sensei was a complete geek, working a day job as a Borland Delphi programmer somewhere. I liked him.)
So anyway, here I was at this dingy gym, working hard to learn how to count in Japanese and getting my hand-eye coordination under control...
(You know, karate practice actually feels more like learning to dance than learning how to fight. At least when you're a beginner.)
Moments later my friend kicks me in the face because I turned left when I should've turned right—
My interested in karate waned quickly after that.
Yeah...I'm a lover, not a fighter.
Why am I telling you this? Well, the question came up in a recent email exchange: "How does one MASTER the skill of programming Python?"
I like to think mastering programming as a skill is quite similar to mastering a physical skill like karate. (Although I've had more success with the former.)
Here, let me explain.
With both, it takes a long time to build up the right foundation. But once "muscle memory" starts kicking in, your progress can skyrocket. It's all about making it through that first rough patch of slow learning progress without losing your motivation.
Mastering a programming language means lifelong learning. The topic is fractal—there's always a way to expand your knowledge in some obscure way. One can hit critical mass in terms of knowledge and be called an expert, but it's unlikely a single person will "know it all".
A seasoned programmer acts deliberately and with an economy of movement that a beginner can't yet understand. Biological differences like age, "IQ", play less of a role. The more experienced dev still codes circles around the eager newcomer.
There's road maps but no "one true path" to mastery. Learning progress will depend highly on the motivation and drive of the individual, and the peers they surround themselves with.
Mentorship and community play the biggest role in becoming successful in the long run.
That's the most valuable benefit you can get from joining PythonistaCafe.
Mastering Python is *not* just about getting the books and courses to study—you also need a way to stay motivated and grow in the long run.
And the sad truth is:
It's a lot less fun to build your Python skills completely alone.
Many Pythonistas are struggling with this—
Some have a non-technical day job or are self-taught. And with no coders in their personal peer group, they have nobody to encourage or support them in their endeavor of becoming a better developer.
Some are already working as developers, but no one else at their company shares their love for Python. They can't share their learning progress or ask for advice when they feel stuck.
In both cases, what holds these developers back is their limited access to the Python coding community.
Existing online communities and social media don't do a great job at providing that support network either:
Stack Overflow is for asking focused, one-off questions. It's hard to make a human connection with fellow commenters on Stack Overflow. It's about the facts, not the people. (e.g. moderators freely edit other people's questions and answers etc. It's more like a wiki than a forum.)
Twitter is like a virtual water cooler and great for "hanging out" but it's limited to 140 character messages at a time. Not great for discussing anything substantial. (I feel similarly about Slack chat groups.)
Hacker News is for discussing and commenting on tech news. It doesn't foster long-term relationships between commenters. It's also one of the most aggressive communities in tech right now. Completely open, little moderation, and with a borderline toxic culture.
Reddit takes a broader stance and encourages more "human" discussions than Stack Overflow's one-off Q&A format. But it's a huge public forum (millions of users) and has all of the associated problems: toxic behavior, overbearing negativity, people lashing out at each other, jealousy, … all the best parts of the human behavior spectrum.
When I looked critically at my own Python training offerings I also noticed a gap:
These days I'm often getting 80+ emails every week asking me Python questions. I really try to reply to every single email but it's gotten to the point where that's not really sustainable anymore.
I do offer private coaching over Skype at the higher end, but I know that due to the price that's not accessible to everyone either.
Both of these are based on 1-to-1 communication. Which means they don't really "scale" all that well.
Also, they don't provide the long-term support and sense of community important for sustained growth.
That's why I started PythonistaCafe.
PythonistaCafe is an invite-only, online community of Python and software development enthusiasts helping each other succeed and grow in a friendly and supportive setting.
We're a diverse group of Pythonistas from all walks of life, living and working across the globe.
Some of us are self-employed freelance Python developers. Others are senior developers with years of experience that just switched to Python from another language. Others again are hobbyists and Python beginners that are just getting started on their learning journey.
What connects us is a shared love for Python and the goal to improve our skills as software developers, business owners, and employees.
And we all benefit from being a part of the PythonistaCafe "virtual village" and the sense of community it gives us.
To become a PythonistaCafe member, start the application process at the link below:
— Dan Bader