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

stop_testing_start_storytelling_selfconf.pdf

481a1f18bdd124c255bcf9e79a281ec3?s=47 tmikeschu
August 15, 2018
23

 stop_testing_start_storytelling_selfconf.pdf

481a1f18bdd124c255bcf9e79a281ec3?s=128

tmikeschu

August 15, 2018
Tweet

Transcript

  1. Stop Testing. Start Storytelling. Mike Schutte self.conference August 18, 2018

    1 — 74 @tmikeschu
  2. TIME TOPIC 1 Who Is This Person? 2 Goals 7

    Testing Paradigms 20 Storytelling 10 Mad Libs 5 Wrap-up 2 — 74 @tmikeschu
  3. About Me 3 — 74 @tmikeschu

  4. ↓ 4 — 74 @tmikeschu

  5. Haught Codeworks (Ruby, Elixir, JavaScript) 5 — 74 @tmikeschu

  6. ! " 6 — 74 @tmikeschu

  7. DU -> IU -> Turing -> Quikly -> HCW 7

    — 74 @tmikeschu
  8. ! " 8 — 74 @tmikeschu

  9. Goals 9 — 74 @tmikeschu

  10. perspective 10 — 74 @tmikeschu

  11. confidence 11 — 74 @tmikeschu

  12. 12 — 74 @tmikeschu

  13. describe("Stop Testing, Start Storytelling", () => { before(() => {

    tmikeschu.prepareForTalk() tmikeschu.getButterfliesInFormation() meetup.garnerInterest() audience.map(showUp) }) after(() => { audience.map(goHome).map(thinkDifferently) }) it("gives people perspective on and confidence in testing", () => { const actual = audience .map(stopTestingStartStorytelling) .flat_map(takeAways).uniq const expected = ["perspective", "confidence"] expect(actual).toEqual(expected) }) }) 13 — 74 @tmikeschu
  14. describe "testing paradigms" do it "covers different testing paradigms" do

    actual = stop_testing_start_storytelling.testing_paradigms expected = ["test last", "test first", "test driven", "behavior driven"] expect(actual).to eq(expected) end end 14 — 74 @tmikeschu
  15. Testing Paradigms 15 — 74 @tmikeschu

  16. bonus word: para-dig-MAT-ic (adj) a framework containing the basic assumptions,

    ways of thinking, and methodolog[ies] [for discovering new ideas] that are commonly accepted by members of a scientific community.1 1 http://www.dictionary.com/browse/paradigm 16 — 74 @tmikeschu
  17. Test last 17 — 74 @tmikeschu

  18. The thing that's supposed to happen is the the thing

    that happens. ! 18 — 74 @tmikeschu
  19. 19 — 74 @tmikeschu

  20. ! " 20 — 74 @tmikeschu

  21. Test first 21 — 74 @tmikeschu

  22. Writing a test to fit an implementation 22 — 74

    @tmikeschu
  23. Test driven && behavior driven 23 — 74 @tmikeschu

  24. Implementing code to fit a test 24 — 74 @tmikeschu

  25. "Program to an interface, not an implementation" - GOF 25

    — 74 @tmikeschu
  26. ! 26 — 74 @tmikeschu

  27. describe "testing paradigms" do it "covers different testing paradigms" do

    actual = stop_testing_start_storytelling.testing_paradigms expected = ["test last", "test first", "test driven", "behavior driven"] expect(actual).to eq(expected) end end 27 — 74 @tmikeschu
  28. Storytelling and Software 28 — 74 @tmikeschu

  29. So!ware is always means to an end 29 — 74

    @tmikeschu
  30. From function to feature, the end is to help users

    30 — 74 @tmikeschu
  31. func TestStoryTellingAndSoftware(t *testing.T) { var ( actual []string expected []string

    ) actual = stopTestingStartStorytelling.StorytellingAndSoftware() expected = []string{"communication", "context", "abstraction", "encapsulation"} if actual != expected { t.Error("Expected talk to cover communication, context, abstraction, and encapsulation, got: ", actual) } } 31 — 74 @tmikeschu
  32. communication context abstraction encapsulation 32 — 74 @tmikeschu

  33. Communication 33 — 74 @tmikeschu

  34. Users communicate with so!ware. ! 34 — 74 @tmikeschu

  35. Let's make good listeners. ! 35 — 74 @tmikeschu

  36. Context 36 — 74 @tmikeschu

  37. cause && effect 37 — 74 @tmikeschu

  38. more context -> 38 — 74 @tmikeschu

  39. more understanding -> 39 — 74 @tmikeschu

  40. more predictive power -> 40 — 74 @tmikeschu

  41. more confident decision-making -> 41 — 74 @tmikeschu

  42. more -> 42 — 74 @tmikeschu

  43. better teaching and advocacy 43 — 74 @tmikeschu

  44. When we tell stories about software, we write it better.

    44 — 74 @tmikeschu
  45. Abstraction 45 — 74 @tmikeschu

  46. Touching a stove Breathing Muscle memory Language 46 — 74

    @tmikeschu
  47. Encapsulation 47 — 74 @tmikeschu

  48. We encapsulate our code, why not our thoughts? 48 —

    74 @tmikeschu
  49. (Too many jobs makes you bad at all of them.)!

    49 — 74 @tmikeschu
  50. Code constrains clarity and imagination. 50 — 74 @tmikeschu

  51. Tests can be your compass home 51 — 74 @tmikeschu

  52. Meta alert! 52 — 74 @tmikeschu

  53. · Programs solve problems · Programming is a problem-solving process

    · The problems we solve solve problems 53 — 74 @tmikeschu
  54. Maybe the principles that make better programs can also result

    in better programming? 54 — 74 @tmikeschu
  55. func TestStoryTellingAndSoftware(t *testing.T) { var ( actual []string expected []string

    ) actual = stopTestingStartStorytelling.StorytellingAndSoftware() expected = []string{"communication", "context", "abstraction", "encapsulation"} if actual != expected { t.Error("Expected talk to cover communication, context, abstraction, and encapsulation, got: ", actual) } } 55 — 74 @tmikeschu
  56. Still learning the domain specific language (DSL)? /* description: developers

    assert: should be mindful of context actual: perspective while implementing expected: developer actual should be the same as expected actual: perspective while testing expected: user actual should be the same as expected */ 56 — 74 @tmikeschu
  57. Duality ! 57 — 74 @tmikeschu

  58. User <----------X----------> Programmer 58 — 74 @tmikeschu

  59. Implementing 59 — 74 @tmikeschu

  60. <------------------X> Programmer 60 — 74 @tmikeschu

  61. Storytelling/testing 61 — 74 @tmikeschu

  62. User <X-------------------> 62 — 74 @tmikeschu

  63. Crowdsource Demo! 63 — 74 @tmikeschu

  64. Mad lib 3 Nouns 1 Verb 1 Datatype 64 —

    74 @tmikeschu
  65. Wrap-up 65 — 74 @tmikeschu

  66. Testing is a paradigmatic process, not a product. 66 —

    74 @tmikeschu
  67. Communication: build good listeners. 67 — 74 @tmikeschu

  68. Context: enable confident decision making. 68 — 74 @tmikeschu

  69. Abstraction: you're good at it, it opens up doors. 69

    — 74 @tmikeschu
  70. Encapsulation: apply the same discipline to your process as you

    do to your code. 70 — 74 @tmikeschu
  71. Storytelling keeps you closer to users. 71 — 74 @tmikeschu

  72. Action Plan Develop a pendulum workflow between storyteller and developer.

    72 — 74 @tmikeschu
  73. describe("Stop Testing, Start Storytelling", () => { before(() => {

    tmikeschu.prepareForTalk() tmikeschu.getButterfliesInFormation() meetup.garnerInterest() audience.map(showUp) }) after(() => { audience.map(goHome).map(thinkDifferently) }) it("gives people perspective on and confidence in testing", () => { const actual = audience .map(stopTestingStartStorytelling) .flat_map(takeAways).uniq const expected = ["perspective", "confidence"] expect(actual).toEqual(expected) }) }) 73 — 74 @tmikeschu
  74. Thank you! 74 — 74 @tmikeschu