Dr Herbie said:

Meh.

 

There has always been a conflict between what's taught on a CS Course and what business wants out of developers.

15 years ago there were articles complaining that CS graduates were terrible developers; they got CS Degrees that taught them how to design a CPU, or mathematically prove an algorithm was correct, but that didn't teach them how to follow a spec from a client.

 

Now CS degrees have moved the skillsets they teach closer to what business wants, and it's just the toolset that differs. Business isn't going to suddenly change its ways to suit the CS courses taught.

 

Herbie

 

Interesting. I was interviewing a lot of those graduates 15 years ago and I don't remember ever having that problem.  Most of the people I interviewed were bright, enthusiastic and knew the kinds of things I expected them to know. 

 

That might be the result of really good pre-screening on the part of HR though.

 

What worries me is the number of new developers I see that don't seem to have a grasp of fundimentals.  Developers who would write:

void MyFunction(string input)
{
    string dest;
    int dotIndex;
    while ((dotIndex = input.find(".")) != string::npos)
    {
        dest.push_back(input.substr(0, dotIndex-1);
        dest.push_back("\.");
        input.erase(0, dotIndex);
    }
}

instead of:

void MyFunction(string input)
{
string dest;
const char *inputString = input.c_str();
int dotIndex;
while (*inputString)
{
if (*inputString == '.')
{
dest.push_back('\');
}
dest.push_back(*inputString);
inputString += 1;
}
}

Note: Forgive the typos above - this is a real example of code someone wrote during an interview (resurrected from memory, so the code is likely to not work).  Even if the code isn't used in a performance critical area, IMHO the original example isn't nearly as clear as the second one (the first one also isn't correct since it doesn't copy the string if there aren't any '.' characters, but we won't go there).