1. Understand the problem
  2. Break the problem down into a few pieces
  3. Break those pieces into codeable chunks
  4. Code one chunk at a time a. Think about it b. Write it c. Test it (on it’s own) d. Fix any problems