Daniel Shiffman has been working on The Nature of Code for over two years now, a book based on a course he teaches at NYU’s Interactive Telecommunications Program. After going through a traditional publisher for his first book Learning Processing, Daniel decided he wanted to try the self-publishing route. He launched a Kickstarter project with a simple, candid video and a few well-priced rewards, including access to the book as it was being drafted. By exposing his book to the public as a work-in-progress, Daniel not only inverted the traditional publishing model but also transformed his project into an extension of the classroom. Backers could offer feedback and learn while also supporting a book they wanted to see come to print. Pretty cool!
Can you share some of your thoughts on traditional publishing vs. self-publishing? For example, what’s the process you went through with your first book?
Learning Processing took almost three years to finish. I started with a publisher who, after a year, dropped the book and I spent then another year looking for another publisher. I didn’t take a lot of care in choosing a publisher or thinking about the terms, I just thought — “really? you want to publish a book by me? ok, I’ll do it.” Unfortunately, my experience was not positive. I had five different editors assigned to me throughout the process, none of which gave me any content feedback on what I was writing. The publisher outsourced the typesetting to save money which resulted in a great deal of mistakes and inconsistencies in production. In addition, I found the pricing of the book to be off the mark. My goal was to write a friendly, inexpensive (black and white), paperback introduction to programming in Processing. The publisher’s goal was to sell an expensive, heavier textbook. Now, I want to emphasize that my publisher (Morgan Kaufmann / Elsevier) had good intentions. They honestly wanted to produce the best book possible, one that I would be happy with, they would be happy with, and that readers would enjoy. And they worked hard to make this happen. Unfortunately, they have to work with very tight budgets and were stretched extremely thin. In addition, I don’t think they were terribly familiar with the world of open source “creative” coding environments like Processing, their world is computer science textbooks.
So for this Nature of Code book, I felt it was important to try self-publishing. I didn’t get editing support from the publisher, why not hire an editor? I wasn’t happy with the pricing, why not set the price myself? Then there’s the question of marketing — does a publisher add value and help you reach an audience? In some cases, the answer is yes. The O’Reilly “Make” series, for example, does an amazing job creating a community around their books and products. Still, in the case of learning to program in Processing, reaching the audience is as simple as one URL — processing.org. No one is “impulse buying” a Processing book at Barnes and Noble store.
There is one thing that I quickly discovered that a publisher offers that I was not getting along my self-publishing path. One very important, highly crucial detail — a deadline. I floundered for two years saying I was going to write the Nature of Code book, but only drafted a little bit here and there. On my list of things I needed to do, it was always at the bottom. Along comes Kickstarter, and with an audience sitting and waiting (and having spent cash money), I live in fear of not meeting my deadline. The book is not at the bottom of my list any more, but right there at the top.
Your book is tied to a class you’ve been teaching. Can you talk a bit about how teaching and what you discover in the classroom has influenced what goes into the book (and vice versa)?
It’s been great to write along with teaching. It’s just a good feeling to know that writing the book is preparing for class and preparing for class is writing the book. There are no competing interests and I can dedicate myself to the students and the class while getting the book done. And every time a student asks a particular question or is confused by a particular example, I take a note and make sure to address that issue in the book. Also, I’ve been using my students’ homework assignments as exercises in the book.
Let’s say you know nothing about coding. What will happen when you try to pick up and read The Nature of Code?
Unfortunately you’ll be a bit lost. You have to know something about coding in order to read Nature of Code. But you don’t have to be an expert, the book is meant to be friendly and accessible to the beginner. Still, it assumes the fundamentals. I’d recommend reading any of the intro Processing books listed at http://processing.org/learning/books/ first, in particular Getting Started with Processing by Casey Reas and Ben Fry which is a really nice, physically lightweight (but comprehensive) book.
You’re releasing drafts of chapters to backers as you finish them — that’s pretty cool. Have you gotten any feedback from backers and has it been helpful for your writing process?
It’s been fantastic. I’ve gotten feedback pointing out the littlest of typos as well as sophisticated explanations and discussions of the scientific concepts in the book. This has been the most helpful, my expertise does not lie in the science and so having readers help me to ensure that I’m my physics explanations are not wildly inaccurate and off the mark, is extremely helpful and reassuring.
Think it’s great that your project is about more than simply raising funds to produce the book, but about motivating yourself to finish it. Has it worked — are you getting more writing done? And has your mom/grandmother/best friend from college called to ask how the book’s coming along?
So far so good. I blazed through the first three chapters (and the fourth is coming out this week). However, I’ve lost a little bit of momentum as the semester gets busier at ITP. Still, I have spring break coming up and I hope that week will get me caught up. And yes, my mom does ask me about the book constantly. More than that, she leaves me voicemails whenever anyone with an interesting name backs the project.