Having been to a few physics conferences in the past I'm used to being among groups of techies who feel more comfortable communicating with computers than those around them, so I was quite surprised that there was a real buzz and enthusiasm at the conference. Maybe it was because few people were older than their mid-thirties and the vast majority were Apple Mac users. Everyone seemed to be excited about being able to use technologies that enabled them to do cool stuff on the web.
The three day event started with two half-day tutorial sessions. The first was about the relatively new Behaviour Driven Development (BDD) technique that aims to provide a more meaningful testing framework for your application whilst also defining a natural language specification of what it should do and how it should behave; the business and technology sides of a project should refer to the same system in the same way. I'll be posting another article about this and the RSpec framework in more detail shortly.
The second tutorial session was an introduction on how to use the Adobe Flex platform with Rails applications to create a rich dynamic user experience in Flash. Adobe is really pushing the Flex platform as option for building Rich Internet Applications (RIA) despite the increasing sophistication of Web 2.0 Javascript libraries such as Prototype/Scriptaculous and jQuery/UI. An interesting shortfall was that the speaker couldn't really give definitive examples of 'killer' flex applications out there already, which confirms the feelings of many that Flex is still a niche technology.
The first day ended with an inspiring keynote by Dave Thomas, one of the key figures within the Ruby and Rails community. His talk "The Art in Rails" was based on the analogy that software engineering is like art in that a programmer can suffer the same problems as an artist, such as writers block, knowing when to stop and satisfying the customer.
His solution to the first problem is to use exploratory testing to rapidly prototype ideas in order to work around conceptual blocks - even work through the problem the old-school way using bits of paper and a pen.
The second problem of knowing when to stop can be controlled by breaking the development process up into fixed chunks of time and functionality, which are refined through iterations. The result of each iteration should be an application that can work with the functionality defined so far, which is a core concept of Agile Development.
His final point on knowing how to satisfy the customer was illustrated with a selection of famous portraits. A great artist will look beyond the surface of their subject, which might not directly reflect reality but does capture the meaning and personality of the person within. In software terms this means getting into the nitty-gritty details with the client by asking why again and again. Often a client's initial project request is quite different to what they actually want and need.
Dave wrapped up by saying that there is art in engineering and there is engineering in art; Ruby is the canvas and Rails the paint. He ended by suggesting to everyone to
Treat your next project as if it were a work of art”
- quite a challenge!
Photo credits: Duncan Davidson and Zeno Crivelli