I've been teaching my class #PythonForTesters now for several years, and even though the main concept and idea behind it is still the same (which I'll get to below) the details and content is always tweaked and improved after every class.
It's great because I get a never ending excuse to my students why there might have snuck a bug or two into the class material or the VM that we use for the class. But mostly it's good because my class don't tend to get stale and outdated.
The revolutionary concept...
The big, and oh so revolutionary (...), concept behind my class was that I had taken many technical classes over the years of my career that my employers sent me to, and I was tired or bad instructors that droned on endlessly showing slides for far to long, with to few hands-on exercises, and quite frankly a structure that often wasn't very well thought-through and lacked connection to the real world and the work that I did.
So with those things in mind I created my own class on Python programming, specifically geared towards testers, a class that is nothing but hands-on. I talk for a few minutes about a concept, the students are encouraged to code while I talk, and then they get to spend 5-10 minutes on the new concept.
Back to me talking for a few minutes, and then 5-10 minutes hands-on exercise.
After a while we will have gathered enough small concepts that I introduce the bigger exercise for the chapter we've been working on (build a data digger, gather test artifacts, or test a REST API).
Repeat for two days...
To say that the students (and me) am tired after the first day would be an understatement... but... tired and happy.
The class is (so far after 7 years...) always very appreciated, and one of the main things I get positive feedback on is the huge amount of time spent hands-on coding, gradually introducing new concepts and libraries from the bottom-up.
Needless to say it's a class I am personally very proud of as it keeps going very strong after all these years.
If it is so well liked, why change it then you might ask?
Well things can always be improved, tweaked, and I still find things, even after giving the class more times than I can remember.
Sometimes it's small tweaks, bugs and errors. Other times a little bit bigger things like improving how strings can be formatted in a better way (Hint: string.format() is still a favorite of mine...).
But a lot of times it's also a matter of the times changing, things that were not possible earlier now gets a lot easier to do.
One such example is me changing the slide about using an FTP server into building your own Dropbox app in a few minutes.
Or for that matter rebuilding the entire virtual machine that had been a Ubuntu 12.04 VM that had been continously updated and patched over 6 years (!). It's now a new shiny and (hopefully...) more lightweight Xubuntu 18.04 as the base.
Students give me ideas...
A lot of times though I get a new idea or get inspired by a question from one of my students in class. It can be anything as simple as changing the material on how to print in colors in the terminal using ANSI escape sequences, and instead using the library "termcolor", to big things like introducing the use of and testing REST API:s a lot sooner in the class and weaving that concept into more of the big exercises we do.
Wan't to take Python for Testers?
If you ever want take my class, then I offer public classes, typically in the Netherlands or in the US. But also a lot of times when I go to companies and give the class in-house in various countries.
If you want me to come to your company then feel free to contact me to arrange something (firstname.lastname@example.org), and if you have a hard time getting it to happen in-house, I typically only need 6-8 students for a public class in your city.