Here is what I have done to learn what it takes.
I downloaded and installed the Software Developers Kit from Autodesk Developers Network. I also tried several good tutorials they have available. While this was good, it didn't give a lot of explanation to why things were done the way they were, especially for a novice programmer. Also, much of what I found available in this was written in C#, which inspired my learning the language.
First a free online Fundamentals for Beginners C# Programming course from Microsoft. This gave me a good understanding of the basics. It also talked me through downloading and installing Microsoft Visual Studio Express 2012. The express doesn't mean it runs faster. It simply means it is the free version with several features missing. That topic could and likely will be another blog entry to itself.
Knowing C# alone is only part of the puzzle. Next you must learn the specifics of using the Revit API in C#. I choose to purchase the Udemy on-line course from Harry Mattison, Founder of Boost Your BIM. The man knows his stuff, and does a good job of explaining it. This course is what finally got me off the ground and running.

Also along the way has been countless Google searches on topics, advise from friends in the programming industry and a trip to Autodesk University (focusing on API classes). One class that stood out to me was David Rushforth's Automate your Revit-Based Software Workflows: Let the API Do the Work.
In the not to distant future, I hope to start selling some Add-ins through this site. I have several ides already. Do you have any suggestions/requests? If so, please leave a comment, or message me.