Read a couple of posts by beginners (like you?) on this forum. All of them want to just "make an iPad app and earn $$$". They expect to be told "the" expert trick to be able to program, and assume they can learn by assimilation of screen radiance, just like Charlemagne thought he could learn to read by keeping his books under his pillow while sleeping.
Being able to phrase a question clearly and then understand the answer takes some skills. Do not use "ur" or other l33tsp33k.
I just finished reading a 1236 page manual, almost literally cover to cover. As it didn't explain the topic I was exploring in sufficient detail, I went off to the almighty Web and looked up ISO and CCITT documents until I got it. (I think I'm almost there. I got a splitting headache over it, so it won't be tonight or even tomorrow, but I'm getting there, in my own time.)
Languages. (Well, other than English, obviously.)
Intelligence? Nah, personally I'm doing just fine with tenaciousness and stubbornness.
Aside from learning a language and a GUI library for the platform you plan to use, you really need to learn about design patterns, algorithms (and efficiency), and data structures. I'm sure I'm overlooking some other obvious ones, but these are important if you plan to write "good" programs for public consumption.
After these basics, you might look at concurrent programming, network programming, mobile device programming (obviously), and learn some math, like linear algebra and discrete math.