Picked up on when reading through some old posts on the sweng_gamedev list, and had to be shared.
On 11 December 2009, Fabien Giesen wrote:
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.
This is so true. While I’m all for abstraction and making your code clean and high level, you really, really have to be aware of what that means.