I think that most of the really successful coders are those who started programming at a very early age and really breath, eat and drink code all the time, or people who studied computer science in the university and really know all the math behind. I think that a clever person with no background could become a good programmer, but it will take a lot of hard work, time, and probably luck. Becoming a star programmer -- I doubt it.
Still, even being a "code monkey", as some people call it, could be a good job IMO. Not that I tried it...