I am writing a book about WordPress development. I hope it will inform beginner, intermediate, and advanced developers to all take more joy in their craft.
Here’s the concept: It will be a book of patterns for WordPress development, with how-tos and essays organized in a non-linear, linked, self-reinforcing system — a coherent pattern language.
The book will describe masterful practices on a spectrum from philosophy, to information architecture, down to sound coding approaches for specific technical problems. It will guide developers to anchor their work in “the WordPress way”, identify the right tools for a given job, build in forward-thinking ways, and connect their work to related situations and patterns.
To my knowledge, this is unique in the WordPress world. Code references serve a different purpose entirely: They’re more like a dictionary, useful to expand fluency but not a way to learn the language. One-off tutorials found through searches are how most of us learn the basics, but they are often of low quality and aren’t often helpful or available for advanced skills.
The brilliant Plugin Handbook comes closest to what I have in mind: it provides a comprehensive jumping-off point for how-to information, presented with context. In fact, I expect my book to often point back to the Plugin Handbook. But the pattern language format is distinct from the handbook format, and lends itself to different reading behaviors and learning styles.
The difference is all about how you approach the material as a reader. Handbooks are great for “get me up-and-running quickly”. Collections of pattern are good for “given my need, give me a solid approach”, and for “given my problem, help me to understand the tradeoffs, the history, and and the why of the recommended solution.” Handbooks equip you with breadth; pattern languages go deeper, which is why they are potentially of use even to people with intermediate and advanced skill.
For Most Everyone
I think this concept could be useful for developers with intermediate and perhaps even advanced skill, as well as for beginners.
I wish I’d had patterns available to read when I started 3 years ago. I wish I had them to guide me still today, so I’m cautiously optimistic that others will find it useful, too.
To be sure that it is, I will ask a handful of other developers to review early drafts of my first few chapters. Their input will help me to course-correct and, I hope, confirm the value.
Open Source, Baby
In the spirit of open source, I am committed to making the book’s content freely available to everyone on the web. As I write, I will publish drafts (when I’m no longer embarrassed by them), and incorporate feedback while I edit. Eventually, when there is a coherent body of work, I expect to publish commercial e-books. Perhaps they’ll be GPL licensed (if that’s appropriate for the medium — I’ve yet to look into this at all).
I am writing at a slow pace, mostly due to spending a lot of time just researching and editing as I learn more. I have identified over a hundred potential chapters and expect that to double or triple. After four months I have a couple dozen chapters outlined and about half a dozen solid drafts — none of which are quite ready for review yet. I expect to accelerate a bit, but it will still be a good long while before anything is considered final.
All the more reason to publish drafts in the open: This way, I won’t have to wait for people to get some value out of the work.
Feedback is Love
Researching open source licenses for book content is on my todo list. I’d appreciate any pointers.
More generally, I would love to hear your reaction to this. Does the pattern language approach make sense as I’ve described it? Given your skills, do you imagine this would be useful for you? Are there specific topics or patterns you hope this will cover? Are you interested in reviewing early chapters? Perhaps interested in contributing?