Wednesday, September 19, 2007

Are Authors Technological Poseurs?

Recently, the JRuby team has gone through the motions of getting a definitive JRuby book underway. We've talked through outlines, some some chapter assignments, and discussed the overall feel of a book and how it should progress. I believe one or two of us may have started writing. However the entire exercise has made one thing abundantly clear to me:

Good authors do not have time to be good developers.

Think of your favorite technical author, perhaps one of the more insightful, or the one who takes the most care in their authoring craft. Now tell me one serious, nontrivial contribution they've made in the form of real code. It's hard, isn't it?

Of course I don't intend to paint with too wide a brush. There are, without a doubt, good authors that manage to keep a balance between words and code. But I'm increasingly of the opinion that it's not practical or perhaps even possible to maintain a serious dedication to both writing and coding.

What brings me to this conclusion is the growing realization that working on a JRuby book would--for me--mean a good bit less time spent working on JRuby and related projects. I fully intend to make a large contribution to the eventual JRuby book, but JRuby as a passion has meant most of my waking hours are spent working on real, difficult problems (and in some cases, really difficult problems). It physically pains me to consider taking time away from that work.

And I do not believe it's from a lack of interest in writing. I have long wanted to write a book, and as most of my blog posts should attest, I love putting my thoughts and ideas into a written form. I enjoy crafting English prose almost as much as I enjoy crafting excellent code. But at the end of the day, I am still a coder, and that is where my heart lies. I suspect I am not alone.

When I decided to write this post, I tried to think of concrete examples. Though many came to mind, I could not think of a way to name names without seeming malicious or disrespectful. So I leave it as an exercise for the reader. Am I totally off base? Or is there a direct correlation between the quality and breadth of an author's work and a suspicious (or obvious) lack of real, concrete development?

22 comments:

  1. murpheee: But there is few orders of magnitude of differences between writing small, focused essay and a full technical book, I guess.

    ReplyDelete
  2. Elliotte Rusty Harold has written a bazillion books and XOM which is a great library IMO. (Along with being a university prof)

    ReplyDelete
  3. There is a lot of truth to what you have said. You have a limited amount of time. How should you spend it? Capturing details for posterity and *maybe* teaching someone something or solving problems in a tool that people can use to earn a living? Which is more important to you?

    ReplyDelete
  4. Ah... university prof: what about Terrence Parr of ANTLR fame? He just brought out the ANTLR 3.0 book @ the Pragmatic Programmers. Oh... Joe Armstrong and his Erlang book.
    I'd call their code contributions to development "real and concrete".

    @Vladimir:
    Well, depends. Some of the folks in the Beautiful Code book are Authors of books, eg. Michael Feathers or Brian Kernighan and others.

    But mario is right - this is more of a time problem. Mind you - I'm not sure what would go into a JRuby book right now - wouldn't that be outdated by the time it's printed?

    ReplyDelete
  5. No mention of Ola's book? I plan on ordering a copy.

    Still, it would be great to have some comprehensive material with a clear learning path to make it easy for new adopters, but it might be worth considering making it an online reference rather than a printed book. Atleast that way it could keep up as JRuby evolves, and the community could contribute to grow it. You have a wiki, but im thinking something chapter oriented that reads like a book. I for one would be interested in contributing to such an effort.

    Readily available, comprehensive guides that "Joe Developer" can understand is the way to win users.

    ReplyDelete
  6. Many are, and it may be the rule. But of course there are exceptions to that rule. Jeffrey Richter is a good example of an exception.

    ReplyDelete
  7. It's definitely not common to have a well-developed writing talent along with a well-honed coding craft (I say this as an editor of technical writings). Personally, I've found that my code-related contributions decrease as I spend more time writing and increase when I finish the writing project. I think that's more due to the time demands of each rather than any necessary conflict between the two abilities.

    ReplyDelete
  8. Being a good author or developer has nothing to do with how you spend your time on any particular day, month, or year. In fact, your argument that writing a book sucks away your development chops also means that doing anything more than coding should do the same thing.

    I think what you are seeing is that most people aren't good at either development or writing. It's even rarer to find someone who is good at both. But, as I noted, pick any two non-overlpaping skills and you'll find the same thing.

    ReplyDelete
  9. As you might imagine, I've been approached over the years quite a few times about writing a book on either Struts or JSF. After looking at the work involved, I have concluded "writing code is fun, writing words is work" -- and I'll bet I am not the only one who feels that way :-)

    Craig McClanahan

    ReplyDelete
  10. It's not just because you can't do it that nobody can do it :P

    ReplyDelete
  11. And due respect to Richard M. Stallman's GNU Emacs. The manual is very much a 'manual', but a standout of the genre - clear, crisp English, well organized for its purpose.

    Why do some technical authors think we care about their kayaking adventures or sci-fi stories?

    ReplyDelete
  12. Bjarne Stroustrup once created a programing language and a wrote a few books about it.

    Andrew Tanenbaum delivered Minix, a forerunner of the Linux kernel project.

    Come to think of it, many people have done well in both domains. So is Nutter wrong?

    1. Many software books are junk, precisely because the authors learn just enough to write a book on the subject. I'm especially suspicious of authors that cultivate a brand name and grind out books for each new buzzword. You know who you are!

    2. No doubt it's very hard to do both at the same time. I hope Nutter sticks with JRuby development for now. For big book sales, first grow usage of the software. We already think JRuby is cool, but it's not a guaranteed success; Jython was stuck in neutral for years. Make JRuby an obvious choice for solving real problems. If you achieve that, many more people will buy books by the creators, whenever they arrive.

    ReplyDelete
  13. kent beck - tdd programming
    andrew davison - killer java game programming

    still not enough good?

    ReplyDelete
  14. Most technical books being written these days are crap! These "authors" do not even have training as "technical writers" and yet they get 'book deals'.

    I would second the K&R mention. And along with Andy Tannenbaum, what about Knuth? Is he just a talking head? I think he went furthar by generalizing the specific problem of programming the solution to a specific problem.

    This is why I have always found the ravings about "pickaxe" lamentable. The book is rather shoddily put together, but since the ruby community hadn't seen anything like it in their realm they started raving about it, and still tend to do so even though compared to other introductory texts (python, C etc) it is quite poorly written.

    Come to think of it, what exactly has Dave Thomas contributed to the programming side? I haven't seen anything done by him that would qualify as a beautiful piece of code etc. ??

    ReplyDelete
  15. One of the reasons for the low quality of books is that many consultants find a book title to be great PR.

    ReplyDelete
  16. I don't know if I'm a good author or a good developer. I try to be both, but I've learned not to try to be both at the same time. Writing a good book is very hard work. I can't do that and ship good software at the same time.

    ReplyDelete
  17. Just because you haven't seen the code written by many authors, doesn't mean they can't write good code or are "poseurs". Some of the best authors have honed their skills by writing proprietary code for a living. The best books are written by people with real world experience, and it shows in their writing.

    ReplyDelete
  18. My favorite?

    Josh Bloch.

    Next up?

    Knuth, or maybe K&R.

    Enough said!

    ReplyDelete