i just want to know if there are any prerequisites to become a good programmer,like do you have to be intelligent and have a high I.Q(problem solving ability) to become a good programmer?
Like any other skill, getting good at or mastering programming takes a lot of practice.
More than anything to become a good programmer you need to be motivated enough to do what it takes to be one.
It helps if you are good with: Abstract thinking, Mathematical reasoning, General problem solving, Detail oriented. If you are not good at them, but have got motivation you can still be a good programmer with a bit of extra efforts.
- Pick up a standard book on C/C++/Java/Python/Whatever Language and learn the syntax of the language.
- Write standard programs for standard tasks like: sorting, searching, recursion, binary trees, etc.
- Learn about loop invariants, pre-conditions, post-conditions, program contracts, and in general you should be able to convince yourself of the program correctness formally.
- Learn about the basics of data structures and algorithms from a good textbook
- Now based on your tastes and interests you might do some or all of the following:
- Learn about different paradigms of programming. Especially about functional programming, learning about it will make you a better programmer even if you still program in other language.
- Start an open source project with friends OR contribute to an existing project.
- Compete in online programming contests like: Topcoder SRMs, Google Code Jams, Codechef Monthly contests, etc.
Remember that its going to take time to be a good programmer, so be patient and systematically work towards your goal.
P.S: I have intentionally not given any references to specific textbooks/books, because that is a different topic in itself. I will community wiki if someone feels like adding references.