Tommy and Marco have covered most of the points I wanted to mention. However, here are a few learnings I want to highlight.
- Embrace TDD. It saves a lot of time.
- Avoid quick and dirty unless it's a temp/side project.
- Refactor from the beginning (I know it has been mentioned, but I want to emphasize this) as you will never get time to get back to the old code to improve it further.
- Don't say yes to everything and don't agree with the deadlines without estimating first.
- It's best to use pen and paper first before writing a piece of code.
- Automate deployment pipelines and use a CI/CD tool if you are serious about a project.
- Try to finish a side project within a week or two. If it exceeds that, there is a good chance it'll slip out of your hand.
- Find a partner who complements your skills.
- Job is not everything. Find time for self improvement.
- Don't hesitate to take risks as a programmer.
- Perform major deployments at Friday nights only if you are available immediately to fix issues that may arise. Or else deploy in the day time on weekdays.
- Work on open source projects, submit PRs and get them reviewed by the maintainers. It always helps.
- Read as much code as possible.
- Save money and invest in good books and tools.
- Write technical blog posts and contribute to other publications as well.
- If possible, work with good technical editors and publish a book.
- Don't fall in love with a particular technology. Keep an open mind.
- Don't go by what people say. Test/try things yourself and take informed decisions.