The Golden Rule:

🦸 🦸‍♂️ Stop starting and start finishing. 🏁

If you work on more than one feature at a time, you are guaranteed to multiply your bugs and your anxiety.

Making a plan

  1. Make a drawing of your app. Simple "wireframes"
  2. Look at the drawing and name the HTML elements you'll need to realize your vision
  3. Look at the drawing and imagine using the app. What state do you need to track?
  4. For each HTML element ask: Why do I need this? (i.e., "we need div to display the results in")
  5. Once we know why we need each element, think about how to implement the "Why" as a "How" (i.e., resultsEl.textContent = newResults)
  6. Find all the 'events' (user clicks, form submit, on load etc) in your app. Ask one by one, "What happens when" for each of these events. Does any state change? Does any DOM update?
  7. Think about how to validate each of your features according to a Definition of Done. (Hint: console.log usually helps here.)
  8. Consider what features depend on what other features. Use this dependency logic to figure out what order to complete tasks.

Additional considerations:

  • Ask: which of your HTML elements need to be hard coded, and which need to be dynamically generated?
  • Consider your data model.
    • What kinds of objects (i.e., Dogs, Friends, Todos, etc) will you need?
    • What are the key/value pairs?
    • What arrays might you need?
    • What needs to live in a persistence layer?
  • Is there some state we need to initialize?
  • Ask: should any of this work be abstracted into functions? (i.e., is the work complicated? can it be resused?)