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

The Magic and Science of Debugging (RubyConf 2021)

The Magic and Science of Debugging (RubyConf 2021)

It was the best of times, it was the worst of times: it was debugging time. Debugging is an inevitable reality of writing software; every developer has had a piece of code behave unexpectedly at some point or another.

But debugging can feel like magic: Where do you start looking for the bug, and how do you know where to find it?

In this talk, we'll learn what makes debugging hard, and the cognitive process behind it. We'll also explore using the scientific method as a debugging process model in order to help us get better at finding the bugs in our own Ruby programs. Let's become better debuggers together!

Vaidehi Joshi

November 12, 2021
Tweet

More Decks by Vaidehi Joshi

Other Decks in Technology

Transcript

  1. @vaidehijoshi
    The Science + Magic
    of Debugging

    View Slide

  2. hello

    View Slide

  3. it’s been a minute

    View Slide

  4. i’m vaidehi!

    View Slide

  5. View Slide

  6. View Slide

  7. joy of learning

    View Slide

  8. debugging

    View Slide

  9. magical

    View Slide

  10. how do I know
    what I know?

    View Slide

  11. what are we doing
    when we debug?

    View Slide

  12. debugging

    View Slide

  13. problem solving

    View Slide

  14. 50%

    View Slide

  15. an inherent part

    View Slide

  16. debugging is hard

    View Slide

  17. — Brian Kernighan
    “Everyone knows that debugging is
    twice as hard as writing a program
    in the first place. So if you’re as
    clever as you can be when you write
    it, how will you ever debug it?”

    View Slide

  18. context

    View Slide

  19. “combinatorial
    complexity”

    View Slide

  20. mental model

    View Slide

  21. approximations

    View Slide

  22. what’s happening
    in our brains?

    View Slide

  23. View Slide

  24. View Slide

  25. the steps the
    programmer took

    View Slide

  26. bloom’s
    taxonomy

    View Slide

  27. View Slide

  28. View Slide

  29. View Slide

  30. View Slide

  31. View Slide

  32. View Slide

  33. View Slide

  34. View Slide

  35. higher
    order thinking

    View Slide

  36. View Slide

  37. View Slide

  38. View Slide

  39. View Slide

  40. bloom’s taxonomy
    is how we learn

    View Slide

  41. we climb bloom’s
    taxonomy while
    debugging

    View Slide

  42. when we’re
    debugging,
    we’re learning

    View Slide

  43. how do we gather
    our knowledge?

    View Slide

  44. View Slide

  45. View Slide

  46. End yes
    no

    View Slide

  47. View Slide

  48. View Slide

  49. View Slide

  50. View Slide

  51. View Slide

  52. View Slide

  53. View Slide

  54. View Slide

  55. View Slide

  56. scientific method

    View Slide

  57. View Slide

  58. View Slide

  59. scientific method
    bloom’s taxonomy
    +

    View Slide

  60. bloom’s
    taxonomy

    View Slide

  61. to be good debuggers,
    we need to be good at
    gathering knowledge

    View Slide

  62. scientific method

    View Slide

  63. to be good debuggers,
    we must always check
    our assumptions

    View Slide

  64. approximations

    View Slide

  65. assumptions

    View Slide

  66. what are we doing
    when we debug?

    View Slide

  67. View Slide

  68. learning

    View Slide

  69. learning
    applying

    View Slide

  70. iterative
    learning
    applying

    View Slide

  71. everyone can
    do it

    View Slide

  72. View Slide

  73. make debugging
    more accessible

    View Slide

  74. debugging is
    not magic!

    View Slide

  75. we can all be
    great debuggers

    View Slide

  76. thank you!🪄💛
    @vaidehijoshi

    View Slide