JAOO 2009 Highlights

Here we go again

For me, JAOO is the event of the year in the danish software development community.

Last year the buzz was all about functional programming. This years buzz?

Somewhere between cloud computing and self-improvement, combined with pessimistic note

Shu-ha-ri

The best talk was Keith Braithwaters “Techniques That Still Work no Matter How Hard We Try to Forget Them”. He calls himself Old School – old enough to have seen 2 of the 7-year cycles in software development.

Much to peoples amusement, Keith started by announcing, that if IT was a person, It would be diagnosed with
•  ADHD
•  Retrograde amnesia
•  OCD

Things we got right? Nobody has never been as productive as in Smaltalk. 21 years ago. And still is.

There was once a thing called System Analysis … Anyway, somethings wrong with the UML diagrams.

Instead, we should look into how Engineers model:

  • Models are useful for what they leave out
  • Faster, cheaper than building a prototype
  • Models Answer Questions – more quickly and easily than the real thing would

UML diagrams dont adhere to any of these principles …

Architecture Visualization

Michele Lanza , from University of Lugano, Switzerland had a fantastic talk about architecture visualization. Code is text – but we are visual beings. The proper visualization tool should enable us to tell the stories behind the software.

We all know that we should build habitable systems, and that the patterns movement comes from (urban) architecture. CodeCity is the “Habitable” metaphor on stereoids – software packages are converted into cities, classes into buildings, with one floor pr method.

Billede 12

Organizational patterns

This was my moment of enlightenment. I attended the tutorial by Gertrud&Cope about “Fine tuning Scrum”. As well as we have software architecture patterns, deployment patterns, concurrency patterns and … dating patterns, organizations have patterns as well.

Pick a set of them – organize them into a pattern language – and you have Scrum.

Pick another set – and you have XP.

Pick another …

This explains why the thing works – there are patterns underneath.

This made me thinking how this connects to the goals of Enterprise Architecture …

Deliberate practice

Mary Popkins had a fantastic lecture about how we can transform principles of deliberate practice, into the context of software development.

Malcolm Gladwell quotes the 10.000 rule in his book “Success Factors”, and Mary quotes the same research.

10000 hour rule

Any talent which follows deliberate practice for 10.000 hours becomes a Master.

Therefore, we should strive to nurture environments, that let our talents develop under deliberate practice. This requires:

  • Find a teacher / mentor
  • Practice repeatedly
  • Obtain immediate feedback
  • Focus on pushing the limits
  • Practice regularly & intensely

Distributed Agile

I know well what agile development is.  Nothing in the world gives better working environment for creating marvelous new systems, than a well formed XP team – your pair programming buddy will definitely tell you if you are on a wrong track. The atmosphere is great, the team is One. Match that with a rigoristic approach to testing, visibility and user involvement, and you have a bullet proof recipe for producing word class software.

But distributed agile – whats that? After having met the dutch-indian company Xebia at JAOO 2008, which claims to have mastered the tricks and secrets of Distributed Agile Development, so that a team can be distributed around the globe, and still experience this very special atmosphere of hyperproductivity, I was intrigued and determined to find out.

Co-location

I happened to bump into the Indian Holi Holiday while co-locating

I happened to bump into the Indian Holi Holiday while co-locating

This should be obvious – you need  in the beginning of a project to see  each other in the eyes, the team has to be formed – thats called co-location.

We have a small project, 3 developers in total, so I buy a ticket to Delhi, and get a business visa in the passport.

The first thing that strikes me is the long office hours.

Second experience is the xtreme service.  For a poor european, used to ‘self-service’ the indian way of delivering service feels overwhelming. I counted over 100 people employed, just to make my morning commute to the office painless.

Third experience is a quiet yoga studio, with drop in-classes all the evenings.

I am thrilled to meet the team, we have been conversating a couple of times previously via Skype – it is such a heart warming feeling finally to meet them. After day 1 we have a good overview of the architecture, have filled walls, whiteboard and glasspanes with the mandatory UML diagrams, updated the electronic backlog and are ready to start work.

People are smiling, engaged, inquisitive. I am surprised by their level of proactiveness, and intelligent inquiries, foreseeing possible problems weeks in advance.

The team spirit starts to soar – yes, we can do it.

XP over the wire

All good, we have been co-located, but the whole idea behind distributed agile is … well, distributed.

Back in Denmark, days are passing by in a productive buzz.

I see a message blinking from Sunil. He is stuck and needs help on some configuration issue. We exchange code snippets back and forth, after a few minutes the problem is solved. Next day he has generalized the solution, and helped unstuck me.

Skype chat is on all the time when we work.

Each morning we have a video session on Skype to get updates, and plan next days work. The time difference gives the Indians a head start on the days tasks.

After a couple of days we discover, that we have accelerated development speed, and actually surpassed the sprints goals.

You wouldn’t be able to tell from velocity charts, that this team has been distributed.

Learnings

  • Things take time.
  • Accommodate for Sprint 0
  • Set up good facilities for Skype calls … yes, Skype makes it possible
  • Try!