As we’ve recently introduced Slack here, at Black Pepper, we’ve been thinking how to make use of its full potential. Granted, it’s both fun and useful for quick chats, but we wanted more.
So we came up with this novel concept of doing Q&A sessions with some of the guys and gals here in the team over Slack, so that we can then give you a glimpse into life at Black Pepper. We settled on one question a day, as most of us do tend to focus on programming, not answering questions asked by the nosy marketer.
In today’s interview, we are getting an exclusive insight into a published author’s mind. It probably helped that he’s also one of our team members :)
David Griffiths is not only a brilliant developer, but a passionate writer of programming books. Since we’re keen on showing that our colleagues have a variety of interests, we thought an interview with him was in order.
Sound interesting? Read on to find out more.
So David, how did your story with Black Pepper begin?
I came to Black Pepper toward the end of 2011. I've been working with Java since the mid-90s and in Agile development, mostly Extreme Programming, since about 2004. I've worked as an Agile coach, consulting at telecoms and banking companies. And I've also worked in other languages such as C, Ruby and Python, each of which I've written books on.
Now let’s have a bit of fun: if you were a programming language, what would you be and why?
C. I like detail.
Yes, I can see by your detailed answer :)
Okay, back to reality for a bit. What was your favourite project you worked on at Black Pepper so far?
We’d created a system for a large supermarket chain a couple of years back that they used to organise their annual worldwide conference. 2,500 store managers needed to be able to enrol, and select their transport, hotels, and schedules online. During the conference they used a live Twitter-style messaging system to ask questions of the presenters on the stage. We had to build the whole thing in around 3 months and it had to work first time. And it did. It was primarily written in Java/ SpringMVC, with a custom testing framework. There was a mobile app that was included in the solution that was written in jQuery Mobile and PhoneGap. I remember writing automated tests for about 80-90 different scenarios just to cover the initial registration form. I was very proud of the work we did on that system.
That sounds really complex, I can see why you enjoy being a developer. But besides the programming, what do you like most about Black Pepper?
The people. They're an intelligent and engaged bunch who are always prepared to solve problems with new and novel approaches.
How about we lighten up the mood with a series of quick questions? Pick your favourite without thinking too much, okay?
Windows or Linux?
Facebook or Twitter?
Android or iOS?
Xbox or PS4?
I’m far too old for either, but guessing Xbox.
Batman or Superman?
Lord of the Rings or Star Wars?
Star Wars. As long as it's the pre-Special edition originals.
Game of Thrones or The Wire?
I've never seen Game of Thrones, but I suspect I would still prefer The Wire. I'm not a sword and sorcery person.
Fish and Chips or Sunday Roast?
Definitely Sunday Roast.
Lager or ale?
I don’t drink, so neither.
Black pepper or salt?
Clearly black pepper. It enhances flavours, rather than replaces them.
Right, back to full sentences now. You’ve recently published a new book “Head First Android Development” – your fourth so far. It seems you’re a bit of a superhero – software developer by day and acclaimed writer by night. How long does it take to write a book like this and how does your day to day life change during the process?
The books usually take around a year, and consume pretty much any free time that's available. When you're not writing the book, you're thinking about the book. I spend around 2-3 hours a day driving, and much of this time is taken up planning what happens next. Head First books always have a strong graphic element to them, and it can take a very long time creating the various diagrams and illustrations that are required. Each chapter will go through several iterations to ensure that the teaching is properly motivated. That's the secret to the success of Head First books: they are written to motivate the learner, not simply to pass on information.
So it's like Agile book writing? :)
It's exactly like Agile writing, because they are written in an Agile way. I begin by writing the first chapter as if it's a single-chapter book. So if you only have one chapter: what would it be? That's chapter 1. For chapter 2, you say "This is a 2 chapter book. We've taught *this* in chapter 1. What one other thing should we teach?" That's chapter 2. And so on. So the book is always, in some sense, complete. It just gets longer. Just like the way software is delivered in an Agile project.
I've even played planning poker in the past to select appropriate topics and the order of the chapters. I do two-factor estimation: I make estimates for value and effort. So value is the importance to the learner and effort is really the potential length of a chapter. If you take the value and divide it by the effort, you get a basic bang-for-the-buck measure. A value that means, in effect, "How much value would I, as a reader, get per page by reading this chapter?" Then you try to put the chapters with the highest bang-for-the-buck values first. There can be complications, because some topics simply have to come before others. Just as in Agile software, some stories have to be done before others. But as in An agile project, you try to specify chapters/ stories in such a way that they are relatively independent of each other.
You obviously use your programming skills when you write book. Do you need any additional skills to be able to write a book on programming that sells?
Yes. You obviously need some basic writing skills, but in order for the book to sell, you need empathy with the people buying it. What problem are they trying to solve? Which parts of the topic are difficult to grasp? And so on. In fact, empathy is also a key skill for software development. If you're able to see things from the other person's point of view, you are likely to create much more successful software.
Which is most satisfying – writing books about programming which sell out in the first 2 weeks or coding?
Writing books :) It's more interesting because human beings are more complex than computers. Beyond a certain level, you can master coding. But writing books for people is a never-ending search for improvement.
Because we like to be transparent and take pride in how business as usual goes on in our office, we’ll post more of these interviews, trying to offer you a rounded view of how our team see Black Pepper and feel about coming to work every day. You can read our first interview here and look out for the next one!