Back in late 90s I managed to get second best score in the country (for that year) in Visual Basic exam under Microsoft Certified Solution Developer program. The catch was that I had have never written a single line in Visual Basic nor had I have any substantial database development experience.
So, yeah, it is entirely possible to get certified and not know a thing about a certification subject. Guy's got a point.
I got my MCSA while in high school. When Microsoft offer the Dreamspark certifications, I jumped on the free upgrade test, and went and took it. I spent an hour or so studying for it, and got >900. Does that mean I am qualified to manage a Windows 2008 domain? Maybe. What it does mean, however, is that I am at least somewhat familiar with the tools that are available.
While this may not be the same situation for programming certifications, I know for a fact that the MSCx certs have been helpful. While I don't know the ins and outs of maintaining a server, I am consistently shocked when I talk to a "server guy" who doesn't understand Active Directory structure at all, or the various types of inheritance that go on in Windows. I may not know everything, but at least I know what I don't know.
That, I think, is the biggest benefit of a certification. It may not show what you do or do not know, but it does show that you at least know of the topics, which is more than can be said about many people.
Even in screening resumes it absolutely should not be your only deciding factor, but it is one good factor to look for when going through large stacks of resumes.
Programming has no barrier to entry. One of the only ways to see how well someone can write code is by actually looking at their code. There's no shortcut, for better or for worse.
With that said, most hiring managers are deluged the moment they announce a job opening. You cannot practically do a code review on every applicant. When staring at a stack of resumes you need to be able to tell who is worth the time to do an interview and possibly a code review on.
When I see a certification on a resume, it tells me a couple of things:
1. They studied at least enough to pass that test. As someone who has passed many of these tests, I am well aware that for most certifications this is a low bar indeed, but that is more than the nothing that many resumes have, especially for entry level positions.
2. They care enough to take the time to do this. I know they are doing it primarily to impress hiring managers, so again this is a low bar but it is more than nothing.
Especially when dealing with entry level candidates, it is a valuable data point in determining who gets an interview. I would never recommend making a hiring decision based on it, but, especially at the entry level, it is a good way to help pick out people for interviews and possible code reviews.
Here's a basic idea. It might be one of many:
Software x has been developed in the following way (explained here). Which of the following are not valid statements about x?
1) x is free of defects 2) We can have confidence that x will work under these circumstances <...> 3) ...
I mean, sure, you would need to contrive a proper example, but that is the kind of thing I am advocating. It should be a test that a competent developer who actually thinks about quality at all should be able to pass without much in the way of study or "extra work". People who do not think about the quality of the software they produce would need to learn about these issues.
We asked to implement a splay tree container in C. Got back clean and working code, followed up with phone interviews, then brought these guys in (from another city) only to discover they didn't know what the offsetof() was. Even though it was used in the code they have submitted.
Please explain?
The ancestor post by huhtenberg says he obtained certification for Visual Basic although he never wrote a single line of it before. My suggestion for the certification process is to actually use the skill at question, and using that as a basis for obtaining the paper that says "Yes, I can do this proficiently", where the skill in question is software development, not memorizing book knowledge. Why not test software development by making the test taker develop software?
That would be more valuable than being language certified.
As a thought exercise, imagine a job that requires a qualification that has little-to-nothing to do with the actual profession.
This would both artificially increase the barrier to entry for people with skills but no qualification, while decreasing the barrier to entry to those without skills who have passed the qualification.