Picked up on when reading through some old posts on the sweng_gamedev list, and had to be shared.
Abstraction provides leverage. This is well understood in one direction and not so well in the other direction.The power of abstraction is that I can do with one line of code what might take me 100 lines otherwise. The problem is that I’m now writing code one 100-line-equivalent at a time :). Any conceptual flaws or minor misunderstandings present at the level I’m working on are amplified by a factor of 100 by the time the machine gets to see the code. This is a crucial thing to understand when working in a team, where the user and the designer of a module aren’t necessarily the same person.