Due to space constraints (hey, people will only read so many bytes in a newsletter), we only published snippets of the interview in the December Journal. This post contains the full interview. Do check out the December Journal for snippets of our author interviews, the Countdown to 2014 promotion and links to the other author interviews.
Ernest on books Jeanne: Why did you decide to write a book?
Ernest: I was cold-called by a literary agent! He read about the Jess rule engine on the Internet and thought it would be a good book topic. I had actually already written an intro Java book for another publisher, but I don't think the agent knew about it. In any case, the idea of publishing a book about my own creation was exciting, and I signed up pretty quickly.
Jeanne: Do you prefer to read e-books or paper books? Why?
Ernest: I love my Kindle, and spend some quality time with it almost every day, but I find myself turning to paper books for reference materials. Although my Kindle has quite a few technical books on it, I mainly use it while reading for pleasure. Nothing beats a paper book filled with Post-Its and marginal notes when you're learning.
Jeanne: Do you have a favorite book?
Ernest: Limiting this to technical books: there are a number of books that stand out as milestones in my life: books I love because they came along at just the right time to open my mind to possibilities I hadn't considered before. There are still plenty of excellent books being written today, but just as with the music you hear in your youth, the books you read early in your career are the ones that have the best chance of staying with you.
Jeanne: Any titles?
Ernest: When I was quite young I read a book called "The Recursive Universe" which talked, about other things, about Conway's famous "Game of Life". That book cemented a number of ideas in my mind about computability and infinities -- the same themes explored by "Godel, Escher, Bach", which is another favorite -- and I can feel some of "The Recursive Universe" in the work I do even today.
Jeanne: Any titles I might have heard of?
Ernest: Another milestone book was Kernighan and Pike's "The UNIX Programming Environment," which was my first exposure to parser generators and to a lot of the central ideas of software engineering. Working through the code in that book led to my love of parsing, compilers, and multilanguage programming systems: I am never happier than when I'm writing code in language A that generates code in language B that generates code in language C. That's why the "Dragon Book" (Aho and Ullman's "Principles of Compiler Design") is another one on that list. There are a whole bunch of books from the dawn of Agile that had a profound effect on me; these books came along at a time when then were sorely needed, and the Internet revolution wouldn't have been the same without them. If I had to single out one, it would be Martin Fowler's "Refactoring", which I still recommend to people that work for me. This book not only teaches you how to write and test software, it teaches you a whole way of thinking about software, and describes an ideal still worth striving for. I have plenty of more recent books sitting around my desk -- many of them excellent -- but let's be honest: you never forget your first love.
Ernest on technology Jeanne: If you had a magic wand and could universally improve one software development practice, what would it be?
Ernest: I suppose I have many pet peeves, but if I had to choose one, I would make people write shorter methods and smaller classes.
Jeanne: You mean a 200 line method is hard to read?!
Jeanne: Why should a developer learn about rule engines?
Ernest: Every developer has a toolkit that they bring to the table when it's time to solve a problem. Someone just starting out has a very small toolkit: a hammer, a screwdriver, a ruler. If they need to make a hole, they have to take the screwdriver and hit it with the hammer, and it doesn't work very well. Whereas someone who has been working for a while will hopefully have learned that to make a good hole, you need a drill. Unfortunately, some guys just keep banging on that screwdriver, and they get left behind.
Jeanne: So all I need is a hammer, screwdriver, ruler and rules engine?
Ernest: The more tools you have, the better equipped you are to solve diverse problems. A rule engine might not be something you use all the time, but when an appropriate problem comes along, if you're able to recognize it, you'll be able to address that problem efficiently. Rule engines are great when you have a lot of data to sort through, and ever-changing criteria to apply to it, because they make it easy to change the criteria dynamically, and keep track of which criteria were applied to what data when.
Jeanne: You've been a developer a long time. Yet in our industry, someone with 3 years of experience is a "senior" developer. What advice do you have for someone about becoming a "more senior" developer?
Ernest: Get as many tools for your toolbox as you can. Don't hit screwdrivers. Don't just read books about your own area: learn about how things are done in other fields. And never assume you're done learning.
More Ernest Jeanne: Do you have a favorite quote? If so, what is it?
Ernest: Nothing comes to mind!
Jeanne: I have a paper of quotes at work and you are on it! One of favorite quotes is by you: "call a duck a duck, not a feather bearing aquatic avian". It's a nice reminder that when writing emails or technical documentation (or really anything) that it is important to write simply.
Jeanne: What is an interesting hobby that you have?
Ernest: I draw and paint (not nearly as much or as well as I'd like, alas.) Occasionally I post some artwork at Coderanch.
Jeanne: How is drawing like development?
Ernest: Every drawing is like a new, green-field software project. It's exciting, and you have choices to make. You can stick to techniques you've used in the past, or you can try something new. When you're just starting a drawing, all possibilities are open; as the drawing progresses and you refine the likeness, your choices become more limited, and you have more invested, so you become more risk-averse. The big difference, though, is that when the drawing is finished, it's finished. It's hanging on the wall, and you can move onto the next one. There's no maintenance phase for art