Wednesday, July 16, 2008

Finally Treeware

pp book cover on tableOK, it's finally here. I got my copy of The Productive Programmer in the mail last week, and today Amazon updated it's status to "In stock". For all those who have been patiently awaiting this book, it's finally here. Finally! The first glimmer of this book started in 2005(!), so it's taken upwards of 3 years to convert what David Bock and I were talking about into actual tree-ware. Because it took so long to produce, I suggest that, if you are going to buy one, you should go ahead and buy 2, in case you lose one. And, of course, nothing says loving to your spouse like an O'Reilly book. A great gift for anniversaries, birthdays, bar mitzvah's, etc.

Even if you don't buy the book (and can ignore my bitter tears) and you still have an interest in developer productivity, you can head over to the Productive Programmer wiki and contribute.


Mark H said...

I've already ordered my copy. Looking forward to having a read.

Jason Rudolph said...

Congratulations, Neal!! I think another trip to Paddy's is in order. ;-)

Dave said...

If you buy two from O'Reilly you get a third free.

objo said...

Congrats man. It's so good to see this finally in dead-tree form.

Candy's pics throughout is an awesome touch.


Mesirii@MG said...

Thanks for the book Neal. It made my last two days more productive (reading it). I also ordered two as you suggested (forgot about the amazon pre-order). Also posted an review at amazon. I hope the wiki will be an success in getting the people there. But I think first you have to get them passionate before their attention will focus on being productive.

What about errata and other feedback to the book? Into the wiki or somewhere else?


Chris Bernard said...

Regarding the single level of abstraction principle (SLAP), I'm having trouble translating this to functional code, namely erlang.

For me SLAP has proven itself through the years, so I haven't questioned it for a long time. Enter the world of functional programming, and a finely tuned OO nose must be recalibrated for new smells.

It seems since a functional language doesn't have all those "places to put stuff" (as you like to say Neil) -- not even instance variables -- breaking up a large function with many local variables results in many small functions with long arg lists. This can perhaps be more difficult to read than the one long function.

So, is SLAP an OO thing only? If not, how does it really translate into the kingdom of verbs?

Philip Schwarz said...

Hi Neal,

in chapter 6 you show how to compute the cyclomatic complexity (CC) of a method by drawing a flow-chart for the method, counting E (the number of edges) and N (the number of nodes), and then computing CC = E - N + 2.

I have tried to count the nodes and edges of a method by drawing them directly on the method. I have tried this for some examples and it seems to work. I then used it here (nodes in red, edges in blue) to compute the CC (11 - 9 + 2 = 4) of the method discussed in this post.

What do you think? Is what I am doing consistent with the technique you describe in the book?

Neal Ford said...

I think the technique is fine, but it's going to turn into a bit of a visual mess pretty quickly I think. However, I like the way it overlays the actual code with the edges & nodes.

If you are ever curious about your accuracy, run JavaNCSS on it. It does an excellent job of calculating CC.