In my opinion it’s less about being able to program and more about being able to solve problems. All you have to do is spend an hour perusing Experts-Exchange to find out just how many people working as programmers can’t research and/or solve the simplest of problems. People who will get an answer written in C# and then ask that the respondent write it in VB.NET for them. I recently was asked four questions in a phone pre-screen:
Name five of the events during a page life-cycle.
What happens between Init and Load.
Difference between HttpModule and HttpHandler.
What do these terms mean: abstract, protected, internal, static, virtual?
The person doing the screening said I was the first candidate to answer all of them without hesitation. One candidate told her that he usually is sitting in front of Google when doing a phone screen.
I think that’s part of the problem. The internet has allowed us to share information in a way that wasn’t possible when I entered the field 25 years ago. We had to figure it out ourselves (and walk uphill to school both ways in the snow). Now a person figures that if they don’t know something they can always ask Google, and cut-and-paste the answer into their application. The problem is they never learn what all that cut-and-pasted code is actually doing.