• Reflects current code quality • Made sure the code still works properly after refactor / major changes • Documents the features and user flows of our code • Trains our mindset to be a better software developer ◦ How user interacts with our code ◦ How edge cases and error might arise from our logic ◦ Improves attention to detail