Last week was a particularly interesting week. I organised three coding dojos, on three different locations. The first one was at the IPPZ office (one of the companies I've worked for), the second one was at the SweetlakePHP meetup in Zoetermeer. The last one was for a group of developers from NOS, a large Dutch news organization. Although that would have been enough, I finished the week with my revised talk "Principles of PHP Package Design" at a meeting of the Dutch Symfony Usergroup in Utrecht...
About this coding dojo thing
First, let me explain what I am up to, organizing all these coding dojos!
A coding dojo is a meeting of developers (who are in this case to a certain minimum level acquainted with PHP). Two of them take a seat behind a computer in front of the others, who are the "audience". They get a programming assignment and start writing code to satisfy the requirements. They use a strict test-first approach, taking small steps, slowly approaching the finish. After about seven minutes, the roles change, so that in te end everybody gets their turn in writing some code (and tests!). And of course, the assignment is done.
A coding dojo programming assignment is called a "kata". There are many of them, some of which you may know already (FizzBuzz, Minesweeper, Bowling Game, Roman Numerals, etc.). They all are a way to practice your TDD skills and while doing so, you can sharpen your eye (or nose!) for code smells and learn to apply OOP design principles.
The dojo itself is a pretty safe area, where you can talk about anything that comes to mind while you are programming (you would usually keep all those things to yourself) or watching somebody else programming. It is also a place where you can learn about other approaches, which can be more (or less) fruitful than your own habits. Thus far my conclusion is that a coding dojo is a wonderful way to get a team's thoughts about best practices and quality standards better aligned. It appears that regularly being in a coding dojo helps to achieve this even better.
I intend to organize coding dojos more often, on many different locations and occasions. If you, your organization or your local user group is interested, please contact me.
Dutch Symfony Usergroup meetup
As you may know, I'm working on a book called Principles of PHP Package Design. A couple of months ago I thought up a talk with the same title for the AmsterdamPHP usergroup. And even though it was a bit "rough" back then, it was recorded, so you can even watch it on YouTube. On this specific occasion it seemed to me that the way I approached package design in my talk did not resonate very much with the audience. In fact, it brought up quite a lot of counter-reactions. This meant for me that 1) I needed to make myself much more clear and 2) maybe I was saying too many things that totally did not align with the way people thought about package design at the time.
I feel that much has changed. Last week I modified big parts of the contents of the presentation. I added many images to it. Then I presented it at the Dutch Symfony Usergroup meetup in Utrecht. These are the slides:
Dutch Symfony Meetup - Principles of PHP Package Design from matthiasnoback
I was very happy to see that the package design concepts and principles were well received by the audience. This is why I think it's almost time to publish the book even though it is not finished yet. The first half of it is almost done, and after that it should be possible to regularly release another chapter.
So during the next couple of months I will start releasing chapters of my second book. Until the book is completely done, you will be able to buy it for a reduced price.
> The regular price will be 29 dollars, but:
If you have bought or will buy A Year With Symfony within the next few months, you will get a 25% discount on Principles of PHP Package Design (you will receive a discount coupon per mail).
If you didn't, but you did subscribe using your email address on the book's page, you will automatically receive a coupon code for a 20% discount.
So stay put and you will soon learn more about all of this!