Summary
I continue to be amazed at how insanely great OpenSpace conferences are with so little effort on my part. Certainly, I provide structure, but most of that occurs in the first half hour and then I become a participant. As always seems to happen with OpenSpaces, I got so much more out of this event than I ever imagined.
Advertisement
And that's with a relatively small turnout (ten people, including myself). I was worried about this at first, but by the end of the conference some people said they weren't sure they would have wanted it any bigger. But I've found that OpenSpace events tend to adapt to whatever size group shows up. Harrison Owen, the "father of OpenSpaces," has apparently organized conferences consisting of thousands using this technique.
Here is the URL for the conference that took place in March, 2006. I will try to plan next year's conference with more lead time.
One of the OpenSpace maxims is "whoever shows up is the right people." And even with our small group, and conducting the event in single-group mode (rather than running multiple sessions concurrently), I can't imagine a better group, with a perfect range of experiences and needs. In almost every case, when a question came up there was someone in the group who could answer it. We had a broad spectrum of experience, from one-person shops to large organizations.
I was concerned about whether the skiing aspect of the conference would raise eyebrows, and it certainly might have kept some people from coming. But those who did come told me that their bosses were unconcerned about the fact that skiing was part of the conference. And everyone seem to agree that the mid-day activity break made a huge difference by providing a change of scenery and experience, and that the conversations continued on the ski lifts, but with different perspectives. And when we met again, everyone came with fresh brains. Everyone skiied or snowboarded in one way or another (one person made use of the cross-country trails here), and two folks had their very first ski experience, and gave positive reports about the lessons and beginner slopes. Everyone felt that the outdoor activities were bonding experiences which were a continuation of the conference, and which increased the value of the sessions.
After explaining the basic structure of OpenSpaces, we did a fairly quick capture of topics that people wanted to talk about, and then a bit of reorganization. Unlike larger OpenSpaces, the topic list seemed to remain unchanged throughout the conference, but we all seemed quite happy with the results, and the topics filled the spaces just right.
One person came partly to see how an OpenSpace event is run.
In more formal OpenSpace environments, after each session the session conveners write up the notes for that session, the goal being to provide conference proceedings at the end of the conference (rather than the beginning, as with typical conferences). I've never been able to be quite that formal, and have been looking for more casual ways to capture what's happened. In this case, I found myself making a lot of very short notes when people mention things that we should look at, and others have made more involved weblog entries. So here I will just include the URLs to the other weblog entries (and photos, in some cases), and just transcribe my short notes, adding additional thoughts as they occur.
Well-known PHP frameworks and tools: Wordpress, Drupal (there's even a conference for this one), PHPUnit.
Debugging PHP is a problem; you typically end up using print statements. Several blog readers suggested Zend Studio, which contains both a debugger and profiler.
"Seam": Ruby on Rails translated to Java
Some folks reported success with Webex
UltraVNC can be used for remote collaboration
"Resume-driven development": some programmers, often working for offshore contractors, just want to use every framework they possibly can, to pad their resume, without regard to what is appropriate for your project. Apparently India in particular has a ladder of companies that people are constantly trying to move up, so turnover is very high as programmers change jobs up this ladder.
AppFuse: web framework that puts all the look and feel stuff in a bundle, so you can create a new site by only filling that bundle.
JWebUnit. Unit test framework for web systems.
HTTPUnit
Selenium; IE only, free from Thoughtworks
Round-The-Room questions:
What development process do you use?
How do you discover objects?
Mike Cohn's "Planning Poker" (see bibliography):
Estimate size not duration
Small Medium Large
Everyone lays a size card down without seeing the others
Often agreement right away
If not, persons at the boundaries make their case, then replay the hand
Items that are "off the menu" are more expensive
Support for user groups: Microsoft pays for a lot of things. Sun doesn't do much of anything, almost as if user groups are an annoyance. As a result, .NET user groups continue to happen more often and gain traction. Is there some way to stimulate Sun to put money into user groups, which are arguably the best and cheapest form of marketing?
Javascript validator, web development toolbar for FireFox
Sajax library for PHP
Webinspect vulnerability checker
Lunch and learn
Breaking the build is a "line stoppage" (ala Toyota assembly lines; any worker can stop the line if things are wrong)
"Wear the funny hat" if you break the build.
Scrum and Agile increase quality
Torquewrench from Stackframe.com; static checker
37Signals.com: WriteBoard (collaborative tool)
"Sign your Work" (Pragmatic programmer)
"Discipline": Ability to do things that need to be done even if they're not fun. (Barry's definition).
Publish code and Javadocs for all to see.
Run style checking tools
JDepend
CPD: Copy-Paste Detector
"Testing is like toilet paper. Everyone has it but the quality varies all over the place." (Barry)
Domain-specific checkers
Stewardship
Mentoring
How do you ensure that additional things like quality improvement happen in a high-pressure environment? (Question for Abby)
Basecamp for project management (hosted, monthly fee).
For jobs that have minimal custom code, a best-practices website to help ensure consistency.
A non-mission-critical project typically harms the introduction of Agile more than it helps (this goes against the traditional thinking that you should introduce an Agile methodology by using it on something that's not too important. Apparently naysayers tend to use the lack of importance as a reason that it wouldn't work on a "real" project).
CVS Best Practices explains branching and tagging, also helps for subversion.
Subversion does look a lot like CVS from the user's standpoint, but for one thing the file structuring is much more sensible. Much easier to do things like renaming which is very painful in CVS. Definitely worth changing over to Subversion.
Branching frees you to do experiments. Branch at each release, then bugs found in the branch can also be merged into the main trunk and later branches.
Pragmatic Programmers three pillars (do at least these):
Version Control
Unit Testing
Project Automation
Araxis Merge, Eclipse Merge, Subclipse
Maven: project has gone through a lot of maturation, is now worth considering as an alternative to Ant (still uses XML, though).
Mercury: expensive but good functional testing and load testing for web systems.
One & One: very problematic hosting company. Not recommended. GoDaddy is good.
AJAX: Asynchronous Javascript And XML
SAJAX for PHP works fine
Web site rule validators: nice example of chain of responsibility of strategies.
DWR allows a single set of validation objects, exposes validation to Javascript.
Developer edition of Cold Fusion is a free download. Several folks reported rapid uptake and great productivity with Cold Fusion.
Vinkat Subranamyam, good .NET author
Designing with Web Standards. This session was surprisingly useful to me and apparently others, even though the information seemed basic enough that we should all know about it.
Satay Flash Alistapart.com
CSS Zen Garden: lots of good and compelling examples of CSS
What is XHTML? (1) HTML that follows XML Rules (mostly this is including closing tags for everything). (2) Uses the Full Doctype tag. It turns out if you use the right Doctype, it forces browsers out of "quirks" mode, which is what they are typically in, and into correct mode so your output is what you expect and consistent across browsers. This seems like a pretty big deal to me.
"Friends Electric" them for Drupal
W3C DOM Javascript
Validator.W3C.ORG to test your code
Web developer toolbar for Firefox
Firefox debugger extension to help debug Javascript
CSS basics: you use the ID tag for something that's unique on a page, such as the header and footer. You use the CLASS tag when you'll have multiple instances.
Wordpress: fast, easy, small, but URL-specific
W3C-Schools, good resource
XMLSPY, to play around with XSL, or Oxygen.com
Python Web Frameworks. Too many of them, lots seem good. I'm currently leaning towards TurboGears, because the approach of picking the "best of breed" pieces to combine is appealing to me.
Looks like I have a lot of resources to explore.
Bibliography
Books recommended during the conference.
Open Space Technology: A User's Guide by Harrison Owen (information is also available on the web).
Managing the Nonprofit Organization by Peter Drucker
Struts: The Complete Reference by James Holmes
Designing with Web Standards by Jeffrey Zeldman. Part 1: Business buy-in (techies can skip). Read part 2: how to do it. Example: how to do embedding of Flash and Quicktime correctly.
I've been getting good value from the HTML, CSS and Javascript cheatsheets from www.visibone.com.
Peopleware, 2nd edition by DeMarco & Lister
The Secrets of Consulting: A Guide to Giving and Getting Advice Successfully by Gerald Weinberg
Domain-Driven Design by Eric Evans
Conference Feedback
Although we all agreed that "eyes forward" presentations are best left to the formal conferences, we did feel that it would have occasionally been nice to be able to project live demonstrations. For example, one person had been to a Ruby On Rails seminar and could have walked us through that, and other demos could have happened. It's definitely worth having a projector and screen on hand for such things.
Do anything possible to lower the intimidation factor. Some thought that they wouldn't have anything to contribute, but we found that everyone did, regardless of their experience. Also, it's definitely not necessary to prepare anything in advance, and might be a waste of time. Best to just "bring your brain" and be prepared to interact.
Corporate budget cycles often happen at the beginning of the year (academic budget cycles can by in June or July). The earlier a conference can be announced, the better.
One person said they were going to the "Better Software" conference in July, worth considering avoiding conflict with my Java conference in July (more about that in the next weblog entry).
Many, if not all, the discussions would have made good podcasts. I will consider this further for the Java conference in July.
Great article! Makes me want to attend such a conference. One small correction: Selenium isn't IE only. It also works with Firefox, Safari, Camino, and others.
Hello Bruce, Your note about there being no known debugger for PHP caught my eye.
I spent some time exploring this, and came to the conclusion that while it can be done using the Xdebug extension (for example, see http://www-128.ibm.com/developerworks/library/os-debug/index.html) the result is rather clunky. I eventually opted for an IDE - I looked at Komodo, phpED and Zend Studio and settled for Zend Studio (I actually preferred phpED's layout/organisation but the entry level versions were $200 diferent).
Another note: GoDaddy is finally upgrading to PHP5. They are also supporting Python (in any directory, not just CGI-BIN), and Java (and I don't know the extent of this one).