Some lessons concern programming methodology and software engineering. Given a task, break the task down into procedures. Make sure each piece works. Explaining what a program does. Showing that a program does what you say it does.
Some lessons apply to life in general.
Master the elementary material before attempting the more advanced. Attempt to grasp the direction of new material without understanding all the details at first. Know what your capabilities are. Pick something you know you can do. Try things you don't fully understand yet.