+ 1
For me, it would be simply being patient and having good problem solving skill. Programming is hard to learn, and requires lots of practice and determination. But once you get over the initial learning curve, it wouldn't seem as complex as it was anymore in the first place. Programming is also like a puzzle. You are presented with a problem, and it is your job to solve it. You may have all the tools, or pieces of the puzzle, but you wouldn't be able to solve it without knowing how to put it all together. It may take a long time, but the satisfaction of seeing your finished application is just like seeing the completed picture from the puzzle you put together after so long when you were little.
In short, programming is going to be a long journey. But if you do have the will to succeed, someday you'll be able to develop applications that help everyone.