XP is garbage and should not be dignified with even a mention. The practices of XP such as pair programming are psychologically harmful and bring nothing to development but stress.
Two points in there I agree with
1) optimization should be deferred. I would go further and say don’t do it at all, except in rare and extreme cases. Much more can be achieved at the level of design than in code.
Many developers have their first exposure to the industry in an abhorrent whiteboard interview where some junior developer untrained in interviewing does unto the interviewee as was done unto him:
“can you make it run a little faster?”
and the newby comes away thinking that low-level optimization is the holiest of grails and does it everywhere.
Optimization leads to unstable code.
2) Upfront design. There are two problems with this
- very few developers can write; even fewer can write clearly and thoroughly. Most will paste an interface definition into a document file without title or header and stare helplessly at it, unable to continue.
- Nobody reads the goddamn things. My generation grew up reading books; the kids nowadays cannot finish a book and have grown up on channel surfing and games. They can’t concentrate and they can barely read.
Do them anyway. And when in the design meeting its clear nobody has read the spec, the manager says
Next time I send out a design document and nobody reads it, I’m firing the filthy lot of you.