This article is a recollection of my struggles to understand programming, and will hopefully aid people who are new to the craft. I hope it challenges anyone with experience, too.
The biggest problem I faced when learning how programming works is understanding how everything relates back to life and reality. Many tutorials show you how to achieve things with programming languages, but they don't explain why those things work. At some point it becomes about memorizing commands. In order to feel comfortable I feel like you really need to see the bigger picture.
There is a range of understanding starting from the code on your computer screen, all the way down to the electrons inside of the computer that make your code work. You may want to have at least a basic understanding of every step between. Without this knowledge, you risk becoming an [expert beginner](http://www.daedtech.com/how-developers-stop-learning-rise-of-the-expert-beginner/