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

How to plan a feature (short version)

How to plan a feature (short version)

Radoslav Stankov

July 06, 2023
Tweet

More Decks by Radoslav Stankov

Other Decks in Technology

Transcript

  1. Radoslav Stankov
    How to Plan a Feature

    View Slide

  2. View Slide

  3. Radoslav Stankov
    @rstankov

    View Slide

  4. View Slide

  5. View Slide

  6. View Slide

  7. View Slide

  8. View Slide

  9. Complicated feature !

    View Slide

  10. Where to start?

    View Slide

  11. Waterfall methodology

    View Slide

  12. " Waterfall Methodology

    View Slide

  13. ... this what we get

    View Slide

  14. View Slide

  15. Agile methodology

    View Slide

  16. # Agile Methodology

    View Slide

  17. View Slide

  18. No need for upfront
    design, just...

    View Slide

  19. ... code like a cowboy

    View Slide

  20. View Slide

  21. ... this what we get

    View Slide

  22. Lean

    View Slide

  23. View Slide

  24. Shape Up

    View Slide

  25. View Slide

  26. We are in build phase ... now what?

    View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. Tools when you need them...

    View Slide

  32. $ Shape Up Hill Chart

    View Slide

  33. $ Shape Up Hill Chart

    View Slide

  34. View Slide

  35. Plan for today

    View Slide

  36. % Drawing
    & Spike
    ' Agenda

    View Slide

  37. % Drawing

    View Slide

  38. View Slide

  39. ( Draw state/flow we want to achieve
    ) Draw current state/flow
    * Database structure
    ➡ What we need todo (plan)
    % Drawing

    View Slide

  40. , 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 -

    View Slide

  41. https://blog.rstankov.com/how-i-plan-and-execute-features/

    View Slide

  42. View Slide

  43. done
    todo
    won't do
    in progress
    https://blog.rstankov.com/how-i-plan-and-execute-features/

    View Slide

  44. View Slide

  45. View Slide

  46. . Showcase 1

    View Slide

  47. 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)

    View Slide

  48. . Showcase 2

    View Slide

  49. . Showcase 2

    View Slide

  50. . Showcase 3
    (brainstorm)

    View Slide

  51. . Showcase 4
    (advice)

    View Slide

  52. . Showcase 5
    (advice)

    View Slide

  53. PlantUML
    https://www.plantuml.com/

    View Slide

  54. @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/

    View Slide

  55. View Slide

  56. View Slide

  57. ( Explain the problem to someone (vocal or in writing)
    ) Why something won't work
    / While doing this ideas will come
    / Explain the problem

    View Slide

  58. ( Create empty file on Desktop
    ) Write quick & dirty code in empty file
    * Imagine a perfect world for this code
    0 Delete file
    # If solution is 1 ➡ think of something else
    ➡ If solution is ✅ ➡ use ideas in project
    ✍ Code Sketch

    View Slide

  59. View Slide

  60. 4 ...but
    “Why don't you use paper? ... I like using paper”
    “I can't draw, I don't have the skills.”

    View Slide

  61. 4 ...but
    “Why don't you use paper? ... I like using paper”
    “I can't draw, I don't have the skills.”
    5 Paper is too small, I want infinite canvas
    6 Paper is permanent, I want to re-arrange, update
    7 I want to share with multiple people and collaborate

    View Slide

  62. 4 ...but
    “Why don't you use paper? ... I like using paper”
    “I can't draw, I don't have the skills.”
    If paper works for you ... amazing, keep using it 8

    View Slide

  63. 4 ...but
    “Why don't you use paper? ... I like using paper”
    “I can't draw, I don't have the skills.”
    I couldn't too, it took me 6~8 months to get good with
    Excalidraw ... I'm still improving. 9

    View Slide

  64. 4 ...but
    “Why don't you use paper? ... I like using paper”
    “I can't draw, I don't have the skills.”

    View Slide

  65. & Spike

    View Slide

  66. “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)

    View Slide

  67. “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)

    View Slide

  68. : Define scope and time-box
    ( Write quick & dirty code in a Pull Request
    ) Review the solution
    * Close Pull Request without merging
    # If solution is 1 ➡ Discuss new solution
    ➡ If solution is ✅ ➡ Open new Pull Request
    & Spike

    View Slide

  69. View Slide

  70. “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

    View Slide

  71. “The best feature of a "spike" is that it is a safe way
    to say this approach doesn't work.”
    - Rado

    View Slide

  72. View Slide

  73. 4 ...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?”

    View Slide

  74. 4 ...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. ;

    View Slide

  75. 4 ...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" ;

    View Slide

  76. 4 ...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 ;

    View Slide

  77. 4 ...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. -

    View Slide

  78. 4 ...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?”

    View Slide

  79. Recap

    View Slide

  80. View Slide

  81. ... of course all depends on
    specific feature -

    View Slide

  82. View Slide

  83. Thanks 8

    View Slide

  84. https://speakerdeck.com/rstankov

    View Slide