Jolt Book Finalists: Incredibly Strong

Normally, I don’t have a lot of problems making decisions like this, but I’ve changed my mind 3 times about which book will get my top vote in this year’s Jolt Awards for Technical Books. This is a very, very good set of books:

Books (Technical)

Code Quality (Addison-Wesley) by Diomidis Spinellis

How to Break Web Software (Addison-Wesley) by M. Andrews, J. Whittaker

Java Concurrency in Practice (Addison-Wesley) by Brian Goetz et al

Rails Recipes (Pragmatic Bookshelf) by Chad Fowler

Refactoring Databases (Addison-Wesley) by Scott W. Ambler and P. J. Sadalage

Head First Object-Oriented Analysis and Design (O’Reilly) by B. McLaughlin, G. Pollice and D. West

Ruby Cookbook (O’Reilly) by Lucas Carlson and Leonard Richardson

CSS: The Missing Manual (O’Reilly) by David Sawyer McFarland

Perhaps We Need Something Other Than Silver Bullets

Of course, debates on the theoretical effectiveness of programming paradigms may be missing the point entirely, given the too-horrifying-to-be-true assertion that many programmer applicants cannot:

Write a program that prints the numbers from 1 to 100. But for multiples of three print “Fizz” instead of the number and for the multiples of five print “Buzz”. For numbers which are multiples of both three and five print “FizzBuzz”.

Last night, I watched a new TV show called Are You Smarter Than A Fifth Grader? (implication: yeah, I watch American Idol. Want to make something of it?) The contestant was a “Computer Systems Analyst.” Rather than answer the question “How many decades in two millennia?” she took the money she had won previously (by triumphing over her doubts about “What is the closest star to the Earth?”). I think she left $50,000 on the table. When asked to guess, she offered “20?” So, yeah, I’m thinking she might have trouble with FizzBuzz.

In far, far brighter news, Microsoft today announced the Beginner Developer Learning Center, which is intended to provide resources for people all the way to “zero experience.” This is a really wonderful idea. I had inklings, but not direct knowledge, that something like this was in the works and I am looking forward to poking around the site.

P.S. Hilariously, Jeff’s comments section is filled with people demonstrating their prowess by implementing — and sometimes failing — the program. Don’t do that here. As Scott Hanselman says, “You’ll only die a little inside if you do.

I, Werewolf?

My dispute with Wesner Moise continues…

I’m going to take this post with good humor — the “werewolf” being a reference to the question of a silver bullet and an image in one of my responses. And the “naked, pale-skinned” thing I’ll take as pure jealousy of my chiseled physique, descended from Irish kings, tanned in the warm glow of the tropical sun, and followed, wherever I travel, by the wistful sighs of desirous women.

Anyway

What we’re arguing about is whether there is any:

single development, in either technology or in management technique, that by itself promises even one order-of-magnitude improvement in productivity, in reliability, in simplicity.

This is how Fred Brooks defined the Silver Bullet for Software Engineering. In particular, Wes champions functional programming as a candidate.

My side of the original spat were these three posts in early December. In mid-January, we disagreed as to whether a 14-line Python recursive descent parser and Microsoft’s implementation of regular expressions had any relevance to the question.

Now, he’s posted something that’s either just an ad hominem attack or a response. I’ll take it as a response.

Wes says that I’m “wedded to the idea of no silver bullet.” Not so. I’m not emotionally committed to it. I’m just convinced, absent substantive evidence to the contrary, by the arguments that Brook made two decades ago and which have held since. I’m aware that this places me in what Kuhn would label the “dominant paradigm” and sets me up to be pushed aside by some revolution. But they’ll need more than mere assertions of merit to sweep me away: the werewolf hunters are going to have to ship commercial- and enterprise-sized applications that are developed an order-of-magnitude faster and that, to date, seems to be a sticking point.

Further, let’s be clear that I’m a fan of functional programming: ref. this post preceding the spat in which I praise Wes’s advocacy or re-read any of my posts in this spat, in which I regularly make it clear that I like functional programming approaches and am only skeptical of the hyperbole that it is a silver bullet.

The RegEx parser was held out as a template for a silver bullet approach. I pointed out that it’s capabilities are vastly different than what we mean by RegEx capabilities in a language. The example is, in fact, a perfect example of Brook’s central argument:

the hard part of building software [is] the specification, design, and testing of this conceptual construct, not the labor of representing it and testing the fidelity of the representation.

This was lost on Wes, who said:

[W]ith this approach, we can get a reasonable implementation of regular expressions over lists of arbitrary types in less than 200 lines of code, which is two orders of magnitude more concise than Microsoft’s more specific implementation over strings. I’ll produce a port of this one day and post it in my blog.

So there’s a testable claim: a program that clones Microsoft’s RegEx implementation including time and space constraints. I doubt it can be done in 200 lines of code. I doubt that “testing the fidelity of the representation” can be done in an additional 200 lines of code. But perhaps someone will prove me wrong.

Wes invokes Charles Simonyi and IntentSoft as perhaps the company that will deliver the silver bullet. I hope he’s right. Simonyi is a fracking genius and is absolutely credible. However, surely it’s fair to point out that IntentSoft has been in business for 5 years without shipping a product and Simonyi was talking about intentional programming for years before the company incorporated. Whatever the ultimate benefits of intentional programming, there appears to have been difficulty boot-strapping themselves into silver bullet productivity.