If you are a programmer, you are probably working on web development. Almost every application that is being launched to the market is a web based application or a mobile application with a background web platform supporting it. From that point, almost every job option related to software development is strongly linked to web development, and I think that the web development market is a little bit messy, mainly due to the lack of technical knowledge of people that are hiring developers. Just naming the required technology enough times to make your resume to pass the filter in the job position is a good start point to getting hired. Is that enough to meet the job requirements?. On software development experience is not so required, and seems to be strongly required by some companies hiring developers.
Then you have people naming the required technology as many times and many years that position requires, but do they really have the required skills and required knowledge?. I have seen some resumes filled with technology names and languages names arguing strong experience with them, but nothing related to concepts, and the same applies to job positions. So you have hiring announces with the same message pattern everywhere: “we need people experienced with technology-name-here”. Also, those announces are avoiding people that can make a real difference with their current programmers, because they have pretty clear programming concepts and they will be able to learn that required technology as fast as they have passed the hiring process — even if they are not experienced with the required technology.
The theoretical background of the programmer matters. With the proper knowledge, the programmer should be able to learn any programming language that is being used on the market. A good programmer should be able to jump from Python to Java and backward, without any course, just few books related to the used technology. I have several resumes, because I am a skilled programmer that can handle several programming languages, so I have a resume for the Enterprise Java market, another for Embedded Systems market, and so on. If I place every language that I know in one resume, the required technology for that job position will not be named enough to make it pass the filter in the hiring process.
No matter from where comes the programmer, his breath in programming practices is what makes him a good programmer. Someone with a strong lack of interest on programming will not be as good as someone with real interest in programming. All is about programming, is the main task on software development. Someone without programming knowledge cannot build a good software design, because it will lack consistency related to the technology and environment. Also, will not be able to manage a project because he lacks the proper technical knowledge to cover a good design and programming practices, and programming is about continuous learning because everything is changing constantly, but the basis has been the same from the elder stages of software development.
So, I agree with the idea of proving how good a programmer is. Which method do I use to test a programmer? I ask for open source projects because I want to see his source code. If he does not have an open source project, he should have a side project, and he should be able to show me some library file with something impressive. Once I see his source code and resume, I start evaluating his theoretical knowledge through a conversation, just to check the clarity on some programming concepts — I am not interested on how many years of experience does he have, but I want to check that he will meet the requirements — and then I will start doing a live programming test. So he can show me his screen through Skype, TeamViewer or another similar application and will let me know how good is solving programming problems, having a conversation about the programming solution and check the applied concepts. Experience is not required, but deep programming practices are a must.