NFJS - Day 3
Whew…I’m starting to get caught up (well, not with the Foundations of Ajax account!) By Sunday, I was plenty tuckered out - but I powered through. I had a good chat at breakfast with a few guys, talked about productivity and off-shoring and all that fun stuff and after one of the sessions, I had a great chat with Software Ninja Peter Pascale. Like I said earlier, one of my favorite parts of these get togethers is the time between sessions when you get a chance to talk with your peers and compare notes. We might not be in the heart of Silicon Valley, but there is a lot of exciting stuff going on in the Twin Cities!
OK, so on Sunday, I branched out a bit. I started my day with Andrew Glover’s Practical Groovy. Now, I’m all for dynamic languages and I’m convinced that the future of Java is as a platform: in the near future, we will have our choice of scripting languages (like JRuby, Jython, Groovy) on the JVM (or CLR if you prefer). This will allow us to start our applications in a more nimble language and then, when we need to, take advantage of the enterprise stack. This means we can avoid most of the complexity that comes along with a language for interplanetary navigation until we need it allowing us to be far more productive. But don’t just take my word for it - Tim Bray thinks this will happen too. And like Obie Fernandez, I hope I’ll be able to deploy Rails on the JVM.…and it better be before 2008!
Anyway, while some think that Groovy is the answer, it’s hard to tell. A few weeks back I read a pretty good write up (alas, I can’t find it…sigh) about how stagnant Groovy was and that it was suffering from neglect. That said, Richard Monson-Haefel thinks it’s a sleeping giant. With that backdrop, I was quite interested in seeing Groovy in action and I have to say, it looks pretty slick. I’m a bit concerned about the whole binary compatibility issue as well as its JSR status, but a familiar syntax isn’t such a bad thing. Of course this has caused some symbol refactoring as the language matures… While I’m not convinced that Groovy is the answer, it certainly does have it’s place. Andrew had some great examples where he’s used Groovy in a production environment and I even suggested it for an issue at work (which prompted a comment along the lines of “crazy workaround” but whatever).
Anyway, after a host of pure tech, I needed to focus on the soft side so I went to David Hussman’s Losing Battles and Winning Wars: Adopting Agile. If you *ever* have a chance to see David live, take it, he is a dynamic speaker and very engaging. And unlike many speakers, he will actually admit mistakes he’s made in the past! I’m doing everything I can to make my current employer more agile so I look to David for inspiration. This was a fun talk - we discussed a lot of issues that various attendees had at their companies. Unlike some, David doesn’t advocate a whole sale conversion to agile; it’s much more important to figure out what is important to the culture. For some projects, unit testing just isn’t practical, however, there are other practices that can be put into place.
My afternoon was all about testing and code quality with Andrew’s Unit Testing Best Practices and Taking Quality to the Next Level through Code Coverage Analytics. While Andrew is a great speaker (very clean slides though I would have appreciated a bio) I have to admit his Best Practices talk was a bit of a disappointment. Truthfully, it was more of a survey of alternative testing tools like DbUnit, JUnitPerf, and JUnit-addons. Still, he did eventually get to some best practices! Some tests will take longer to run than others and the frequency of running this tests should be based on that fact. I would have liked a bit more of that type of content though…
The Code Coverage session was pretty cool. I’ve always wanted to play around with EMMA and/or Cobertura but I’ve never gotten around to it. The key point: don’t trust a report that says you have 100% coverage! While the tools can give you an idea of where you lack tests, if you rely on a “passing grade” from a coverage tool, you will be disappointed. A good session, but you could tell the audience was pretty tired…and did I mention how hard the seats were?
All in all, a great conference! While not an “event” like JavaOne, NFJS, is a excellent learning experience and if you actually want to talk with the presenters, you should give them a look. It should tell you something that I returned for a second go and this year lots of my circle went too. I can’t wait for next year’s event (though I’d love to be on the other side of the podium)!