Monday, 28 January 2008

XP: religion or development process

Many things xp seem to turn into a religious discussion. "True believers" of agile and related things see it not as a tool, but as something that you should follow without questioning. Admittedly this turns some people off, just like any hardcore religious discussions.

Why do I think that people should follow the agile way? Because I believe that it works and you end up with a higher quality product for cheaper. Do I have numbers to back this up? No, I've got nothing personally that could be submitted as part of a published paper.

Do you *need* to do things like write unit tests? No you don't. If you don't, that doesn't mean your project will fail. However, I consider it to be a basic engineering tool. Sort of like when you go to the doctor your chart or their stethoscope are basic tools. If the doc doesn't have them, it doesn't mean you're going to die, but it's a lot better for you if they do.

If your doctor doesn't write your info down in your chart because they can keep the context of your illness in their head, is that any good to you as a patient?

Think of basic tools in any profession and then imagine how you'd deal with someone not using those tools.

3 comments:

  1. I don't think either XP or Agile say that you need to use all of the practises. In fact they say that people should use the practises that make sense on their particular project.
    If I remember right this is similar to CMM 5, where the process adapts to the project based on data collected. The process is changed by a feedback loop in the process.
    In agile processes this is simplified: if something doesn't work on your project, you just don't do it. A lot of people don't do pair programming but that doesn't mean they aren't doing XP.
    I disagree that XP advocates that you should do things "without questioning" ... in fact, the project members should be constantly questioning everything about the process. This is healthy, and XP assumes that all of the project members are smart people that don't need a heavy process to keep them in line. XP pretty much dares people to question the practises because they can stand up to practical scrutiny where they fit.
    As a project changes (and the team grows and shrinks, etc), the "best" process for that project changes as well. A process that takes this into account is more realistic and adaptable to Real Life projects.
    I use an extremely scaled down agile process to do projects on my own. If I wanted to bring a person into the project, all of a sudden the communication overhead between developers would change the process ... but it would be fast and simple to adapt.

    ReplyDelete
  2. Without getting too much into religious debate, let's look at things this way. Anybody who thinks that everything about their religion is always right, 100% of the time, is going to be wrong sometimes. If you think that every word in the bible is literally correct, then you will be wrong, because the bible contradicts itself.
    With XP, it will never be 100% right for every project, 100% of the time. No process will ever be right 100% of the time, for all projects. Certain aspects of it will work for a large number of projects. And that makes it a good guideline to follow, but it isn't something that you shouldn't question.
    I think that when doing software development, you should always be questioning everything. Everything about your process and the way you implement things should be questioned every once in a while, to make sure you are doing things the best way you can.
    Also, about unit testing. It's a tool. It's one of many testing tools. I wouldn't say that a project is being run badly just because it doesn't employ unit testing, without knowing anything else about the project. There are other ways to test software. If you don't use nails to fasten wood, when you're building something, doesn't mean you're doing it wrong. There's many other ways of doing it, like with screws, dovetail joints, biscuits, and probably a couple other methods. If the doctor hooks you up to an ECG to monitor your heartrate, than he may not need a stethoscope. Maybe you're doctor has bad hearing, so a stethoscope doesn't work so well in his situation. I'm not saying that unit testing isn't good, but that it doesn't fit in well with every project.

    ReplyDelete
  3. damn you both for your good arguments and making me think. :-P

    ReplyDelete