OK I have been in this business since the late 70s. There did not exist CS degrees back then. Managers in their zeal to convert people from diverse disciplines into programmers devised tests to ascertain that the could think logically.<p>Some of the best programmers I have encountered in my carrier started out as Zoologists, Philosophy majors, some English Lit Majors, etc. etc. These people were able to make complex systems run an very limited hardware because the emphasis back then was to "Do the most with the least". Please see some of the early Unix tools for proof of concept.<p>As time went by, schools started to turn the crank and started to generate CS degrees. While this is good to a large extent, it has lead to an increase in specialization which in my opinion is detrimental to the industry overall.<p>The adage "When life gives you a hammer you tend to look at all problems as if they were nails" is an apt one, and is illustrated by the advancement of theory over function ( please look as most Industry Popular OSs for proof of concept ).<p>No longer are engineers required to "Do the most from the least", They are conditioned to build in obsolescence in their code by requiring that the users buy better hardware in order to accommodate the grandiose theoretical marvels.<p>The type of question that I have asked of the most successful programmers in the projects I have managed are simple direct questions that probe the individual's ability to deal logically with problems. Than explore their depth of understanding as far as the consequences of the decisions they make.<p>I have worked with far too many engineers that look for esoterica where simplicity is sufficient, and mistake density for elegance.