A Pattern for Learning
Java guru Dr Heinz Kabutz chats to Voxxed about his patterns-focused series of developer courses, available now on Parleys. Curious about patterns, want to learn a more intuitive approach to them, or just in need of a refresher? Then this might be for you.
Voxxed: What was your motivation for writing this course?
Heinz: I taught Bruce Eckel’s “Hands-On Java” course in South Africa about 15 years ago. It was a very good course, aimed at the professional programmer working with other languages. In just five days, they could learn the Java syntax and the core JDK classes. However, the course only taught the syntax, not the semantics of Java. Great, we have learned what an interface is – but when do you use static? And what is the best way to use inheritance between classes? These kinds of questions kept on coming up at the end of the course.
I knew from my own work that the key to these questions lay in understanding Design Patterns. At the time, I could not find any patterns course that I could teach. As a result, I started writing my own. I finished the first version in 2001. My wife was pregnant and banished me to my office outside, so I had lots of time in the evenings for research.
My initial course included J2EE patterns, but most of those are just workarounds for clumsy architectural features of J2EE, so after several versions, I’m now back with just the most important Gang-of-Four patterns (from Design Patterns – Elements of reusable, object-oriented software).
When I started writing the course in 2001, I was very fortunate to make contact with John Vlissides, one of the original Gang-of-Four authors. John gave me lots of insider tips for the material I was producing. This was a great boost for the course.
However, the course is not based on just one book. It is based on about 30 books, plus decades of personal programming experience.
How did the recorded version come about?
A few years ago, I started a learning club for my Java Specialists Newsletter subscribers. It was an instant hit! We would get together once a month and I would talk on various topics. Eventually we decided to try do my design patterns course together. Since some of our members were in funny time zones, I recorded these sessions together. Over the course of about a year, we worked our way through the entire course. Our club members also did the exercises and sent them to me for grading.
These are the sessions available now via Parleys.
You’ve stated in the past that it’s important to encourage software development companies to train all of their programmers in Design Patterns, at every level. Why is this so important?
Some of my customers have sent all their programmers through this design patterns course. They would start with one group. This group would learn a new vocabulary for design. They became more productive as they had received a brain transfusion from some of the greatest thinkers in object orientation. This would lead to more and more of their teams wanting in on this way of thinking.
When I wrote the course, I added the tagline: “The timeless way of coding”, based on the book by Christopher Alexander: “The timeless way of building”. The skills learned on this course will also be relevant in other languages besides Java.
Is this an area that you think a lot of developers struggle in?
Yes, it is. Studying design patterns helps programmers “get” objects and inheritance. During formal studies, we spend an inordinate amount of time learning about topics that are not that relevant in the real world. I have seen university courses that devoted 1.5 pages to design patterns, and even got them wrong.
Studying these patterns will rewire your brain to understand software in a different way. I know it did that for me.
What are the patterns that you favour – and has this changed over the years?
One of my favourites is the “Composite” pattern. It is elegant and simple. You will often find it as a flexible solution to a design problem. And drawing it on the whiteboard at the right time will make you look very clever.
In terms of learning, the structural patterns are the easiest to grasp. After that come the behavioural patterns. Surprisingly, the creational patterns are the most challenging. Programmers have certain ideas about what a Singleton and Factory Method are, but in most cases, they misunderstood the patterns.
Who is this course designed for – beginners, experts, or intermediates?
It is mainly aimed at the professional Java programmer who has been working with the language for at least one year. However, experienced programmers of 10 years have also attended this course and have gleaned lots of useful information from it.