1. Your software will haunt you

Definition: When you build software, that’s actually the easy part. Maintenance on that software is where the real work happens. Have a plan for this BEFORE starting a project.

2. Don’t assume your users know what to do

Definition: Your users will most likely never use your system the way you intended it - they’ll press buttons out of order, type in the wrong data, etc. You need to do good error handling, give good error messages, and help the users learn how to use the software.

3. Make sure you are solving the right problem

Definition: Software engineers often get caught up in all the neat things that we can put together - all the shiny frameworks, tools, technologies, etc. Keep your focus on solving the customer’s problem. Make sure you understand the customer’s problem. And, most importantly, make sure the CUSTOMER understands their problem.

4. You live and die by your team

Definition: Success in building software is in working well with others. That's not just "hope you are on a team where folks do their part." You need to take the initiative to help others improve. When someone else on the team wins, everyone wins too.

5. Don't suffer because of others

Definition: That said in #4, there's a time and a place to escalate issues to management. You are not a bad person for doing this. You are being a responsible software engineer.