Thursday, November 19, 2009

Detroit Tech: The 1DevDay Event

The 1DevDay event was organized by the Detroit Java User's Group, and held at ePrize in Pleasant Ridge, MI. The event was more like an expanded version of the monthly JUG meetings than something completely new. Since the monthly meetings are both valuable and interesting, this is not a criticism.

Here is a pared-down blow-by-blow of the events that I attended & what I took away from them, straight from what I hammered into OneNote at the time:

9:00 AM - Venkat Subramaniam's Keynote:

  • "Best practices" is often a fallacy.
  • 75% of the features in most systems is used only occasionally. 45% is never used at all. A good argument for Agile?
  • Interesting - Venkat is also making the point that we should pay attention to how we contribute to revenue. (Same as "Passionate Programmer" & other books.) Not sure that I agree that this should be an area of focus - worth some thought to articulate.
  • Don't create a new EJB standard:
    • Innovate first
    • Find real multiple use next
    • Standardize and market last
    • Rails & Spring are two examples.
  • Groovy & Ruby are as strongly typed as Java, they're just not statically typed. You'll get a runtime exception.
  • Check out:
  • Bogged down a bit at the end - talked about Unit testing & a lame story about exercise.

I wasn't interested in either of the sessions that followed, so I played around with RSpec while sitting in the Terracotta room.

10:45 AM – 11:45 AM – Agile Teams (Chet Hendrickson)

  • Chet likes burn-up charts over burn-down charts. I see his point.
  • Chet does not like certifications - certainly not for Agile or Scrum.
  • "Metaphor" is an XP practice meaning, "the common language developers and business people speak- the metaphor for the system".
  • 7 big categories (7 pillars of agile):
    • Business Value
    • Confidence - we can prove that the code works / plans are accurate
    • Product - dev should understand the business & product at least somewhat
    • Collaboration
    • Supportive Culture
    • Technical Excellence
    • Self Improvement
  • Check out:
  • Ditto on the google group:
  • The Agile skills matrix, the 7 categories across the top, vertical axis contains:
    • Learner - I've heard of it
    • Journeyman - I can do it on my own & help others
    • Contributor - has changed our collective understanding of this topic

    Where are your skills in each category?

biz val



supt culture

tech ex

self imp






  • Developers should read a lot of good code. (Identifying what is "good" is a challenge, but a surmountable one.)
  • Pick up a copy of "Software for your head" by Jim McCarthy.
  • "Move to code as soon as possible."

12:45 PM – 2:45 PM - Ajax / DWR

  • The presenter of this one was a bit new at it and/or I was underprepared. It was difficult to follow along, though I did learn a few things about the capabilities of Dojo and DWR.

2:45 PM – 4:45 PM - OSGi (Dennis O'Flynn)

  • The Mainifest file is the key to this - it contains everything OSGi needs to determine how things fit together.
  • This session helped me form an opinion: It looks really cool, but I can't think of a problem that I would solve using OSGi. I will ignore it unless/until I actually need it.

4:45 PM– 6:45PM – TDD / Refactoring (Nayan Hajratwala)

  • This was without a doubt my favorite.
  • Characterization tests aren't all that tough - write one where parameters have an empty list, zero or null first, take a guess at the result, then change the test to match the result you actually got for the test & get a green one.
  • Nayan likes to run tests on all 3rd party components that you use. Note that these only apply to the methods/components that you're using - not the entire library. Not sure if I agree with this or not. I haven't been bitten by this problem yet, and I don't like to solve problems I don't have...
  • AssertThat sounds very useful. Ex: assertThat(<expected or actual>, is(0));
  • Hamcrest (an anagram for "matcher", I think) has a bunch of different matchers I can use in assertThat(). They're in org.hamcrest.CoreMatchers.