TLDR: There is a great demand for Python skills. There are also lots of ways to learn.
How does the saying go? The best time to learn Python was 20 years ago. The second best time is now.
That's not quite true, Python was a niche language 20 years ago. Today Python is ubiquitous and one of the top languages used to develop applications, analyze data, create predictive models, manage servers, and more.
A common question I get these days is: what is the best way to learn Python? I'm going to answer that with a staple of data science, a decision tree. The answer really depends, but after teaching Python to thousands over many years, I have a few opinions on the topic.
(Full disclosure: I make my living selling snake oil. I literally tell and enable people to do amazing things with Python that cure most ails.)
Are You a Corporation?
First things first. If you are a corporation, treat your employees well, and consider corporate training. There is something to be said about getting a team together and having them work through training together. (I said work because training can be intense). Your team will be on the same page at the end of the day. Training will fill in their knowledge gaps. They can address any issues or questions they have immediately with a knowledgeable instructor. Good trainers can facilitate discussions that bring out customers issues and solutions to those quickly.
Here is a quote from a manager at a large video company:
“Nice breadth, very practical, easy to follow along. Everybody loved it. We already used some of the skills to debug two different production issues. Awesome!”
Seriously, invest in your employees. Here is a common complaint. I talk to many companies that spend money on on-demand courses (full-disclosure: I have created content for many of these courseware providers), and while the content may be good, most employees are not motivated nor incentivized to go through it. The employers are not getting the value out of these courses. This is a typical criticism (in fact, most if not all of my clients have on-demand courses in addition to live training because they want their employees to have certain skills and most employees do not do on-demand.)
One more thing to consider with live corporate training. Not all corporate training is the same. Who would you rather have training you? Someone who is a professional slide reader? Or someone who has worked with the technology for 20+ years and also has had extensive experience tutoring, teaching, and writing?
Going with a quality trainer who has in-the-trenches experience and teaching skills can make a big difference. I generally only train on material that I have used as a consultant or as an employee.
If you are not interested in MetaSnake's offerings, reach out, I know a bunch of other quality trainers that also have more experience than just reciting Powerpoint presentations.
The Best for Individuals
How bad do you want to learn Python? I've come across countless people who claim they want to learn Python, but are not willing to invest anything to get results. The best results come from having a coach to identify weak spots and provide advice and practice to improve those faults.
You have probably never heard of the coach above. His name is Brandon Payne. Still at a loss? His client is likely the best shooter in basketball history. Steph Curry has won NBA championships, MVPs, and made an amazing 100 three pointers in a row. Why would he need a coach? In Steph's own words:
I appreciate [Brandon's] perspective on things — everything from watching game film and cutting it up to advice and direction on reaching my full potential... And we created a vision for where I wanted to be in terms of ballhandling, footwork, balance and, of course, accountability.”
A coach is a partner who can help with reaching full potential and perhaps more importantly accountability.
Those who are at the top of their game use coaches: CEOs, athletes, entrepreneurs, and programmers. Why? Because they invest in their future. A coach can help identify and cure weaknesses and further strengthen existing skills. I could go on, but the point is that people who are serious about something invest in it, and coaching is probably the best way to improve.
A "free" option for coaching might be a more senior colleague who is willing to let you tag along and pair program. If this includes mentoring along the way, this can be invaluable. Some companies encourage this sort of behavior while others view it as "off task" and a waste of precious developer time.
Workshops & Live Courses
Similar to corporate training, workshops and live courses are the equivalents for an individual. Sometimes smaller companies or startups invest in one-off trainings for individuals when they don't have a whole team to train.
These courses lack many of the bonding and insight moments that come with team training, but if you want to grok something quickly, these are the way to go. Again, an experienced trainer can pinpoint weaknesses or gaps and develop them much quicker than going solo.
These may appear to cost more, but consider they can be like drinking from a firehose. You get comments like this:
I felt like I learned 3 months worth of material in 3 days!
After three days, most students are off and running with their new skills. Thrilled to be using thier new knowledge.
I was once in a training, and after demoing some code, a participant did a face palm. I asked what was the matter and they replied that the one line of code I had just showed them had taken them almost a month to implement. 🤦
Invariably, some are not sold on learning fast and thoroughly. (They have not allocated budget to invest in the future.)
At this point, there is a new requirement for learning Python (or any new skill), sustained motivation. Sitting through a couple of days of training is really easy compared to this, but I digress.
A great way to pick up Python is to choose a project and implement it in Python. In fact, this is how I learned Python. Was my code idiomatic Python when I was done? Nope, I was pretty clueless, but I enjoyed the language features that I did use. Did I have an expert helping me? No, it was the blind leading the blind. Was it quick? Somewhat, but again I wasn't using the tools how I should be. However, it did give me a good chance to play around with the language and compare it to other tools that I was used to.
If you have a hobby project that you are itching to do, or your boss is breathing down your neck about your next task, consider using this as a forcing function to get familiar with Python. There can be some inherent motivation here to learn.
Videos and On-demand Training
For those with sufficient self-motivation, on-demand video courses can be excellent. Again, the quality of the material can vary. You might want to consider if you are acquiring the courses from sources that focus on the topics at hand or if they are trying to be everything to everyone.
Over the years, many have asked me for training and I ask them how big their team is. When the response was "just me", I felt bad, but in the past year I have been developing a library of training for such individuals in addition to my corporate training. (Indeed, this can be complementary to corporate training as review material.)
I think my material is wonderful (but also realize that I'm heavily biased), and am willing to share my thoughts about other platforms and their pros and cons.
Again, the lack of budget might be a concern for some. I offer discounts to individuals not from the world's 30 wealthiest countries (or those laid off due to Covid19 and students). Still, for some, their willingness to invest in learning consists of spending no money but lots of time. (I hope you can see that I think this is the wrong tradeoff, especially for professionals).
In that case, most courses are paid courses. However, there are thousands if not millions of hours of free content on Youtube. These vary in quality of content, audio, and video. However, you can strike gold with these.
Unless you come across some University course (which might lean more theoretical and lacking application or at least experience in the battlefield), you will be picking up nuggets here and there without a coherent learning path. Again, not an effective use of time, in my opinion, but if the only currency you are willing to spend is time, this is an option.
The final category of my learning options is the written word. You should ask yourself (or your company) "what are you willing to invest?". Many companies are willing to reimburse book purchases.
Why are books a good investment? Because the author was forced to fill out a proposal form that required that they think about taking the end-user, aka the reader, aka you, down a learning path. During the writing process, there are editors and reviewers whose purpose is to ensure that the learning happens.
Having written a few books (and seeing the reader feedback) as well as reading and reviewing many technical books, I'm a huge proponent of books. However, if you just read books, science tells us that you will not retain most of what you read. To retain information, you will need to apply it (or work on getting it into long term storage). This is probably my biggest beef with many books, they do not include exercises, or they are hard to apply (before they leave short-term memory).
Again, there are books of differing quality. I tend to read a lot of Python books, and am more than willing to proffer my opinion.
We are now back at the "lack of budget" folks. One option is the library. However most libraries do not have up-to-date material. Offering to be a technical reviewer might be a way to get your hands on newer material, but generally these are jobs that are requested from you rather than the other way around.
The cheap option, that sadly has suffered in the past few years with the rise of Twitter and blogging platforms like Medium, is the blog. This is the Youtube of written content. There is a lot out there. Some is gold, some is outdated. But, these posts generally lack a learning path and are not great for taking you along on a learning journey.
Get Started Learning
There you have it. My (obviously biased) thoughts around the most effective ways to learn Python after having been involved in almost every aspect of this for the past twenty years. Feel free to reach out on Twitter or LinkedIn to discuss.