First level is to be able to get the computer to do what you want. If you can do that, you have a career as a programmer.
The next step is writing flexible software.
I would beg to differ on step two.
Step two would be understanding *why* the computer did what you wanted/
Most developers I have worked with do not understand how a computer actually works. It's a magical black box to them.