Programming can be so wildly varying that it's tough to find any common ground. Try getting a C programmer, a Lisp programmer and a Java programmer (heck throw in a Ruby and PHP too) to agree on common core knowledge. We can't even agree on Text editors!
There's no need to agree on text editors.
For any useful agreement and commonality to exist, it might have to be within a particular problem domain. Philip Greenspun's course for internet applications, for example, makes no demands on language, operating system, or text editor, but does require that a successful student can build a working software system of the type described in the curriculum.
Knowing a language without knowing how to build anything useful seems pointless, and I posit it would be, for all practical purposes, impossible to build a useful system without knowing "enough" about at least one language (and one text editor, and one operating system). The breadth and depth of "enough" varies from domain to domain, and is not consistent across all branches of software engineering.
FTA: Plus you have the difficulty of evaluating a "great" programmer in an unfamiliar language. Most people would agree that Linus Torvalds ... is a great programmer. But take him out of the Linux "C" world and make him try to get a job programming Java, and likely he would suck, at least initially, and maybe even be fired for being terrible.
To believe this, you would have to wildly underestimate the value of having a great sense of program design. Not 1 in 10,000 programmers could design something as elegant as Git. It wouldn't matter if he wrote the whole thing as a bash script or a Java program using one big singleton class. The theory of the program, which drives its implementation but is larger than it, is what makes the program (and the programmer) great.
Incidentally, the author is also clearly unaware of some 'facts' about Linus:
I wonder if there are some "blub" effects at work here. By that I mean when you evaluate another programmer you either see someone who is worse then you, or you don't understand the ways in which they are better.
And then there are the cases where two people of different skillsets can each see each others faults with painful clarity and fail to understand each others virtues.
Our culture also usually highlights weaknesses rather than virtues. We're told to improve the areas we are weak in, rather than mastering what we're already good at and take our skills to the next level.
Nice article, The litmus test I have always used (with a varying degree of success), is enthusiasm.
How keen are they on programming? Do they read coding blogs in their spare time? Are they involved in any open source projects or any coding projects outside of work?
To me, all of these things scream "This is not just a job, I actually love to code"
This is another stab at how to recognise programming talent, but this one is fairly confused and a bit rambling, and makes some silly points like suggesting that someone like Linus Torvalds would struggle in a java interview.
There's no need to agree on text editors.
For any useful agreement and commonality to exist, it might have to be within a particular problem domain. Philip Greenspun's course for internet applications, for example, makes no demands on language, operating system, or text editor, but does require that a successful student can build a working software system of the type described in the curriculum.
Knowing a language without knowing how to build anything useful seems pointless, and I posit it would be, for all practical purposes, impossible to build a useful system without knowing "enough" about at least one language (and one text editor, and one operating system). The breadth and depth of "enough" varies from domain to domain, and is not consistent across all branches of software engineering.