15 August 2014

Adrenaline Junkies and Template Zombies

Adrenaline Junkies and Template Zombies: Understanding Patterns of Project Behavior (2008), by Tom DeMarco et al., Principals of the Atlantic Systems Group, is not a collection of patterns in the Gang of Four sense, following a template of intent-motivation-applicability-etc. (Indeed, the authors would argue that slavishly following a template is a path to project failure.) Nor is it a collection of anti-patterns, but rather a useful collection of 86 short essays on project success and collapse, more or less evenly divided between exemplars and cautions. Each one comes with a provocative title that may mask whether the pattern is one to avoid, embrace, or just think about—a title to keep you reading, like #2: Rattle Yer Dags.

The book doesn't go in for the bleeding-edge wisdom of Silicon Valley's approach to software development—the whole "move fast and break things" scheme. On the other hand, there is measured approval for some of the innovations promoted by the Agile movement. #31: Rhythm, for instance, is a good explanation of why Scrum methodologies are successful, and #75: Fridge Door introduces information radiators. Rather, the Group's audience skews more toward teams and their managers in larger, more risk-averse organizations: governments, enterprise IT shops. These are the outfits that need to be told that project documents that no one reads (#61: Orphaned Deliverables) are valueless.

There are surprises, even for a reader like me, someone who has seen project wins and busts, employing nearly everything in the palette of project management techniques, from two-week sprints to WBS-driven slogs. For instance, #58: Cool Hand Luke is frank about the positive role that conflict has to play in organizations, which the authors more than once call "messy" by nature. And #57: "There's no crying in baseball!" is a little gem, neither pattern nor anti-pattern, that reminds us that strong negative emotions are a side-effect of that "passion for your work" that my boss keeps racketing on about:

In deciding whether or not to tolerate unruly emotions, it's worth remembering that feelings intrude on work only to the extent that people care about their work. The easy way to make the feelings go away is to hire people who don't give a damn.

The book is chocked with memorable coined phrases: "reality deodorant" to cover up the bad smells of a project in trouble (p. 12), "schedule chicken" (p. 129). Do I see some of these patterns at my own job? Oh, yes, I have attended my share of #4: Happy Clappy Meetings, and I have seen #16: Dashboards used effectively, but fortunately it's been a while since I encountered #19: Film Critics.

Each essay is short and to the point, as #62: Hidden Beauty advises on design:

... no design is made better in any way by piling on added features or glitz. Rather, what enhances a design's aesthetic is what is taken away. The best designs are typically spare and precisely functional, easy to test and difficult to mess up when changes are required. Moreover, they make you feel that there could be no better way to achieve the product's assigned functionality.

07 August 2014

Succulently bad

Today's post at The Daily WTF is in the CodeSOD category, but it's so gloriously bad that it's a candidate for CodeSOM, probably CodeSOY. The method in the snippet is attempting to detect whether a string contains a vowel, something that could be done with a regex in a line or two. Instead, after 73 lines of flailing about (including gormless multiline comments), HasAVowel() looks at only the first character of the string and returns the answers "yes," "no," or (!) "maybe."

Just one of the priceless comments:

    //because visual studio has put a red zigzag underneath the name of my procedure 
    //I need to return something always

We're in Leonard Pinth-Garnell territory here. Or, as my theater colleague Tim would say, "bad, bad, bad, and ghastly."