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

Fixing Bugs in the Real World

Fixing Bugs in the Real World

Given at iOSDevCampDC on July 22, 2016

4d6be90af74894fd132fb06dacec04d7?s=128

Samuel E. Giddins

July 22, 2016
Tweet

Transcript

  1. FIXING BUGS IN THE REAL WORLD SAMUEL GIDDINS

  2. SAMUEL GIDDINS Now: > CocoaPods > Bundler & RubyGems Then:

    > Tumblr > Realm > RestKit
  3. None
  4. None
  5. > Bugs > Real World > Oh My!

  6. WHAT IS THE REAL WORLD?

  7. REAL ! > Our job is ! > We face

    constraints > Time > Money > Developer " > Every other resource
  8. Aside: this is targeted at developers, not their CTOs or

    VC backers
  9. FIXING BUGS

  10. WHAT IS A !?

  11. Unhelpful Answer: it depends

  12. Unhelpful Answer: everything

  13. WHAT IS A !? Popular answers: > "This is broken!"

    > "I can't use this!" > "I want this thing to be easier!" > "I want to do this but I can't!"
  14. WHAT IS A !? SOMETHING THAT GETS IN THE WAY

    OF YOUR THING DOING ITS JOB
  15. I'm writing this to learn something !: I'm stuck on

    something that's irrelevant.
  16. I'm writing this under pressure for a conference talk !:

    It doesn't need to work, but I need to know it well enough to drone on about it for 20 minutes.
  17. iOS 8 is coming out !: The share extension just

    needs to be able to post things, I don't care about the color of the status bar.
  18. I'm an indy developer and my users are clamoring for

    this feature !: I need to implement the feature to keep my customer sat high.
  19. I run an open source project that doesn't do X

    !: People want my project to do X and they might not use it until it does.
  20. I run an open source project that doesn't do X

    !: People want my project to do X and they won't stop filing issues until it does.
  21. Most ! don't have a single-button fix

  22. SAMUEL, AREN'T THOSE ALL FEATURES?

  23. It's a !, not a ". - Old dig directed

    at Microsoft
  24. WHAT IS A !? SOMETHING THAT GETS IN THE WAY

    OF YOUR THING DOING ITS JOB
  25. SO, THAT'S A ! " HOW DO I FIX THEM?

  26. HOW DO I ! "? YOU WRITE MORE !

  27. HOW DO I ! "? > 99 ! in Jira,

    99 ! > Take 1 down, " it around > 117 ! in Jira
  28. More software == More bugs Always.

  29. More users == More bugs The only bug-free software has

    no users
  30. HOW DO I ! "? > Find what the problem

    really is > Determine 3-5 ways to fix it > Estimate the benfit from each approach > Pick the one with the highest ROI
  31. BUT SAMUEL, THAT SOUNDS EASY!

  32. Easy to list != easy to do.

  33. Sometimes, bug reports make me feel like my users are

    sending me this. In the heat of the moment, it feels like a personal attack.
  34. But really, they care enough to try and help me

    fix it.
  35. So take a deep breath. And approach the problem rationally

    & systematically.
  36. DETERMINE THE PROBLEM > Usually not what the text of

    the issue is > Ask lots of questions > Put yourself in your user's shoes
  37. COME UP WITH FIXES > Hacks ..< rewriting the entire

    thing > "Here's a workaround..." > "Behaves as intended" > "Behaves as implemented" / ¯\_(ϑ)_/¯
  38. ESTIMATE BENEFITS > What else can you knock out with

    this fix? > How much tech debt does this introduce? > Does it get in the way of other work you're doing? > How many new bugs will this introduce? > Are we getting dangerously close to feature territory? > Slash do we want to?
  39. KEEP AN OPEN MIND CONSTANTLY RE-EVALUATE

  40. KEEP AN OPEN MIND > Brain-dump as you go along

    > Am I making progress? > Is it time to just call it a day and move on? > Now that I understand what's going on, is there someone to hand off to? > Have I fixed it already without realizing?
  41. BUILD KNOWING YOU WILL ⌨ " > Always keep failure

    modes in mind > Make sure you get high quality !" > Don't take ! personally > Write software that users can work around*
  42. BUT REMEMBER...

  43. WHAT IS A !? SOMETHING THAT GETS IN THE WAY

    OF YOUR THING DOING ITS JOB
  44. That means your thing already does something. It's probably doing

    a lot of things right. Never forget that.
  45. WHAT IS A !? IT'S AN OPPORTUNITY

  46. YOUR APP WILL HAVE MANY, MANY !

  47. Since so many things can be seen as ! by

    someone. One person's ! is another's feature.
  48. ! ==

  49. A ! IS NOT AN OBJECTIVE TRUTH, BUT RATHER A

    PERSONAL STATEMENT.
  50. SOMETIMES, THAT MEANS ITS OK TO FIX A FEW

  51. AND LEAVE SOME MORE FOR TOMORROW

  52. SAMUEL GIDDINS @SEGIDDINS