Visibility In OOP
If you maintain at least one open source project you'll know how important it is to clearly define the behavioral specifications for your code. You can control every extension point in a project using five keywords and enforce the expectations. Stupid proof code will kick you in the butt every time you make a stupid decision. It will force you to think and wonder about stuff that you would never bother about otherwise.