There is no single true path to begin learning something but in the case of programming, I'd suggest start building something fairly challenging as early as possible. You don't have to understand everything about it. Just start and gather the knowledge along the path. We as humans tend to procrastinate because we're afraid of failing. We want to know everything upfront in order to lower the chance of failing but this actually prevents us to get the thing done. Reading many books about something is great but it doesn't compensate for experience. I found it best to gather some knowledge at first and then trying to apply them to the problem at hand. You may feel intimidated at first, but this helps build the necessary experience. Experience is the key to get something done. Knowledge is then, the key to get it done well.