New Classes premiering in Zurich next month
I'm delighted to announce that, once again, I'll be teaching in Zurich...next month. My good friends at Oetiker+Partner and the amazing team at Eidgenössische Technische Hochschule Zürich ("ETHZ" to its friends) have organized four days of Perl and presentation skills training, to be held on March 18-21 (just before SPW1).
I love teaching in Zurich. I enjoy the city itself, of course, but the real attractions are the remarkable people who come along to the classes there. They're invariably smart, motivated, humorous, practical, and challenging: a joy to teach.
For that reason alone, over the past few years almost every new class I have created has debuted in Zurich. And this year is no different...
Something I'm asked quite often is: "If you were rewriting Perl Best Practices today, what would you change?" Apart from the obvious answer1, over the past six months I've been seriously pondering that question. In fact, I reread every suggestion in the book, rethinking them all in light of the intervening decade: the many improvements in Perl, the vast expansion of CPAN, the considerable debate and feedback I've received on the book itself, as well as my own evolution as a programmer and as a teacher of programmers.
Somewhat to my own surprise, about 80% of the original advice seems to hold up2. But about 50 of the original guidelines were in obvious need of updating...or, in a few cases, of taking off and nuking them from orbit. And, not surprisingly, quite a few techniques, practices, and tools that today we take for granted in modern Perl development are entirely missing from the book.
Putting all those observations together, I've developed an completely new one-day class: Perl Even Better Practices, which I'm offering for the very first time in Zurich next month.
The other new class I'm offering there is my two-day Perl Programming Masterclass. It's the most advanced programming class I've ever taught, bringing together a lot of hard-to-find information about how Perl really works, and then demonstrating how to combine the best of Perl's high-end features to create much more powerful and maintainable code much more quickly.
The class delves deeply into the fundamental programming "power tools": scope, context, namespaces, lexicality, referencing, aliasing, autovivification, closures, flow-of-control, inversion-of-control, higher-order functions, abstraction, delegation, and decoupling. It doesn't just explain what those CS buzzwords mean, but shows how to apply them to the everyday problems of coding: designing and implementing procedural and OO systems, building effective data structures, manipulating them efficiently, choosing the right architecture for later extensibility, signalling and handling failure gracefully. As the name implies, my aim here is to take experienced intermediate Perl programmers and help them take the next step towards mastery.
This course is a first for me too, in that much of the second day consists of in-depth code reviews and discussions: an extended opportunity to see exactly how the concepts explained on day one translate into complete and usable modules...and how those modules can be evolved over time to become both more maintainable and more powerful.
If you're interested in either of the above classes, or indeed my popular Presentation Skills class, which we'll also be offering in Zurich next month, you can find out all about them...and sign up to attend...on the Oetiker+Partner website.
 ...that I would somehow make it impossible to even open Chapters 2 to 19 until you'd read and understood Chapter 1!
 Well, maybe not so very surprising. Strictures, warnings, proper layout, clear decomposition, good documentation, and intentional coding are never not going to be good ideas. And barewords, global variables, punctuation for names, unencapsulated classes, visually or lexically ambiguous syntax, monolithic coding, magic implicit side-effects, and bringing the wrong knife to a gunfight...are always going to be problems.