Clean Code Introduction Meaningful Names Functions Comments Formatting Objects and Data Structures Error Handling Boundaries Unit Tests Classes Systems Emergence Concurrency Successive Refinement Smells and Heuristics