A colleague recently asked me,
"why can't we just come to work, code continuously for 8 hours without any disturbances, and then go home?"
And I replied,
"sure you can, should you?"
When you're at ThoughtWorks, you can't stay away from these questions. You see, ThoughtWorkers are artists when it comes to programming; a seasoned / tenured ThoughtWorker even has the potential to write a beautiful piece of code and then just stare at their monitors admiring it for hours (not that they do but they have the potential, pair programming helps get away from this narcissistic behaviour). And I guess that's what happens with most artists; I can imagine Shakespeare saying "why can't I just write plays continuously without disturbances?" But did he?
Along with imagination, the second most important tool for an artist is inspiration. Shakespeare didn't write his plays while sitting in a closed room all day, the politics of the court and what people on the street were talking about inspired Shakespeare. An artist cannot stay away from the social aspects of the art, then why should the art of programming be any different? This, is where Extreme Programming or XP enters the scene.
ThoughtWorkers have great imagination, this is evident from the amount of open source software which are used by developers around the world every single day. And none of this would have been possible without the social inspiration nurtured by XP. Many software developers view XP as a set of practices that get the job done; pair programming, test driven development, continuous integration, etc. There's much more to XP than just practices and it is this collectable that differentiates a software engineer from a software craftsman.
Believe it or not, I'm a big fan of the waterfall way of software development. And something that many don't know is that waterfall also has a set of five principles without which it may not succeed; these are: Program design comes first, Document the design, Do it twice, Plan-Control-Monitor testing, and Involve the customer. If done well, waterfall has the potential to deliver successful software, in fact, most of our textbooks don't even explain waterfall well (original waterfall diagram below; chances are you've never seen this).
What waterfall lacks is high levels of team dynamics (Conway's Law). That's where the values & principles of XP fill the gaps;
What's evident from this list is that XP is much more than what it sounds like; although it encapsulates a number of technical practices, XP values and principles are the basic building blocks of social software engineering. It is this social aspect that inspires developers to continuously better themselves each day. Software development after all is not all science, it's a combination of science & arts; it's the science that evolves and the art that prevails, that's what differentiates a software engineer from a software craftsman.
So, you can stay away from XP, should you?