I've been taking a break from 'web development' studies and getting more into the computer science type aspect of everything. More specifically, I've been looking over things like data structures/algorithms as well as design patterns.
One interesting observation I've learned is that you shouldn't be afraid to make 'dirty prototypes.' In other words, don't try to make your initial attempt 'perfect' and beautiful and don't take a design pattern as some end all, be all. A design pattern is a tool, and if you can 'refactor' into it, that's better than trying to force fit design patterns into your initial coding attempt.
It's sort of like with art. You draw several loose sketches before you start working on a more structured and careful design. If you try to make the first iteration your only one and you try to fill it with all sorts of details, you are putting yourself in a situation where you may not even like the result, but you just wasted a bunch of time that would have been saved if you put optimization at the tail end of the process instead of trying to create 'perfect code' initially.