Commit in small and concise chunks. Big commits which touch every single file in the system should be avoided. Break down your big feature into small committable stories. The commit history of your (master) branch should be readable, reversible, and resettable. No one likes to have a big fat merge conflict!
Do include tests in every commit.
Put on your QA hat and really, really try to break the thing you made. Then write more tests to avoid the found bugs from happening unnoticed.
Underpromise and Overdeliver. Programmers usually work under some kinda deadlines. Don’t take on more than you can bite but really deliver a high-quality result.
Don’t count on frameworks or plugins. They can have many drawbacks: It’s hard to upgrade and maintain; It’s too complicated for what your need; It has shitty code behind the scene. Often times the pure, vanilla solution works if you are willing to tinker.
Learn when to stop learning. I used to be the kind of person who would beat herself up from not knowing everything. It brought me lots of anxiety and self-loathing till I read about the flow from Mihaly Csikszentmihalyi. The concept of flow shows us that we will be the happiest when the amount of challenge is just right. Too much challenge would make us give up; too little would make us bored. Note: if you find this interesting here is the popular TED video and the book.