Does good programming come with experience ?



Hello everyone,

I have about 14 years of programming experience.
It started at school, with Pascal programming lessons.
Then it became a hobby and after about 7 years it
actually became my profession too.

I like the Martin Fowler quote:
"Any fool can write code that a computer can understand.
Good programmers write code that humans can understand."

From the beginning, I've had that same philosophy,
so - though my programs are not perfect either -
I do always write code that is reliable and maintainable
and stays that way when doing enhancements.

At work, I've seen quite a few colleagues come and go.
Most of them had lots of bad habits, for example:
- Way too long functions (even making the compiler fail).
- Bad choice of function and variable naming.
- No separation of UI, business logic and data access.
- Commenting the obvious, but forgetting about
the really important details.
- Reinventing the wheel (badly).
- Not doing the necessary 'refactoring' in preparation
of doing enhancements.
- etc.

I'm wondering more and more ...
Does good programming come with experience or is it much
more a matter of talent ? ( You have it or you don't )
What's your opinion about this ?

If it's mostly a matter of experience, then how can we 'teach'
our new colleagues the right habits and philosophy and make that
'stick' ? They went to school, so why didn't that work ?

If it's mostly a matter of talent, then how do you more successfully
identify the talented people during recruitment ?

Greetings,

Anonymous coward
.