I recently found two fantastic presentations the guys from Insomniac put together about misguided/inefficient approaches to programming and the steps they take to compensate.
The first, titled “Three Big Lies: Typical Design Failures in Game Programming,” puts forth that many of the biggest issues we face as programmers is of our own design. Essentially, we are guilty of over abstracting and over modeling. They argue that since all programming boils down to data transformations, we should just focus on the data. “World Modeling” may be a nice way to ease new programmers into the field, but it is not necessarily the most efficient approach.
The second presentation focused on a design paradigm that I have worked very hard to create for many of my own projects. “A Dynamic Component Architecture for High Performance Gameplay,” essentially lays out a system for modeling game objects through composition of relatively flat hierarchies of components. Where more traditional approaches create individual objects with complex inheritance systems. The author not only explains the benefits of the system, but also a sample of his API and many examples of how it helps improve their system.
If these articles don’t challenge the way you program, then either you are a genius and have already made these revelations, or you’re an idiot. Enjoy.