What goes first? (Theory or Tooling)

September 26, 2011 | Miscellaneous

A very good friend of mine went to an interview where the interviewer kept asking about the X, Y or Z tool without paying attention to knowledge on the theory behind those tools.

In my opinion it is always better to have a discussion, rather than a cliché interview. During the discussion it would be good to let the developer talk and express opinions on theory, design patterns and principles rather than make questions on specific tools and frameworks. The reason I strongly support that is because languages and tools tend to continuously evolve (and sometimes change directions) while the patterns and principles hardly change.

Tools are implementations of patterns and principles in a specific language. Thus a developer should give priority on the theory behind them rather on the API of a specific tool.

Let's take as an example a Dependency Injection (DI) container. It gives no real value when a developer knows only how to use Spring, Windsor or Unity if lacks fundamental knowledge of DI theory. On the other hand one, that knows how to apply proper OOD design and follows SOLID principles, will use a DI container to compose object graphs in the Composition Root and it's API to effectively apply lifetime management on them.

The same applies when making questions on a specific ORM solution.