In each project keep an eye on the goal.
I think a difference between novice and advanced developers is the ability to have every action be towards successful completion of the project.
Be careful not to add 'cool features' that don't meet the project's end goal. Or worse, put off delivery of the project in time.
Document things clearly so all involved (including yourself) can work well with the project later. I'm not saying write books of padding. If you had to work really hard on a particular algorithm, take a few minutes to say what you discovered so it makes sense later.