Posts Tagged ‘book’

Presentations, Tufte and the devil of marketing

Thursday, June 4, 2009

After having heard good things about Edward R. Tufte over the years, I’ve finally put my hands (and eyes) on one of his most famous essays: “The Cognitive Style of PowerPoint: Pitching Out Corrupts Within“.

The basic thesis behind the essay is that PowerPoint is a low bandwidth tool for technical presentations and it shouldn’t be used at all where data is more relevant than mere suggestion. While I don’t disagree with Tufte, I also believe that his ideas need to be put in context.

Tufte’s point is specifically aimed at technical presentations (emphasis mine, but maybe Tufte should have emphasized this a bit more). NASA’s example about the Columbia incident is exactly right to the point: when you need to present the result of a technical analysis so that others can make an informed decision, then I concur entirely that a confused and contradictory presentation poor in data and details is probably not the best choice. Creating a false sense of security is in particular one of the worst things that can be done, especially when dealing with rocket science (literally). The consequences can be catastrophic, to the point where people may die. Actually, they died, which is the saddest, incredible and absurd part of the story.

There are a lot of other situations though where distilling the essence of a system of thoughts can actually be quite effective or even preferable than to provide a deep technical analysis. Let me explain why.

I’ve found myself preparing and handling a few presentations in the last months about themes like the SOLID design principles, pair programming, javascript testing, Selenium, Hudson, Terracotta and others. I’ve experimented a few different formats:

  • Mind maps
  • Google Docs slides
  • Lightning talks with no slide at all, but a decent body of knowledge accumulated in a wiki (specifically, Confluence)

I would divide those presentations in 2 groups:

  1. On one side lie the coaching interventions, where some sort of surprise and dramatization can help a lot to get the message through. SOLID principles talks are definitely part of this category.
  2. On the other side, more technical presentation where the goal was to communicate the essence of certain technical ideas as quickly as possible, with enough reference to deepen the related body of knowledge in autonomy.

The former presentations work better if no details are handed over prior to the presentation itself. The surprise effect is quite important.
The latter presentations can benefit from having the audience reading some sort of a short technical report before. This way, the slideware material can be kept quite light, just a recap of salient points, and there will be more space for discussion during the presentation.

I think that I’m gonna try to prepare a brief report for presentations of the second type. This means of course a little more work on my side, but that is not necessarily the case. I remember having spent hours trying to distill the essence of concepts that would have been expressed more easily in prose. That effort would be gone. Moreover, I will require from the attendees to read the material prior to the presentation, whether it’s on Confluence, in code or any other medium.

I’m curious to see how it will go. Luckily, virtually none of my presentations can be characterized as pitches, so eventually there is space for experimentation without having to sacrifice your soul to the devil of marketing.



Missing MethodTimer.computeTotalTime() in Implementation Patterns

Thursday, March 13, 2008

While preparing a review of Kent Beck’s Implementation Patterns book for I stumbled upon a missing detail in Appendix A (Performance Measurement): where is the implementation of MethodTimer.computeTotalTime()?

I didn’t pay much attention while reading the book: Appendix A is one of my favourite chapters because you can finally see what Beck means in practice, but I haven’t really considered all the implementation details, only the overall philosophy. For the review I decided to go deeper and I couldn’t really understand what happened to MethodTimer.computeTotalTime(). In addition, until you realize how that method should look like, maybe you find yourself in troubles trying to fully grasp the design. I certainly did. Google didn’t help (I guess that Beck for whatever reason didn’t want to publish the code), so I did it by myself.

 private long computeTotalTime() throws Exception {
 	long start = System.nanoTime();
 	for (int i = 0; i < iterations; i++)
 		method.invoke(instance, new Object[0]);
 	return System.nanoTime() - start;

This is not rocket science of course, but I had a few false starts before getting it (also because I made a few mistakes copying the code from the book and I was misled by the results). Hope it can help you as well.