Over a million developers have joined DZone.
{{announcement.body}}
{{announcement.title}}

Self-publishing a Technical Book for Beginners

DZone's Guide to

Self-publishing a Technical Book for Beginners

Zone Leader Sam Atkinson reflects on his experience self-publishing his technical book "Java Interview Bootcamp."

· Agile Zone
Free Resource

See how three solutions work together to help your teams have the tools they need to deliver quality software quickly. Brought to you in partnership with CA Technologies

Despite the Internet continuously decreeing the death of programming books, more and more seem to be coming out each year. Given the huge array of languages and libraries that are now available for us to do our jobs it’s no surprise. Although the Internet is a great source of information, there’s something altogether fulfilling about following a book through from start to end on a subject.

At the start of 2014 when making my new year goals (because positive goals are better than resolutions) I decided I was going to write a book. It’s been an exceptionally good decision, and I’d highly recommend that you should too. This article is a little bit of the why and how from experiences of becoming a self published technical author. If you want to see my efforts, I wrote a book called “Java Interview Bootcamp” for helping people through the Java interview process, and you can buy it here.

Ok, So Why Write a Book?

There are many reasons you may choose, but here are the ones I think matter most. Firstly: reputation. If someone comes to look at your CV and amongst the many things you’ve got on there you have “published author, 'Technology X From the Start’” then you’re quickly establishing you’re an expert on Technology X. Or if you’re book isn’t about a specific tech, you’re still establishing you’re an expert on something and you’ve got the gumption to sit down, toil away, write an entire book, then figure out how to make people buy it. That’s a motivated skill set right there. It’s not just for the resume either. To get people to buy your book you’ll need a following online. That following is a great way to increase your reputation and can open up avenues that weren’t there before.

Counterintuitively, the second reason (and my favorite) to write a book is that it is a great opportunity to learn. Teaching is the single best way of learning I know about. Even if you think you’re good at a subject, having to articulate it in words which people will then pay to read really forces you to up your game. For my next book I am planning to write about a tech I know almost nothing about, purely for the learning experience. I’m not the only one; check out this link from the author of D3.js — he'd only written one tutorial on the subject before being signed up to write a full book.

Third reason for me: money. You won’t be retiring following your book launch, but if done well with strong marketing you can bring in enough money so that your significant other doesn’t moan when you buy your new games console, laptop, etc. One of the favorite lines in my household is “We can’t afford to go out for that meal or that holiday” where I can respond “don’t worry, the books paying for it!”.

Why Self Published?

This is a very good question. For me I went self published because I wanted to prove I could write a book, without an editor writing me angry emails if I failed. The main benefit is I control everything: promotion, distribution, and I get the vast majority of the profits. Depending on where I’m selling it, I’ll get between 70% (Amazon) and 95% (Leanpub). If someone buys my book, I get an email, and I know I can afford dinner that day. It’s lovely.

The downside is that you’re likely looking at ebook only. You can go physical using services like CreateSpace, but the profit is tiny, and it’s more just so you can brag about having a physical copy.

If you go via the traditional route, you still need to convince someone to publish you, you will have strict deadlines (quote from James Sugrue, fellow Zone Leader: “I was on 10 days per chapter (first draft) and it was a long few months!”), and once it’s released you’ll only get your money every quarter. If you get money at all. When you sign your deal you will get an advance, usually in the region of $7000 upwards. You won’t see any more money until that advance has been paid back from the profits from your book (which can be tiny, as it’s a percentage on the “wholesale” cost of your book). It appears going through a publisher is more for prestige and reputation that money, which can absolutely work for you depending on your goals. YMMV.

How to Write and How to Promote?

Some people (like Nathan Barry) make an absolute ton of cash from their books because they have a giant following they’ve been building up for years. That’s great, but rare. What if you’re like I was and have zero following or reputation? Then you need to build one! Which fortunately, ties in nicely to writing.

I’m a big follower of Pat Flynn from the Smart Passive Income podcast. He made his initial cash by creating a niche website about an architectural exam, then taking everything he’d written in his blog and putting it into a book. That simple, and exactly the methodology I followed. It sounds like it shouldn’t work, afterall why would people pay for something that’s available online already? The reality is people are happy to pay for something bundled up into a book format and edited. Neither he nor I have ever had any complaints. I chucked in a number of exclusive chapters that aren’t on the website, but about 70% of the content is available online.

This was also how I built my following. I created the website Core Java Interview Questions, and then with a rough guide written down for how I wanted the book to be structured I started churning out material as blog posts. By doing some basic analysis of google search trends I could see what people were googling and I could write material that fitted that need. I could see what other people in the field were writing, what was popular, and try to emulate that.

Unfortunately if you build it they will not necessarily come; more work is required. There are great resources like reddit and HackerNews which can drive traffic (but you need to engage the community or they will come down on you hard). I found guest posting to be amazing. This is how I got into DZone; DZone allows resyndication of blogs (e.g. they reposted and linked to my articles) and they allow posting of original articles, which further pushed traffic to my site (Pssst: Sign up as a Most Valuable Blogger here). There are lots of other sites that will let you guest post and provide backlinks to your site. It also again looks great for your CV when you’ve got articles posted on a multitude of top programming sites.

At my peak I was writing 1000 words before work, then maybe another 1000 after on a good day. I was a machine. It may sound intimidating, but I was having fun. For the technical Java pieces I was learning an absolute ton which kept me highly interested. There were various successes across the way too: I wrote a piece on Big O notation because I’d never really groked it, and it turns out I wasn’t alone. It went viral (in a small sense) and my traffic spiked, which was excellent news and kept me going. I started creeping up the google ranks for a bunch of long tail keywords, people started to engage with the site and send me emails. It was a great experience.

All in all, I think the bulk of the writing took less than 2 months. I really threw myself into because I found it exciting, but there was no rush. You can do it at whatever pace you find comfortable.

Slowly but surely the traffic on the site was eeking upwards, and my total word count was getting towards my 80,000 target words. Then came time to build the book.

I used an awesome site which I cannot recommend enough for self publishers called Leanpub. Leanpub lets you sell your books incomplete, which is a great way to test the water to see if people actually care about the topic. As you add more chapters the readers get sent the update, and you can increase/decrease the price as you see fit. Even once the book is complete I’ve found it to be the best place to sell my book in terms of conversion rate.

It also has a great workflow, where you simply write your book in Markdown and save it to dropbox. You press one button and it builds your entire book, creating PDF, ePub and mobi formats (ready and formatted for Amazon, for example). I simply exported my website, then went to work formatting it. Once complete I put the book up for sale whilst writing the exclusive material and started advertising it on my site at a discount rate. The sales started coming in, proving I was on the right track and keeping me motivated to 

The Finished Article

Once I’d completed the book I threw it up on every platform I could, Amazon obviously, but also using Smashwords to sell it via the iBookstore and all the other markets there are. I continued to write new pieces for the site for a month or two, and then I’ve just left it. If someone’s kind enough to email me to say they loved the book, I ask them to leave me a review on Amazon which hopefully helps the sales there somewhat. Other than tweaking the prices, and changing the site theme to speed it up, it now just sits there generating me revenue. It’s awesome.

Along with the money, I now have a mailing list of about 2000 people interested in what I have to say. I have a book on my resume, along with articles from a bunch of well regarded geek sites. I also have a popular website that averages about 500 or so hits a day from ambient google traffic.

A pretty worthwhile endeavour all in, and something I’m convinced that anyone can do. If you want any help or advice, feel free to tweet me @SambaHK.

Discover how TDM Is Essential To Achieving Quality At Speed For Agile, DevOps, And Continuous Delivery. Brought to you in partnership with CA Technologies

Topics:
writing ,java ,entrepreneur ,careers

Opinions expressed by DZone contributors are their own.

{{ parent.title || parent.header.title}}

{{ parent.tldr }}

{{ parent.urlSource.name }}