Split problems in small pieces
Brief​
If I were to sum up all the previous lessons, the most important takeaway would be: Write small things! Small functions, small classes. Create a lot of small abstractions that help you reason about your code.
Take small steps​
When you are faced with a big programming task, if you don't know where to start try to split up the problem!
Think about the smallest next step that you can take, that will produce a visible (testable) result and will get you ever so slightly closer to your final goal. Once split in small enough pieces, any problem should be manageable.
I personally like to do the visual steps first, because then it is easier to debug / see your progress and it is more rewarding, you really feel like you are getting somewhere once something is displayed on the screen.
Create abstractions​
Abstractions can make your code harder to understand at first glance, but they also make it easier to change (and therefore to manipulate).