BlueCell wrote:
Heya LLBLGen forum-members,
Just as the titles says: What is your view on this new hype called extreme programming?
Bullshit or the path to heaven...
ps: http://www.extremeprogramming.org is a good site on what XP is
It used to be called 'Ad-hoc programming' or 'hacking', at least that's how I see it. That is: if you use it in its purest form.
Software engineering requires a plan, what you're going to do. XP in its purest form doesnt have a solid plan, just rought edges and people are not forced to think about what they're going to do and better: why, but they're start hammering out code till it does what the rough spec tells them to.
Now, XP has good things, and I feel that XP has brought some great things to software engineering that shouldn't be overlooked. In its purest form it's IMHO not useful, but the aspects which are useful are invaluable IMHO. These are:
- unit testing. XP brought unit testing because it is a key element of XP: unit testing makes sure your interfaces still do exactly that what they should even after you've completely reworked the implementation
- refactoring. Refactoring was already known for decades, but in XP it got a name and the proper tools to be successful. Remember: never refactor without unittests in place, this means: first write the test, check if it's ok, then refactor and test again.
- pair programming. Pair programming is very efficient, research has shown. I only know pair programming from the demoparties I went to and the demoscene in the early amiga-days when we were hammering code on a single amiga 500, but it turned out these sessions were much more productive than when you had to do it all alone.
- less focus on 'plan everything ahead'. This is good, at least when the 'less focus' doesn't mean: 'no focus'. Too many projects have a very large plan with every detail worked out in a technical document (not functional research, but technical research) and when the specs change during the project because the client wants something added/changed, the work done in these plans can be thrown away.
- more focus on what you need now than what you need in 1 year. With proper planning, you can still make your application extensible for future updates but you shouldn't go overboard with that effort, i.e.: if it takes 2 months to add an extensible framework for features which take 1 week to add, it's not efficient.
LLBLGen Pro was my first project I did without a detailed technical plan. That is: there was a solid functional plan, but no in-depth technical plan what to do in every detail (just a more roughly technical plan): a more flexible approach, with a little bit of both. I must say it turned out great: the code is still very flexible to change/add features to, but also hasn't had a long delay because the technical document had to be written first. Technical details were filled in when the features were planned to be implemented, which turned out to be a good flexible approach in this project.
A warning is in order: I did know what to avoid in the first place, so I didn't make mistakes like adding all database code in 1 assembly which would make extending it with additional drivers a pain (for example). This doesn't have to be the case in your situation
.
Concluding: I wouldn't go for XP in its purest form. A functional research and roughly technical document is essential for a succesful project, IMHO. Still the benefits of XP should and could be included in every day software engineering.