Friday, June 12, 2009

A Cult Programmer

Cross post from IRefactor

Last week, while conducting interviews for a Senior Software Engineer position, a candidate asked me a “red alert” question. A few moments after starting the interview and explaining the position, the candidate squeezed the following:

“What is the current .NET framework you are using and are you planning to move to .NET 4.0?”
I bet you wonder… Is it really a “red alert” question?

Allow me to elaborate. The candidate’s real motivation was to percept how technological is the company that interviews him. If the company is stuck in .NET 1.X or it isn’t planning to move forward with Microsoft’s future plans, it just not technological enough.

What alerts me is the idea that the specific version of framework used by the software is a measure to the software’s quality and not using a specific technology necessarily means something bad. Maybe the company utilizes the best practices of Software Development by applying: Analysis, Architecture & Design, Automatic Unit Testing, Static Code Analysis, Code Coverage, Integration Tests, Automatic Tests, Automatic Builds, Code Reviews, Peer Programming and etc… Maybe the company stands for writing quality software by applying the Object Oriented Principles like GRASP (loose coupling / high cohesion), Design Patterns, SOLID and etc…
Maybe somebody forgot that a good quality software doesn’t mean necessary using the dynamic keyword?

Allow me to emphasis. Technology is important! Choosing the right technology for the specific requirements of your application is important!
However, a technology is not the key factor in the software’s success.
It reminds me a good article discussing the technology leaps, by Joel Spolsky. Jumping from technology to technology seems to be just a plain “Fire and Motion”.

If you are asked whether you are planning to move towards .NET X.X, just ask the candidate to explain, why (or what) in his opinion moving to .NET X.X will contribute to your application. Most of the time, as in my case, the answer will be quit generic: “It’s just a better technology”. This clearly, as explained above, doesn’t stand! Such a candidate is being marked often as a cult programmer. A Cult Programmer is a programmer who seems to compensate sound Software Engineering skills solely with a specific technology evolution.