I've been programming professionally for over 22 years and writing code since I was a kid (over 30 years). My number 1 lesson is... You will never know everything there is to know about programming so keep learning and don't stress. Other useful lessons... Good code works well consistently and is easy to change . Only invest in changes to existing code that enhance one of those two properties. Everything else is a needless distraction. Every bug is fundamentally the result of an invalid assumption. Strive to discover and convert as many assumptions to assertions as possible. This applies both to your actual code and also to your interactions with clients, product managers, business domain experts, etc... Never leave a bug until you truly understand what caused it. You should be able to recreate and fix it at will. In other words ... Write code that is kind to the poor schmuck who'll have to change it later, because often that schmuck is you. – Bill (from DevMastery )