A Hacker Writes a Children's Book

[2018 Update: After posting this article and making it to the top of r/programming and HackerNews sales of the book increased noticeably. The book is now nicely profitable, I’ve otherwise left this essay as is.]

[Editor’s Note This is a post mortem of my experience writing, publishing and marketing a children’s book about programming. The essay was written from notes taken over the course of the 10 months working on the book.]

tl;dr; Although we enjoyed the project, our child loves the book and it enhanced both our professional networks, the book wasn’t profitable. So from a strictly financial point of view we should have stuck to consulting and dumped the money in index funds. That being said I would do it again.

Amazon Link

Amazon UK Link


This is the first question non-parents ask me why? Amazon lists 350,700 books for children 3-5 so why write another? I’m a programmer and although they had have thousands of books explaining how a construction site works, and hundreds of books explaining how farms work, they did not have any books that explained what I did. So my toddler would ask what I did at work and all I could say was “Daddy talks to robots.” I wanted a better, age-appropriate way to explain what I did.

Additionally while my wife and I had worked on many projects, they were all doing work for other people. We wanted a project that would be ours.

M is for Map

Market Research

As soon as I came up with the idea for the book, before we even started writing it, we tried to make sure there was a market for the book. I knew that I wanted a children’s book about programming. But that’s just me. The only book about programming for small children I was aware of was the JavaScript for Babies series so I wondered if there was any market for what I would (eventually) spend the next 10 months on.

Any creative process is a labor of love, but ideally it also pays the bills.

A few years ago I had read Start Small, Stay Small by Rob Walling where he talks about the steps of a self funded start up. Although writing a book is different than a a start up two piece of advice stuck with me, do lots of market research and niche down.

So the the first things I did, almost before I wrote the first rhyme, was to Google “How many programmers are there in the US?” There are about 3.5 million. Which is a pretty decent market size. The next question is “Are programmers looking to buy children’s books?” A tactic from the book is to use Google Keyword Planner to see if people people are searching for terms related to your product. In my case “programming books for kids”. There’s a pretty large search volume for that term, so I was confident there was a market for children’s books about programming.

I is for Inheritance

The other piece of advice in the book is to niche down. Target the smallest audience that you think you can make a profit from. In the book it’s presented that your advantage as a solo entrepreneur is that you can specialize and solve the problems of just your target audience.

Fortunately I had already done this. While there are lots of books, videos and programs to teach 8-12 year olds how to program there wasn’t very much targeting younger children. Since the book is teaching the kid their ABCs, while introducing them to basic programming concepts I was targeting an underserved niche.

S is for Source Control

Getting the book Illustrated

Writing the initial poems only took about a month. By the time I had ~20 rhymes written I started thinking about how I was going to illustrate the book. I waited that long because I wanted to make sure that I could come up with a programming rhyme for each of the letters in the alphabet. I figured once I hit 20 I was safe on the the rhyme front.

My first thought for an illustrator was my wife. She already knew the material having helped with many of the rhymes. She’s a fine art photographer and a photoshop ninja so I thought that she might be able to to illustrate it. But between her job and creating her own art she did not have time to learn Illustrator.

Going between different Adobe products is the Programmer equivalent of Enterprise Java Middleware to flavor of the week JavaScript Framework. There’s a ramp up time.

My next not so bright idea was “Hey I can learn Illustrator well enough to make a children’s books.” In my defense I was aware this might not be the best idea. So I timeboxed myself and gave myself a week to try and complete some tutorials. After it took a full hour to follow a five minute Youtube tutorial I gave up.

On the bright side trying to do it myself made me perfectly happy to pay someone else market rates.

Hiring an Illustrator.

I spent about a week reaching to friends who were illustrators but none of them ended up working out.

However one of my friends had recently hired an illustrator for his kickstarter through UpWork. He had nothing but good things to say about the process so I decided to start looking there.

We ended up looking at around 80 illustrators on UpWork. We filtered it down to a list of 8. Since I didn’t trust my artistic taste my wife ranked them without looking at their hourly rate. This was important since she didn’t want to be biased against a better artist just because they were expensive.

The art is what attracts parents to a book, so we didn’t want to skimp on it.

I’m happy we did it this way because while our illustrator was twice as expensive than some of the other illustrators we looked at the art she produced was amazing.

Y is for Yak Shaving

Working with an Illustrator

While I had rhymes for 20 of the poems even before I only had a handful of the illustration ideas. I’ve done some word related projects before so the poems were relatively easy. The images on the other hand were outside my comfort zone. For added difficulty some of the concepts (such as Virtual Machine and Web) were fairly difficult to illustrate.

Some rhymes were impossible to illustrate, which is why there’s no M is for Monad in the book.

This is where working with two visual artists paid off. My wife came up with >30% of the image ideas in the book. That number understates her contribution though because she also vetoed many of my worst ideas. Suffice to say if we had used my initial ideas most of the pictures would be boxes connected with arrows.

G is for Garbage Truck

I’ve heard horror stories about contractors but luckily Catherine was great. She sketched everything before doing a full illustration. This meant we could see what an idea looked like before she spent much of her time and our money on it. There were some hiccups mainly due to a 16 hour timezone difference. This meant there was usually a day or two turnaroud. So if I had not sent a detailed description of the image idea it could cost us a day. This problem was exacerbated by me initially only having her work on one image at a time we solved this by

  1. Always sending 3-4 sentence description of the idea. Preferably with links to similar images or a (terrible) sketch of what we wanted.

  2. Sending batches of 3-4 image ideas at a time. This meant if there was an issue with one of them she wasn’t blocked. We experimented with sending 5-6 image ideas at a time but that ended up being too much for me to keep track of. If I were doing it again I would definitely have managed the work through Trello instead of Google Docs.

  3. Remembering that you are not their only contract. As programmers we hate context switching. Well I discovered that freelance illustrators do to, so be respectful and send them enough work that it’s worth their time to work on your project.

S is for Xor

Choosing to Self Publish

In parallel to finding an illustrator we also had to choose how to publish the book. There are pros of going through a traditional publisher. With a traditional publisher the marketing of the book would have been better done. On the other hand it would have been a far more bureaucratic process and I also would not have learned nearly as much about marketing if we had not self published. Mainly to avoid the bureaucracy we decided to self publish.

There are dozens of articles about how to choose which publisher to use. We ended up going with CreateSpace for the simple reason that it’s owned by Amazon.

H is for Hacker

As a parent I buy nearly everything through Amazon. So I wanted buying our book there to be as easy as possible.

Overall working with CreateSpace/Amazon was painless. The only complaints we had were that certain steps took much longer than expected (getting the book approved, getting “Look Inside” turned on) and that they do not let you print hardcover copies. Besides that everything was easy and multiple people commented the print quality was good (which is a concern with Print-On-Demand books.)

Launching & Marketing

“So creating the book was the hard part right, the book will sell itself.” I actually wasn’t naive enough to think this so we planned on spending 4 months on marketing.

Initial Soft Launch

I’d launched enough products that I prefer ‘soft launching’ whenever possible. Superstitiously neither my wife or I had told anyone that we were working on a book. We both announced it to our friends on FaceBook and Twitter, and told all of our co-workers about it. This led to about two dozen sales and two very nice reviews on Amazon. This was nice because it helped our Amazon ranking and gave us a nice confidence boost.

Online Advertising

We tried a few different forms of paid online advertising. The problem with advertising is that the profit margin on books is so low that we could not afford to bid that much for it. Combined with many people having ad blockers (especially programmers) the ads did not do that well. In order of effectiveness they were.

  • Amazon Sponsored Product Ads - These (barely) paid for themselves. Specifically for keywords I used the titles’ of books in similar niches. The auto-targeting ads just managed to spend lots of money, without selling anything. My hypothesis is that if you’re on Amazon then you’re willing to buy something.

  • Pinterest Ads - We also saw a small boost in sales when we were running Pinterest Ads. It seemed like it took a few days after a user pinned the product before they bought. I think these would have done better if I knew how to use Pinterest as a user

  • Reddit Ads - We got very little sales from Reddit ads. I think the user base just ignores ads.

  • Facebook/Instagram - I think we made maybe 3 sales from Facebook. Maybe I was using it wrong, but we tried a few different ad types and none seemed to work.

We also looked into Google Ads, Twitter ads and sponsoring some email newsletters that target programmers. From the articles I read on book marketing it did not seem like either Google Ads or Twitter ads were a very common for children’s books so I avoided trying them. The email newsletters were all reasonably priced for the audience you were getting access too. However the margin on books is so low that it would have been hard to make a profit by advertising in them.

K is for Keyboard

Review Copies

We sent review copies to both traditional venues (NYT children’s section, Kid’s Book Review, etc.) and a lot of tech-adjacent bloggers with kids the appropriate age. Neither of these got us any publicity.

I think that the traditional venues did not work because they are meant as a way for traditional publishers to advertise their books. They are not really meant for self published authors.

P is for Program

I was more surprised that none of the tech bloggers with kids mentioned the book after we sent them a copy. I think the book may have been too niche for them to mention. I also realized all the people we sent copies to were because I respected them, not really for marketing purposes. And they all thanked me for the copy.

Looking back I would still send copies to these people, but not think of it as marketing.

Content Marketing

I messaged a few different parenting sites about writing articles for them related to teaching young children about programming. None of them were interested. I ended up putting an article on my own site Programming Books for Babies and Toddlers. It currently ranks on the first page of Google results for the topic. I can tell from the Google Analytics that it’s only driven a few sales. On the other hand the links are all affiliate links, which is nice.

Giveaway Contests

To further expand our audience we looked into doing a Giveaway contest. This was fairly inexpensive and straightforward to do. which was good because it did not seem to drive many sales. I think this might be a case of “advertising to people looking for free stuff” not being a good idea.

D is for Debugging

Other People’s Ideas

Around mid September after I tried all of the above and (excepting Amazon ads) did not see the results I wanted. So I tried advice from other people. Some of this advice was given in the form of “have you looked at…” and some of it was given in response to me mentioning low sales numbers. All of it was appreciated. A common theme with this advice was that it was really hard to quantify the effect of it on sales.

Reworking Amazon Description

At some point I wrote in to the podcast Startups for the Rest of Us asking for advice on launching a book. Both the hosts have written books in the tech space so I thought I might get some useful feedback. They answered it in Episode 360.

The most actionable piece of feedback was that I should re-work the Amazon Description to improve my SEO. I spent a day just reading other books copy and another two hours optimizing the ~100 words of the Amazon Description. This improved the conversion rate of people clicking on the book.

Giving to Libraries

I got coffee with a friend who was working on his own audio book. When I mentioned that online ads were not working he said “You should be trying to reach parents offline.” This made me think of offline places I had found books for my son. Besides other parents, libraries and bookstores were the biggest places for us to find new books.

O is for Open Source

I sent emails to about a dozen library systems. I concentrated on larger library systems in tech cities. For example I sent an email to Kings County Library (surrounds Seattle) but not Mountain View Library (only a single library). Some were not interested in the book because there was no hardcover version, which libraries prefer. The San Jose library system was especially nice, since they were planning on running a STEAM workshop and the books were helpful. So if you’re reading this article and don’t want to buy the book, there’s a good chance your local library might have it.

Reading to the Girl Scouts

Another friend who has run two successful businesses mentioned I should teach a class that was related to the book as a form of monetizing it. I thought this seemed like a lot of work. But a coworker asked if I could read the book to her daughter’s Daisies (young girl scouts).

Q is for Queueing

Reading to the Girl Scout Troop reminded me of why I wrote the book in the first place. Teaching kids about programming is a lot of fun. I genuinely enjoy programming and I think the girls recognized that so they enjoyed it. I gave each Daisy a copy of the book to take home. My coworker told me a bunch of the girls had taken the books to school the next day and showed all their friends. This was the last bit of marketing I did for the book, and it felt good to end on a high note.

So now I have Girl Scouts selling my book, if it sells like their cookies I should be able to retire in a week.

Lessons Learned

The book has not sold as well as we would have liked. Part of this has probably been due to the nature of the products. Unlike selling to business selling to consumers is very hit driven. But it’s important to focus on what you can control. So the things that I did wrong.

  • Started Marketing too late. I probably should have either started with a Kickstarter, pre-announced the book, or found a publisher. Book marketing is competitive enough that I needed a better plan than I had.

  • Chose a small margin product. The small margin meant that I could not bid that much per click on advertisement. It also meant that certain marketing channels were outside my price range. Next time I would definitely create a more profitable per unit project.

Things I did right

  • Hiring a freelancer for the project. Having someone you can pay to do these things can mean it’s done right. If I had hired a marketer sales might have gone better.

  • Doing the project. Although sales weren’t as high as hoped, it still only cost us ~$1,500 to do. I learned a lot about marketing while doing it. And it’s an excellent professional calling card.