This a a great podcast with Kyle Simpson, where he talks about about his personal habits and how you can become a better developer:
I think the most important points are:
- Truly understand the problem, before you try to fix it.
- Have a very good understanding of the stack you are working on, and a good enough understanding of the abstraction / layer below.
- Make sure you can explain your code. If this is not easy enough, the code probably needs refactoring.
- Find the right balance between YAGNI (you ain’t gonna need it) and a higher level of abstraction. Don’t do premature optimisation.
- Don’t be stuck for too long, when you don’t understand something, but also don’t jump on