Top 12 Things Every Software Engineer Should Know