I’m often thinking about what qualities make for a good software developer. One attribute that I think may be important is the capacity to keep the details of a large system in your head. What I mean is, the ability when someone brings up a new feature, to quickly know exactly how it should be implement in the context of the existing system. Or, to be able to recall where the code is in the system that performs some function that needs to be added to some other part of the system. These days, between search tools and the code navigation capabilities built into the better development tools, there are lots of ways to find things in a large body of code, but I think that having a mental map of a system remains valuable. I also think that having this ability may signify the presence other valuable traits that a developer should possess. After all, it’s not fundamentally different from having a good working knowledge of the Java collections framework or the popular Ruby gems or the massive number of PHP string functions.

Two questions for Friday afternoon:

  • Am I correct in assuming this is something you should look for in developers?
  • What questions would you ask in an interview to find out whether someone possesses this quality?