Monday, June 26, 2006

Here are a few notes about the kind of engineer I am:
  • My position at Naughty Dog is Generalist Programmer, and I believe the job is a perfect fit for me. I like tackling any problem, at all levels from game play to engine to to tools. I'm equally comfortable optimizing a single function in assembly language and planning the architecture of an entire engine system.
  • I'm a natural problem solver.
  • I'm trained in the discipline of design. I understand that design is an iterative process, one of continual divergence (ideal generation) and convergence (decision making).
  • I'm a closer. I'm the heavy hitter that the team calls up when they need a home run. I'm not above any task if it will enable the team to be successful.
  • I've got a deep understanding of C++, from its generic programming features all the way down to its roots in C and assembly language.
  • I believe in KISS (keep it simple, stupid).
  • I believe that every problem has a level of "necessary complexity"... and that most programmers have a tendancy to overshoot that mark. (Especially the really smart ones!)
  • I believe in UML diagrams... and any other kind of diagram that gets the idea across.
  • I think scheduling should be granular in the near term, gross in the long term. Schedules should account explicitly for risk. Use the simplest scheduling tool possible -- Excel works just fine for a lot of projects. Anyone who says you can schedule down to the day six months out is smoking something.
  • I'm a self starter... ah, what the heck, I admit it -- I'm a full-on work-aholic!
  • I get a thrill out of helping others to learn and grow. I teach at USC, host brown-bag talks, mentor interns and junior team members. I believe in transparency, and that the efficient dissemination of information should be a core competency at any company or studio.