Read this enlightening piece here.
- Get assigned a task to implement a new feature.
- Refactor the code until that feature is as easy to add as possible.
- Add the feature.
update: I found this is indeed originated from Martin Fowler's amazing book "Refactoring", which is filled with ideas originated from practices of smalltalk. It's a shame I didn't read that book earlier :-( "Refactoring" (or "Refactoring: Ruby Edition") is a must read.