An object oriented language of choice. (I recommend C++, C#, or Java.)
A good programming IDE. (Eclipse is a good free solution for Java. For C# Visual Studio is an option with an express version available through Microsoft
For C++, Qt Creator is the best platform neutral IDE I have seen for it currently. Beforehand, I recommended Eclipse but it is too problematic for its own good in my opinion.
A legitimate willingness to learn
The following is the first edition of the Basic Programming Concepts series of tutorials.