Good code bad code : think like a software engineer Code quality Layers of abstraction Other engineers and code contracts Errors Make code readable Avoid surprises Make code hard to misuse Make code modular Make code reusable and generalizable Unit testing principles Unit testing practices. Software development is a team sport. For an application to succeed your code needs to be robust and easy for others to understand maintain and adapt. Whether youre working on an enterprise team contributing to an open source project or bootstrapping a startup it pays to know the difference between good code and bad code. Good Code Bad Code is a clear practical introduction to writing code thats a snap to read apply and remember Page 4 of cover