MIT 6.00 Intro Computer Science (OCW)
At vero eos et accusamus et iusto odio dignissimos ducimus qui blanditiis praesentium voluptatum deleniti atque corrupti quos dolores et quas molestias excepturi sint occaecati cupiditate non provident, similique sunt in culpa qui officia deserunt mollitia animi, id est laborum et dolorum fuga. Et harum quidem rerum facilis est et expedita distinctio. Nam libero tempore, cum soluta nobis est eligendi optio cumque nihil impedit quo minus id quod maxime placeat facere possimus, omnis voluptas assumenda est, omnis dolor repellendus. Itaque earum rerum hic tenetur a sapiente delectus, ut aut reiciendis voluptatibus maiores alias consequatur aut perferendis doloribus asperiores repellat.
Good logic, being structured, being thorough and have a good understanding of math. Basic programming isn't as math intensive as people will lead you to believe, but it's a good thing to have down.
The biggest difference between succeeding at math and succeeding at programming, is that in programming, you can't be afraid to make a lot of mistakes. The best programmers make mistakes ALL THE TIME, but they just try stuff to see what would happen and the debug, debug, debug. Writing a program is more like writing an essay or story than it is solving a math problem. You get a first draft that more or less does what you want it to do, but it may be riddled with errors. Then you do a second draft, combing through it until all the errors are gone. I will be teaching my first computer science course this January, and my biggest fear is that the students will be unwilling to take that leap, because it really is unlike any math class they've ever taken.
I agree that it is unlike math classes. I have been a programmer previously using SAS. I have also been a math teacher. And, a programmer is more like a story writer. There is a huge creative aspect. You know where you want to go in the program, but how you get there is entirely up to you.
I think perseverance is a important attribute,especially when first starting out. Getting use to what the debugging dump is telling you will help a lot.
Just try to fall in love with programming. With time you will learn lots and lots of techniques.
@Psalmy Attention to detail and perseverance! @Jeet.in Well said!