I've got a buddy who works for a defense contractor and bangs out user
applications in VB for a living. He's written a ton of code over the
years and does well financially. He's the only one in his unit who
does what he does, and he performs an essential function for his unit.
He's not a programmer,
This is a contradiction. If he "bangs out user applications" and has
"written a ton of code", he is a programmer. He may be a bad programmer
(I don't know him and haven't seen his code, so I couldn't say), but he
definitely is a programmer.
I don't disagree that some people have natural talent that the rest of
us can't match, but that doesn't mean that thos of us without the
talent can't make a contribution.
I guess you haven't met the people I meant when I wrote that "some
people don't have the knack".
There are people who couldn't "bangs out applications" even if their
live depended on it. They can't get from a problem to an algorithm to
code. They can learn the elements of a programming language by heart but
they never see how to apply them (I've met people like that when I was
an instructor at the university: They failed the same course (with only
minutely varying assignments) semester after semester).
Then there's those who could do it (at least for simple problems) but
don't have what I would call a programmer's mind: They just prefer to do
the same routine job by hand every time instead of writing a simple
script.
These people don't become programmers.
Of course there are (huge) differences in talent among programmers, too:
There are really bad programmers, you can write code, but it's buggy and
clumsy and they take a long time to solve even simple problems.
And there's the geniuses who whip out complex, non-trivial software
systems over the weekend, with few bugs and elegant solutions.
Most of us are between those extremes, I think.
hp