My good friend Tim Gifford has a pretty nice write up on object-orientation and the always popular, "static vs. instance" methods. Here's something I would like to comment/add-upon to his post:
Tim mentions,
Because when you're agile, you must be able to make changes quickly without affecting the system. In order to do that, you need to reduce (or eliminate) duplicate code and minimize coupling.
I will have to say that this statement holds true for more than just agile developers. If you're doing any type of component based development or have incorporated some higher-level abstractions into your code, you fall into the same bucket. I will even go to add that eliminating duplicate code and minimizing coupling is a must for any complex and extensible system.
Thoughts anyone?