In mid January I attended Codemash 2011. Codemash is a semi-regional software conference that, in my opinion, holds its own against any of the larger, more funded, and considerably more expensive to attend conferences that I have been to in years past.
I say semi-regional because while the conference is mostly geared toward the mid-west attendees ultimatley come from all over the country and several are international.
Every year a great deal of care is put in by the organizers to ensure a diverse selection of topic spanning multiple technology stacks and technical communities. I usually split my time between reinforcing the skills I find valuable in my own career and looking into new (to me) technologies that I may not have given enough attention to in the past. This year my "comfort zone" sessions were on git version control, ruby on rails and a couple talks on utilizing agile in somewhat untraditional ways. The "new" stuff for me was a fantastic talk by Gary Bernhardt that was really on the value of Bash and Unix (like i said "new"), android development and javascript BDD.
Gary's "A Modern Open Source Development Environment" talk was the most interesting to me. His overview on the tools and utilities he uses to code efficiently brought to light a number of areas i could stand to improve in on unix, oddly identifying your inadequacies is a common trend when watching Gary code - and I say that with the utmost respect. In the talk gary cited a study that indicated the usefulness of a test suite is inversely correlated to how long it takes to run. It inspired me to go back and look at how I could make our test suite faster on a .NET project I'm on.
Jim Weirich's session on writing and maintaining better tests brought answers to a number of questions I have about test suites in the projects I write and maintain. It also introduced a few new tools I didn't know existed in the Ruby testing space.
Jon Stahl's Agile Enterprise talk was fantastic as well. The general concept being that enterprises have started to adapt agile for their development and IT teams but a lot can be gained in applying many of the same principals of transparency, collaborative work flow and open communication to executive level management and management in general. Organizations Jon has worked with now hold standups for their managers, post information publicly including such sacred and secret information as salaries and perceived level of experience. Most importantly though he highlighted the fact that practice by itself does not make an organization agile. Agile is a combination of culture and practice and without both it really doesn't work.
Of the best keynote presentations, thus far (there is one more to go as i write this) Chad Fowler's keynote on process, apprenticeship and offshoring was the best. A lot of the topics were taken from his book The Passionate Programmer (which I previously reviewed)
Scott Chacon from Github also gave a exceptional keynote on how an open source business operates, giving examples from Github's organization and how it has helped them see success. In many way's Github is the anti-Agile shop. That isn't to say they are rigid or slow to react, quite the opposite, that respect they remain agile but they are very much not Agile. Cap-A Agile usually indicates a very specific process which in itself is designed to make change easy, but still manages projects in a careful way. Think Scrum, XP, Kanban. Github simply lacks established and firm process. They don't commit to dates, they don't follow any sort of project roadmap and they don't hard assign developers to projects, their teams are purely self-organizing. So.. github is agile, the right kind of agile without being Agile.