Extreme Programming

Programming is hard. There is no Silver Bullet, that is there is no single technology or practice that will make it easy. Given this how do we get stable software, on time and with all the features?

Object Oriented programming and Refactoring both help with this problem by allowing one to focus on the high level problem and not the low level problems. Also the more declarative the language the easier it is to program.

Historically this problem has been addressed through the capability maturity model (CMM). This has some good ideas, for example its focus on improvement and finding what works for you. However, it seems like a formula for lots of bureaucracy to me.

Another approach to solving this problem comes from other fields. The concept is best practices, essentially to do what one would ideally do if you had the chance to do a project right. It involves finding out what the best programmers do and getting everyone to do that. In some ways design patterns and refactoring are leveraging the idea of best practices, but we have moved them into the realm of normal programming education.

A new approach to all this is Extreme Programming. It is much less bureaucratic. It focuses on set of practices. The one disadvantage is that it is very much focused on projects for a customer rather then say shrink wrap software.



jwalker@cs.oberlin.edu