I teach about 10 different courses to companies around the world, but my favorite remains “Python for non-programmers.” Participants in this course are typically network and system administrators, support engineers, and managers who want to learn some programming skills, but don’t see themselves as programmers. Moreover, many of them took a programming course back when they were university students, and were so horrified, overwhelmed, and frustrated that they gave up. Perhaps they’re still working for a high-tech company, but they have tried to avoid programming.
But jobs increasingly require some knowledge of programming, and Python is a perfect language with which to start: The syntax is consistent, and the number of things you need to learn is relatively small in order to get up and running.
But that doesn’t mean that there’s nothing to learn. And one of the hardest ideas for people to learn is that of variables. Sure, people know about variables from when they learned algebra — but variables in programming languages aren’t exactly the same thing, even if there are similarities.
For years, I struggled to explain variables: I used the mailbox metaphor (which I learned from the wonderful “Computer Science, Logo Style“). But the mailbox model doesn’t really fit Python, so I’d end up saying, “Actually, I lied to you yesterday. Variables are actually references.” Which didn’t do much to clear things up. And when we started to talk about lists of lists, it wasn’t clear how much my explanations really helped.
Finally, I hit upon a metaphor that seems to resonate with people: Variables are pronouns. This has several advantages:
No metaphor is perfect, and it’s still tough for many people to wrap their heads around the idea of variables when they’re programming for the first time. But this model seems to have had the greatest success so far. If you teach Python programming, then give it a whirl, and let me know if it seems to help!
I’m a professional trainer; just about every day, I’m in a different city, country, and/or company teaching Python, data science, and other topics. Over the last few years, I’ve also thought a lot about training as a specialty — and I write about it on my “Trainer Weekly” newsletter, as well as in a “Technical training” Facebook group.
I’ve now launched my “Train Better” podcast, which aims to give advice about the business, pedagogy, and logistics of the training industry. I’ll also interview trainers at various stages of their career, so that we can learn from their successes and failures.
Click here: Train Better podcast
If you’re interested in training, or are already training and want to get better at it, then I hope you’ll enjoy the podcast. If you have suggestions for topics or guests, then please contact me, as well!
As you may know, I’ve been a panelist on the Freelancers Show podcast for a few years. It’s one of the high points of my week to chat with my co-panelists, discuss various aspects of freelancing/consulting, and to interview interesting people who can help us improve our freelancing careers.
I’ve been consulting since 1995, but I think that my business has improved greatly thanks to the advice I’ve gotten from the show, and from the discussions we’ve had.
This coming Tuesday, we’ll be recording our 300th show. To celebrate, we’re making it a live webinar, in which we’ll take questions from … well, anyone who wants to ask!
(The show will also be recorded and available as usual.)
So, if you’re a freelancer/consultant, or if you’re thinking about taking the plunge, or just curious, or just want to see what I look like — well, join us! You can sign up at the Crowdcast site here:
If you can’t make it, then we would still love to get your questions. Write them on the Crowdcast page, or leave them as comments here. I promise we’ll try to answer them all!
What’s the hardest part of Python to understand?
For nearly 20 years, I’ve been teaching Python to engineers at companies around the world. And if I had to say what most confuses my students, it’s list comprehensions.
And yes, if you’re wondering, set and dict comprehensions are equally confusing.
Comprehensions are both powerful and compact. The syntax, however, is far from obvious. Moreover, it’s not always clear just when or why you should use comprehensions, and when you should instead use a regular “for” loop.
Experienced Python developers know that there is a difference between comprehensions and “for” loops, even if it isn’t obvious to newcomers. Those experts also know that comprehensions are an essential part of a Python developer’s toolbox. It’s a rare day on which I won’t use a comprehension in my Python programming.
Among other things, comprehensions can:
So, how can we help newcomers, who see comprehensions as some combination of weird, unnecessary, and hard to understand? If you know me, then you already know the answer: Clear explanations, followed by lots of practice.
I’m thus delighted to announce the launch of “Comprehending comprehensions,” an online course that teaches Python developers how and why to use comprehensions.
This is an Internet version of a class which I have taught more than 100 times at companies around the world. Through nearly two hours of video and more than 15 exercises, you’ll learn how, when, and why to write and use comprehensions.
If you’re familiar with Python’s basic data types (strings, lists, tuples, dicts, and sets), reading from files and writing simple functions, but don’t yet feel comfortable using comprehensions, then this course is for you: You’ll come out of the course knowing how to write faster, cleaner, and more robust Python code. You’ll know how to handle common situations with data structures and files. And you’ll be better prepared to read and debug code written by others.
In addition to the videos and exercises, this course comes with the slides I use at my in-person training, and the input files you’ll need to solve the exercises.
My goal, as always, is to make you a more fluent Python programmer. If you take this course, you will have made a major step forward on that journey.
As always, I offer discounts to students, pensioners, and people living outside of the 30 wealthiest countries in the world — just e-mail me to request an appropriate coupon code. There are also group discounts, if you want to buy five or more copies for your organization.
Questions? Comments? Just leave a comment on this blog or send me e-mail; I’ll respond with an answer right away.
I’ve been training people in programming, including in Python, for 20 years. I’ve always enjoyed teaching; it’s an amazing feeling to know that you’re helping people to accomplish things that they couldn’t do before. The fact that I get to travel the world, meeting so many smart and interesting people, and helping them to use Python in new and better ways, is a great part of what I do.
My courses are constantly undergoing improvement and evolution. If you took a course with me last year, the odds are pretty good that I’ve tweaked it in a number of ways — improving the explanations, changing the demos, and streamlining the exercises.
One change that people don’t expect me to make, but which I do every year, is to remove content. That’s right; every year, I cover less material in each of my courses than I did the previous year.
Why would I do that? How can that possibly help?
Because by covering less material, I can give my students more time to truly learn the topics that remain. And when I say “truly learn,” I mean that we not only have more opportunity for questions and discussion, but also for exercises. Many, many exercises.
I find that removing content and adding exercises helps people to learn better. It helps the information to settle into their minds more firmly. It helps the students to truly, deeply understand the points I’m trying to make. And the point of a course isn’t to race through a checklist of topics, being able to say, “I covered them all!” Rather, it’s ensuring that people have learned the most important ideas, so that they can progress on their own. Having 100 topics on your day-long syllabus isn’t really going to help anyone; no human can remember that much.
I also encourage my students to work in pairs when they’re solving exercises. Without fail, those who follow my instructions, and work together with others to solve the problems, learn more and have a deeper understanding of what we’ve done.
About a year ago, I had a thought experiment: What if I were to make a course that was only exercises? That is, I wouldn’t do any teaching up front. Rather, the learning would take place in the exercise, in the collaborative solving of the exercise, and in the follow-up afterwards, including when I solve the problem.
Thus was born Weekly Python Exercise. My goal is to make you a more fluent Python developer, and Weekly Python Exercise represents the best combination of content, exercises, and technologies for accomplishing this task. The first cohort of WPE has been learning since June, and the feedback has largely been very positive. But there’s always room to improve, and so in creating this new, January 2018 cohort, I thought long and hard about how to increase interactions and make it as valuable as possible — within the constraints of online teaching and short, weekly exercises.
I’m very proud of WPE, and I’m excited that dozens of people are going to be joining me for this improved version of Weekly Python Exercise. I can’t think of a better way to help boost your Python career.
What does a $180 subscription to Weekly Python Exercise get you?
Also: If you sign up now, you get free, unlimited access to future cohorts of Weekly Python Exercise. You’ll be invited to join the forums and office hours, and to solve the problems along with everyone else, whenever I next offer this course.
And if it’s not for you? Just let me know, and I’ll refund your money. But I think that you’re going to really love it, and get a lot out of it. You’ll understand how Python works behind the scenes
In 48 hours, this opportunity will go away until I next offer WPE — and I’m not sure when that’ll be. So don’t delay; sign up for Weekly Python Exercise.
Questions or comments? Just watch this video:
In just 48 hours, I’ll be starting my latest round of live, online courses. Wondering what it’s like to take an online course from me? Or perhaps you’re wondering what sorts of topics I’ll discuss in my “Python dictionaries” and “Python functions” courses? Well, wonder no more; here’s a short preview of my teaching style, and the sorts of things I intend to demonstrate in my courses:
If you are a beginning or intermediate Python developer, then you’ll become a more effective and fluent developer — good not only for your current employer, but for your career — thanks to my courses. And we’ll have lots of fun along the way. There will be plenty of time for exercises, questions, and comments, to ensure that you understand these technologies well. You’ll return to work the next day able to do more, and more quickly, than before.
Any questions? Just send me e-mail , and I’ll be happy to answer.
I look forward to seeing you this week (for my Python courses) and next week (for my two-day “Understanding Git” course)!
If any (or all) of the above is true, then you’ll likely be interested in one or more of the live, online classes I’m teaching later this month:
Each of these classes is live, with tons of live-coding demos, exercises, and time for Q&A. My goal is for you to understand these technologies, how they work, and (most importantly) how you can use them effectively in your work.
Previous classes have been small and highly interactive. These are the same classes I give to some of the best-known companies in the world, such as Apple, Cisco, IBM, PayPal, VMWare, and Western Digital; I’m sure that you’ll enjoy yourself, and come out a better engineer.
Better yet: Buy a ticket by this Friday, and you’ll get a substantial (20%) discount on the ticket price.
This is not a recorded class (although recordings will be available later on). I’ll be speaking and interacting the entire time, giving you a chance to get your questions answered. I want to make sure you really understand what’s going on, and will answer any questions you have!
Speaking of which: If you have questions, just e-mail me at firstname.lastname@example.org, and I’ll do my best to answer.
And if you’re a student, ask me for a coupon code that will give you a substantial discount off of the ticket price.
I hope that you can join me for one or more of these classes!
To celebrate, I’m offering a one-day 47% sale on many of my products:
Just enter the “birthday” coupon code when buying any of these, and you’ll get 47% off. These discounts are good for one day only — Friday, July 14th.
Data science is changing our lives in dramatic ways, and just about every company out there wants to take advantage of the insights that we can gain from analyzing our data — and then making predictions based on that analysis.
Python is a leading language (and some would say the leading language) for data scientists. So it shouldn’t come as a surprise that in addition to teaching intro and advanced Python courses around the world, I’m increasingly also teaching courses in how to use Python for data science and machine learning. (Within the next few weeks, I expect to release a free e-mail course on how to use Pandas, an amazing Python library for manipulating data. I’ve already discussed it on my mailing list, with more discussion of the subject to come in the future.)
Next month (i.e., February 2017), I’ll be teaching a three-day course in the subject in Shanghai, China. The course will be in English (since my Chinese is not nearly good enough for giving lectures at this point), and will involve a lot of hands-on exercises, as well as lecture and discussion. And lots of bad jokes, of course.
Here’s the advertisement (in Chinese); if you’re interested in attending, contact me or the marketing folks at Trig, the company bringing me to China:
Can’t make it to Shanghai? That’s OK; maybe I can come to your city/country to teach! Just contact me at email@example.com, and we can chat about it in greater depth.
Do you offer technical training? Or are you just interested in becoming a trainer?
I’ve been doing technical training for several years now, and it has become the main thing that I do. I love it, and encourage everyone to look into it as a potential career (or part of a career).
I’ve created an online Facebook group for trainers. I’m doing coaching for trainers. And most recently, I started “Trainer Weekly,” a free newsletter for people offering training. Every Monday, you’ll get a new piece of advice about th business, pedagogy, or logistics of training. How do you price things? How do companies think about training? What sorts of courses can and should you offer? What kinds of exercises should you give in class?
If this sounds interesting to you, then sign up for Trainer Weekly, and expect to get a new message from me every Monday. If you have specific questions about training, then just drop me a line; I’ve already addressed a few topics that were requested by readers, and hope to address many more.