Earlier this year I took on the challenge of writing a book called Learning Joomla! 3 extension Development which was published by Packt Publishing in July 2013. Back in March I was approached by Packt Publishing to write the book, for which they had a title and an idea of the target market this book should be for. They had contacted me based on a presentation How to create a Joomla component from scratch that I had posted on slideshare after presenting it at the Sydney, Newcastle and Canberra Joomla User Groups in late 2012. I had also turned this into 3 hour workshop which I presented at JoomlaDay Sydney 2012 and JoomlaDay Melbourne 2013. I had also turned this workshop into a 12 part video tutorial. I think Slideshare is a really underrated site that was once described to me as the youtube for business, and I really encourage you to all post any presentation you do on the site as you never know what it may lead to.
So with regards to writing the book, my first task was to create an outline of the book, which is essentially a table of contents showing all the chapters and topics covered, along with a paragraph describing what the chapter will contain and what the reader will learn and an estimated page count for each chapter. After some feedback and a few changes, we finally agreed on the outline, and the next step was to sign the contract, which took a few weeks to prepare and go through the publishers internal process.
As soon as I made the initial commitment to write the book, I began writing immediately, so by the time I signed the contract I was well into it. Sticking to the outline was more difficult than expected, because as I wrote I thought about additional topics that were relevant and I wanted to cover. For example Joomla 3.1 was released in April 2013, with a major new feature called tags, however I had excluded this from the outline as at the time I had never integrate tags into an extension and had no idea about how difficult this would be. In the end I managed to include a section about tags, as I researched it, read all the documentation, and did some experimentation. That said, as per some other Joomla documentation I'd read in the past, it was written by hard core developers who in my opinion made too many assumptions about what the reader already knew and in some areas did not go into enough detail that a beginner could follow. Throw away lines such as "You can do this either using sql or postflight by creating an instance of JTableContenttype" are really not helpful to beginners who don't know how to create an instance of JTableContanttype or don't know what postflight is, beginners need step by step instructions or at least complete working examples to refer to and reverse engineer. This is one of the reasons why I wanted to write this book, because the was no single source that existed to teach a beginner step by step how to make a real world useful extension. The hello world examples while are useful, they still didn't provide enough information on their own to get a developer who is a new to Joomla up to scratch.
The contract specified due dates for the first draft of each chapter, but there was still a lot of work to do after they were submitted, and I actually found the editing process much more difficult than the initial writing. Packt Publishing lined up two technical editors, both of whom were well know in the Joomla community and really knew their stuff. They both picked up things that I had not noticed, and provided really great feedback that I tried to take on board as much as possible. As the author however, I had final say in what was included and which suggested changes I actually made. For instance the tech reviewers suggested I include more about testing including automated tests such as unit test, and while I agree this would be a relevant interesting topic, it wasn't in my initial outline, I had already exceeded my estimated page count for the book, and I see this more of an advanced topic that perhaps should be included in the next book, it's not essential for a beginner to know. Speaking of page count, I ended up writing too much, and had to cull about 50 pages, so there were even some topics from my initial outline that I had to cut out, they were nice to have extra things, not core essential topics.
People who know me well realize how busy I am, and wonder how I had time to write this book. I have a full time day job in an IT role, run a Joomla extension Development business on the side, as well as have family responsibilities such as picking up my kids most days from school/daycare and giving them dinner and bath etc. My wife runs her own branding and design agency and most days does not get home until after 7pm. Add to that the fact that I run the monthly Sydney Joomla User Group, and was also the coordinator for JoomlaDay Sydney 2013, and you'll get a picture of how busy I was at the time. There is a well known saying that is relevant, if you want something done, ask a busy person. Basically I made good use of 9pm-12am, and was incredibly focused. I watched very little TV during this time, and slightly neglected some of my software customers, but I did not take a single day off work. Every opportunity I got I did something towards the book, whether is was reading something online for research or fact checking, testing code, writing a sentence or two, or proof reading something I'd already written. I did not let a single day go past where I did not make even a small contribution to the book, even if it was only 5 minutes of rereading something I'd previously written to make sure it made sense and there were no spelling mistakes. Every little bit counts, and it's amazing how much you can achieve in a short time by incrementally additions. My wife also kindly let me spend some decent blocks of time on a few weekends on the book, where she would take the kids with her to the shops or to a friends place for a few hours, which really helped. So as you can see, it was a lot of hard work, but I really happy with the end result and am glad that I wrote it.
Another question I get asked is why don't you sell copies of the book yourself, like at the recent JoomlaDay Sydney event. The contract with the publisher gives them entire control over the publication, distribution and sale of the work, and while I got three copies of the book myself, if I wanted any additional copies I would need to purchase them. It would be a financial risk for me to purchase copies of the book in the hope of on selling them, as no doubt I would end up with surplus copies. I've got better things to do with my time than being a bookshop.
I've also been asked, was it worthwhile financially to write the book. While I did receive an advance payment while writing this book, this amount is deduced from future royalties, and if you calculate the number of hours I spent writing this book my hourly rate would be rather low. If you are writing a book for financial motivation, I would suggest you pick a topic that is not such a small niche as Joomla Extension Development, because although this book has sold a few hundred copies so far, I don't expect it to be a huge income stream. What it has done is increased my personal branding, given me additional credibility for being an expert in Joomla Development, and was a great opportunity to share my knowledge in the open source spirit which can only be good for the future growth of the Joomla community. I've written the book I wish I had when starting out, and I hope you enjoy it too.