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!

Into the Clouds

Forecast: Clouds ahead

It looks like the theme of today is going to be clouds. I have spent the week on cloud computing, dreaming in the clouds and word … (yes, you guessed it!) clouds …

MathMagicians do their first jump into the cloud

I have been looking around after a good solution for setting up tests servers in a painfree way. I found a great one!

Its called slicehosting.

Basically, you rent a virtual server – it lives somewhere in the cloud, fighting for CPU time on a real machine with a bunch of ther servers. The IP adress is real enough – you are the root and totally in charge – and the financial commitments are kind of ridiculously low – you can pay 20 usd/month for the smallest slice – no strings attached.

I think this is a perfert setup for small it-companies that would like to deliver great software, and need the infrastructure of version control, continuous integration, and testservers. In this way, you don’t have to invest a lot of money, can always expand and upgrade your slices as you go on.

Incredible – but its working. I feel it like if the world just changed.

Beaaaaaaautifull Word Clouds

Wordcloud generated by wordle for this blog.

Wordcloud generated by wordle for this blog.

I was searching the internet for a flex component to generate nice looking wordclouds. I am working on a prototype version of a job search engine – and among other tricks – we will use word clouds to categorize job offers. I stumbled upon a site, that takes a text or URL as input – and generates the most beautiful wordclouds. They have designed a layout algorithm, that utilizes the space in a way, that is aesthetically very pleasing.  Unfortunately, the wordle guys didn’t leak out the algorithm – I spent half of the night trying to compute a simple heuristic for doing similar things in Flex … I don’t think its actually needed by the project, but who can resist this beauty of words?

Wordle layouts the size of the word to be proportional to the frequency – I also spent some time wondering about other functions than linear for reflecting the frequency. I believe a normal distribution will also look quite nice.

All the computations reminded me of an old Calculus 101 problem:

Given a rectangle composed of other rectangles, each of which has at least one side of rational length, proove that the big rectangle also has at least one side of rational lengt.

My head in the clouds

I spent my previous weekend at what must be called the most cozy Java Conference in the world. Hanging out at the beautifull Hindsgavl Castle with the danish JUG (Javagruppen) at the annual conference was an amazing experience. We weren’t so many – mingled together and had lots of fun. I enjoyed Bruce Eckels “Hybridizing Java” talks – and was even lucky to get a copy of his book – with a sweet cartoon dedication. Neal Ford impressed me with his talk where he compared Ruby an Grails  – so similar and so fiercely hostile to each other. My own talk was about both DCI and Scala – and I decided afterwards that just one of the themes would be enough for a talk.   All to soon the conference was over, I was picked up by my family, and we enjoyed a stroll in the castle park.

Hindsgavl Castle - the place for the annual Danish JUG Conference

While I was at the conference, I got confirmed an exciting opportunity  – I have been hired by ITU to teach a course called Saas …  the short hand Saas does not stand for Software as a service … but it could.

It is a part time position, which suits me perfectly! I can still commit myself to all kind of exciting stuff in my company, and once a week I will be  doing my best to impress young, sensitive minds …  Since I stopped teaching at SDU, I have been missing the academia life, and – I am looking so much forward to teach my new students everything important there is to know about system design and security … actually I have always wanted to be given the opportunity to put my fingerprint on a course, that will teach about good software design. What happens with the .java file between the editor and a webapplications with real users. What good quality is, why that gives us good security, and what goals we as programmers should strive to achieve. Of course inspired by my favourite computer science book – Pragmatic Programmer.

Anyway – I will be spending some time in the clouds, trying to design the perfect course plan.

JAOO

I attended JAOO in Århus this year – what a fantastic experience, this conference has a special atmosphere. Denmark is such a small country, you keep meeting old colleauges, classmates, bosses – whatever.
This years buzz was all about functional languages – we finally need to decide what to do with side effects. One possible solution is to have the language give clear, big warning signs.
This is the old semantics vs syntax discussion: Giving clear names, typesafety etc doesn’t help to achieve the big golden dream of (finally!) having reusable software components. What we need to agree is semantics – what does it do, not syntax – how to call it.
I was enchanted by Bill Verner, and his Scala talk, and I am really looking forward to his newcoming Scala book. A typesafe dynamic language that runs on the JVM – I am kind of convinced that this is exactly what we need. To bad the book isn’t coming out before the conference is over – I would have loved a signed copy.
I also enjoyed Michael Nygards talk “Failure comes in flavors” almost without breath – his rant about patterns and antipatterns when time comes to deploying and keeping our applications alive was full of cliff-hangers. Respect. If you ever have a chance to hear this man talk – and if uptime is of any importance to your next web-app – don’t miss him.
I also spent some time discussing lean/agile architecture with James Coplien and his gang. He is promoting DCI – data, contexts, interaction, which is a new paradigm in structuring your applications architecture. James wants us all to move us away from class-oriented programming to true object oriented programming. We spend a couple of hours hanging out, discussing how to translate his example into different programming languages. I myself tried to convince James that you can do it -in Java too. Sitting together, 5 people, around a table, we discovered how we all have been searching for the same answer. Magic of coincidence, or is it the world allready moving in a new direction?