Enter Scratch. Scratch is a visual programming language developed by MIT to teach children the basics of coding. It utilizes commands in the form of puzzle pieces that fit together with descriptions on them in plain English, as opposed to syntax that may be difficult to understand for the true beginner. Scratch serves as the bridge between a general understanding of concepts such as loops, conditionals and variables, and the ability to write code in a text-based editor. It has already helped me to understand concepts in other languages that gave me trouble when I was simply reading them in a book. For example, I was attempting to create a basic slideshow using play, pause, next and previous buttons, but kept running into a problem of the buttons not responding to commands. After some trial and error, I realized that the background on the stage was independent of the code I was writing in the function for the button. Instead, I had to return out something when that button was clicked that the stage could hear, and then, once that occurred, I could then change the background to the next image. I think (but am not sure) that this is the same as having global and local variables and what takes place in a function is independent of other functions so you would need to return out a value in order to use it elsewhere.