One of the talks I attended was given by Ravi Mohan. Ravi described his experiences in applying Agile methodologies (XP in particular) to his project.
To start with, the project is not your typical everyday project. The project is in the AI domain, and is implemented in a combination of Lisp, Erlang and C, with Ruby as the glue between the three. The whole thing runs on a cluster of around 200 unix boxes with a parallel virtual machine layer above it. The entire project had a team size of one (Ravi himself).
Given a project like this, is it possible to apply agile methodologies to it?
The conclusion was that it is possible to apply some of the practices, but some of them crashed and burned. For instance, XP says that the customer should always be available to give feedback. That was impossible here. Another problem was getting unit testing tools for code in Lisp and Erlang. Yet another problem was that some functions were probabilistic in nature (for eg. return true 90% of the time), so if it gave the wrong output, it was often unclear whether it was because of a bug or because it was in the 10% when it was supposed to give another output.
Other practices like breaking up the requirements into stories worked very well. Continuous integration was another big success.
Overall, XP kindof worked, but not without heavy modification of the process (is it still XP then?).
3 comments:
It still is XP imho . at least it "feels" like XP . The disconnect comes from the fact that XP was created in an enterprise setting .When you have a project which is essentially R and D , where math skill is as important as programming skill. some of the assumptions of XP break down . for eg , XP assumes that requirements are *expressible* in English :-) . in my project this doesn't hold :-)
Sounds interesting. I'm wondering what's this project about? Is it some commercial venture (I'm guessing so from the 200 unix boxen). And why were so many languages essential?
It was an AI project for classifying some data for the defence dept. Basically involved taking a bunch of data and classifying certain pieces for further analysis. The idea is that the system should learn as it gets more information.
As such there is a lot of input coming in every sec, hence the parallel algorithms.
Erlang - for parallel processing code
Lisp - for the AI classification algorithm
C - for speed critical computation
Ruby - to glue the inputs and outputs between the above three modules
Use the best language for the problem, etc
Post a Comment