Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How to plan a feature (long version)

How to plan a feature (long version)

Radoslav Stankov

June 27, 2023
Tweet

More Decks by Radoslav Stankov

Other Decks in Technology

Transcript

  1. ) Draw state/flow we want to achieve * Draw current

    state/flow + Database structure ➡ What we need todo (plan) $ Drawing
  2. - Tools Excalidraw - great for single player Whimsical -

    great for collaboration
 
 PlantUML - great for documentation Figma - for UI collaboration with designer Miro/FigJam - for group brainstorming ... use whatever works for you .
  3. Feature: Stacking on product page product page (not in stack)

    -> do you use -> yes -> review
 product page (not in stack) -> do you use -> no -> search (alternative) -> review 
 product page (in stack) -> still using? -> yes -> ask for tip -> add tip
 product page (in stack) -> still using? -> no -> search (alternative) -> review / Showcase 1 (end to end test scenarios)
  4. @startuml "Browser" -> "Cloudflare": HTTPS Request "Cloudflare" -> "AWS ELB":

    HTTPS Request "AWS ELB" -> "Frontend (AWS ECS)": HTTPS Request "Frontend (AWS ECS)" -> "Backend (AWS ECS)": GraphQL Request "Backend (AWS ECS)" -> "Redis (Rediscloud)": Cache Query "Backend (AWS ECS)" -> "Database (AWS RDS Aurora)": SQL Query "Backend (AWS ECS)" --> "Frontend (AWS ECS)": JSON Response "Frontend (AWS ECS)" --> "Browser": HTML Response @enduml PlantUML https://www.plantuml.com/
  5. ) Explain the problem to someone (vocal or in writing)

    * Why something won't work 0 While doing this ideas will come 0 Explain the problem
  6. ) Create empty file on Desktop * Write quick &

    dirty code in empty file + Imagine a perfect world for this code 1 Delete file # If solution is 2 ➡ think of something else ➡ If solution is ✅ ➡ use ideas in project ✍ Code Sketch
  7. “A task aimed at answering a question or gathering information,

    rather than at producing shippable product. Sometimes we can't estimate until the development team does some actual work to resolve a technical question or a design problem.” - WikipediA Spike (software development)
  8. “A task aimed at answering a question or gathering information,

    rather than at producing shippable product. Sometimes we can't estimate until the development team does some actual work to resolve a technical question or a design problem.” - WikipediA Spike (software development)
  9. 5 Define scope and time-box ) Write quick & dirty

    code in a Pull Request * Review the solution + Close Pull Request without merging # If solution is 2 ➡ Discuss new solution ➡ If solution is ✅ ➡ Open new Pull Request % Spike
  10. “The goal of a "spike" is to help you draw

    a map of how to implement a solution with confidence, not to implement a solution.” - Rado
  11. “The best feature of a "spike" is that it is

    a safe way to say this approach doesn't work.” - Rado
  12. 6 ...but “We can't do a "spike" for every feature.

    It will waste too much time.” “You don't need a "spike" to show that your solution isn't good.” “Why do you need to throw away the code?” “Isn't this a Prototype, MVP, PoC?”
  13. 6 ...but “We can't do a "spike" for every feature.

    It will waste too much time.” “You don't need a "spike" to show that your solution isn't good.” “Why do you need to throw away the code?” “Isn't this a Prototype, MVP, PoC?” Don't do it for every feature. Do it when you are not confident how to solve a problem. 7
  14. 6 ...but “We can't do a "spike" for every feature.

    It will waste too much time.” “You don't need a "spike" to show that your solution isn't good.” “Why do you need to throw away the code?” “Isn't this a Prototype, MVP, PoC?” Because of "Tunnel vision" and "sunk cost fallacy" 7
  15. 6 ...but “We can't do a "spike" for every feature.

    It will waste too much time.” “You don't need a "spike" to show that your solution isn't good.” “Why do you need to throw away the code?” “Isn't this a Prototype, MVP, PoC?” Because it is usually a mess. I don't delete it, I just copy parts I need into a clean new PR 7
  16. 6 ...but “We can't do a "spike" for every feature.

    It will waste too much time.” “You don't need a "spike" to show that your solution isn't good.” “Why do you need to throw away the code?” “Isn't this a Prototype, MVP, PoC?” Kinda - yes. The difference is in how big it is, who is meant for team or external, and do we ship it in production. .
  17. 6 ...but “We can't do a "spike" for every feature.

    It will waste too much time.” “You don't need a "spike" to show that your solution isn't good.” “Why do you need to throw away the code?” “Isn't this a Prototype, MVP, PoC?”