To do programming, you often have to think out of the box. Most people don't describe it as much out of the box. People say it's simple, it's this and it's that. I'll give you the grain of truth. It involves making an extension outside your ordinary box. People don't think of much when their computer just runs. They see this box pop up, they click it. They see that, click it. Programmers look at it differently. When you see that Welcome screen for Windows XP, what do you think?
You will think that you just have to move your mouse, click on it, type in your username and password, and all is fine and dandy. What would a programmer have to do before you can do that?
First, the programmers have to load up all the nice images. Then, they will have to render the screen with all this nice images. After that, they will have to render your accounts' names on the screen. Following that, it is a simple matter of drawing your mouse cursor on the screen. Then, they have to make sure that when you click this button on a name/picture, it will do something. I could go on like this forever, but I think you've gotten the point.
The premise is to break down the steps into smaller, easier, simpler steps. The tricky part is that you have to break them down small enough so that you can express it in the programming language of your choice. A computer doesn't know how to understand 2x². You have to break it down: 2 * x ^ 2.
It is easy to underestimate the difficulty of getting the computer to return the third decimal place in 2.704932. Sure, our human minds immediately point out the 4. In some programming languages, treating it as a string like our minds do (that is counting 3 characters after the dot) will do it. Imagine doing it with merely mathematics. It's extremely difficult to break it down with our brains because we can do it so easily, but in truth, it might be difficult to get a computer to do it.
Imagine what you'd have to do? Even programming students might take a minute or two to figure it out. The concept can be so far out because you have to take this even smaller box and think within it. How is this out of the box? You have to know how to abuse the effect of the smaller box. (to be continued later)