Lean publishing "Principles of Package Design"

Posted on by Matthias Noback

During the great PHP Benelux Conference 2015 edition I published the final version of Principles of Package Design. Let me tell you a little bit about its history and some of the things I had to deal with.

A bit of history

My first book, A Year With Symfony, was released on September 4th, 2013. Just 6 days later, I started working on Principles of PHP Package Design. As it turned out, it was quite hard to keep the process going. There were several months in which I wrote nothing at all. Sometimes I picked up the work, but then I had completely lost my track and tried to get back on it by revising existing chapters over and over again. Meanwhile all kinds of other projects begged for attention as well, including the release of the backend project of the new nos.nl website, the preparations for the Hexagonal architecture training and the birth of our daughter Julia ;)

Finally, I took a couple of weeks to focus completely on the book, and as it turned out, there wasn't really much work left. The final sprint consisted mainly of preparing the book interior for print, designing the cover, and thinking of a good way to release it. The PHP Benelux conference seemed like a good place and time to do this. I felt comfortable enough to do it there, given I am familiar with many of the attendees.

Lean/live publishing

Still, I was quite nervous to actually do this. Even though I did it before, to publish a Leanpub book in real-time is always a bit scary. But I pushed the "Publish" button nonetheless, and everything turned out well. While Leanpub was generating fresh PDF, MOBI and EPUB files, I talked a bit about lean publishing and its up- and downsides.

The main take-aways from this are:

It's great to be able to publish early, and let readers give you feedback. But make some kind of a commitment to finish the book as well. Imagine the early adopters standing in front of you, asking you when you'll finish it and give an honest answer:

Early adopters demanding a finished book, source: https://www.gov.uk/government/news/farewell-reception-for-201213-chevening-scholars

Proof reading

Also, make sure to ask people to read the book before you publish it, and provide you with some feedback. Any feedback is helpful, and also any type of reader: an experienced or an inexperienced programmer, a native English speaker, or a non-native one, etc.

One example of highly useful feedback I got from Peter Bowyer (rephrased):

It seems like you're trying to put two books into one. In the first place there's lots of information about practical PHP package development, working with Git, GitHub, Composer, Packagist, etc. Then there's also lots of information about software design and design principles, which is more theoretical of nature.

This particular comment struck me like lightening and helped me decide to leave out all the PHP-specific things and turn this into a general programming book. I'm really curious how this works out. So far it turns out that people really get a lot of practical advice from it, as well as many things to think about, while they're doing their job.

Also, because it took me about one and a half years to finish this book, its style was not really consistent at first. While re-reading the older parts it turned out that I took certain things for granted, sometimes underestimated, sometimes overestimated the audience, sometimes let myself get away with shortcuts, or obscure explanations. All of these mistakes have now been taken care of, again thanks to proof readers who pointed them out to me.

Print edition

When I published A Year With Symfony, the printed edition was really an after-thought. It turned out that preparing a book for print can be a lot of work. In those days I used Lulu, but it was such a hassle to prepare the PDF for distribution (in particular for sales channels like Amazon), that I decided to not do the same thing for Principles of Package Design. For this book, the printed edition is just as important as the digital one. And everything is better now since I use CreateSpace, which is actually an Amazon product. They offer print-on-demand and proper shipping costs for people all over the world. Anything you upload is manually, yet quickly verified and their in-browser software is just very friendly to use. The royalty percentage is about 40% which is not the best out there, but to me quite reasonable given that there's no further effort required from you after you publish the book.

The print edition is available on the different Amazon websites, e.g. amazon.com, amazon.de and amazon.co.uk

Feedback wanted

If you have read this book, or are reading this book. Please provide me with any feedback that you have. I'm also looking for some feedback that I can add to the book's landing page on leanpub.com, so if you have a nice quote, please send me an email.

Finally, to celebrate the release, you can use the following discount link to buy the book for $19: leanpub.com/principles-of-package-design/c/phpbnl15

Encouragements

Despite the dangers of lean publishing: if you feel the slightest inclination towards writing your own book, I advise you to do so. Even as an experiment, just like an experimental open source library, you can just start working on it, and later decide whether or not it's something worth finishing. The experience itself is useful, and sharing your knowledge of a particular subject is useful for more people than you may imagine. I especially like to recommend the Leanpub platform since it's very easy for technical people to get up and running with it.

PHP Book design principles reuse Principles of PHP Package Design slides