$30 off During Our Annual Pro Sale. View Details »

Fixing Bugs in the Real World

Fixing Bugs in the Real World

Given at iOSDevCampDC on July 22, 2016

Samuel E. Giddins

July 22, 2016
Tweet

More Decks by Samuel E. Giddins

Other Decks in Technology

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