About Me
Detroit
Quikly (Rails, React, Node.js, Go)
environmental science -> sociology -> software development
University of Denver -> Indiana University -> Turing -> Quikly
runner, musician, reader, writer
5/30
@tmikeschu
Testing Paradigms
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
9/30
@tmikeschu
Slide 11
Slide 11 text
Test last
10/30
@tmikeschu
Slide 12
Slide 12 text
Test last
• The thing that's supposed to happen is the the thing that happens.
10/30
@tmikeschu
Slide 13
Slide 13 text
Test last
• The thing that's supposed to happen is the the thing that happens.
• ~> It's blue because it's blue
!
.
10/30
@tmikeschu
Slide 14
Slide 14 text
Test last
11/30
@tmikeschu
Slide 15
Slide 15 text
12/30
@tmikeschu
Slide 16
Slide 16 text
Test first
13/30
@tmikeschu
Slide 17
Slide 17 text
Test first
• Writing a test to fit an implementation
13/30
@tmikeschu
Slide 18
Slide 18 text
Test driven
Behavior driven
14/30
@tmikeschu
Slide 19
Slide 19 text
Test driven
Behavior driven
• Implementing code to fit a test
14/30
@tmikeschu
Slide 20
Slide 20 text
Test driven
Behavior driven
• Implementing code to fit a test
• "Program to an interface, not an implementation"
- GOF
14/30
@tmikeschu
Slide 21
Slide 21 text
Storytelling and Software
Software is always means to an end
15/30
@tmikeschu
Slide 22
Slide 22 text
Storytelling and Software
Software is always means to an end
• Function to Feature
15/30
@tmikeschu
Slide 23
Slide 23 text
Storytelling and Software
Software is always means to an end
• Function to Feature
• (HINT: the end is to help users.)
15/30
@tmikeschu
Slide 24
Slide 24 text
Storytelling and Software
(minutes)
16/30
@tmikeschu
Slide 25
Slide 25 text
Storytelling and Software
(minutes)
• communication (1)
16/30
@tmikeschu
Slide 26
Slide 26 text
Storytelling and Software
(minutes)
• communication (1)
• context (3)
16/30
@tmikeschu
Slide 27
Slide 27 text
Storytelling and Software
(minutes)
• communication (1)
• context (3)
• abstraction (1)
16/30
@tmikeschu
Slide 28
Slide 28 text
Storytelling and Software
(minutes)
• communication (1)
• context (3)
• abstraction (1)
• encapsulation (3)
16/30
@tmikeschu
Slide 29
Slide 29 text
Communication
Users communicate with software.
Let's make good listeners.
17/30
@tmikeschu
Slide 30
Slide 30 text
Context
18/30
@tmikeschu
Slide 31
Slide 31 text
Context
• :cause && :effect
18/30
@tmikeschu
Slide 32
Slide 32 text
Context
• :cause && :effect
• More context = more understanding
18/30
@tmikeschu
Slide 33
Slide 33 text
Context
• :cause && :effect
• More context = more understanding
• More understanding = more predictive power
18/30
@tmikeschu
Slide 34
Slide 34 text
Context
• :cause && :effect
• More context = more understanding
• More understanding = more predictive power
• More predictive power = more confident decision-making
18/30
@tmikeschu
Slide 35
Slide 35 text
Context
• :cause && :effect
• More context = more understanding
• More understanding = more predictive power
• More predictive power = more confident decision-making
• More confident decision-making = more happiness!
18/30
@tmikeschu
Slide 36
Slide 36 text
Context
When we tell stories about our
software, we write better software.
19/30
@tmikeschu
Slide 37
Slide 37 text
Abstraction
20/30
@tmikeschu
Slide 38
Slide 38 text
Abstraction
• Touching a stove
20/30
@tmikeschu
Slide 39
Slide 39 text
Abstraction
• Touching a stove
• Breathing
20/30
@tmikeschu
Abstraction
• Touching a stove
• Breathing
• Muscle memory
• Literally every language
20/30
@tmikeschu
Slide 42
Slide 42 text
Encapsulation
We encapsulate our code, why not our
thoughts?
21/30
@tmikeschu
Slide 43
Slide 43 text
Encapsulation
We encapsulate our code, why not our
thoughts?
• Too many jobs makes you bad at all of them.
21/30
@tmikeschu
Slide 44
Slide 44 text
Encapsulation
Code constrains clarity and
imagination.
22/30
@tmikeschu
Slide 45
Slide 45 text
Encapsulation
Code constrains clarity and
imagination.
• Tests can be your compass home
22/30
@tmikeschu
Slide 46
Slide 46 text
Encapsulation
Meta alert!
23/30
@tmikeschu
Slide 47
Slide 47 text
Encapsulation
Meta alert!
• Programs solve problems
23/30
@tmikeschu
Slide 48
Slide 48 text
Encapsulation
Meta alert!
• Programs solve problems
• Programming is a problem-solving process
23/30
@tmikeschu
Slide 49
Slide 49 text
Encapsulation
Meta alert!
• Programs solve problems
• Programming is a problem-solving process
• Maybe the principles that make better programs can also result in
better programming?
23/30
@tmikeschu
Slide 50
Slide 50 text
User <---------------------> Programmer
24/30
@tmikeschu
Slide 51
Slide 51 text
Implementing
User <-------------------X> Programmer
25/30
@tmikeschu
Slide 52
Slide 52 text
Storytelling/testing
User Programmer
26/30
@tmikeschu
Slide 53
Slide 53 text
Crowdsource Demo!
27/30
@tmikeschu
Slide 54
Slide 54 text
Crowdsource Demo!
• What's something you have to implement in the near future? Could
be anything from function to feature.
27/30
@tmikeschu
Slide 55
Slide 55 text
Wrap-up
28/30
@tmikeschu
Slide 56
Slide 56 text
Wrap-up
• Testing is a paradigmatic process, not a product.
28/30
@tmikeschu
Slide 57
Slide 57 text
Wrap-up
• Testing is a paradigmatic process, not a product.
• Communication: build good listeners
28/30
@tmikeschu
Slide 58
Slide 58 text
Wrap-up
• Testing is a paradigmatic process, not a product.
• Communication: build good listeners
• Context: enable confident decision making
28/30
@tmikeschu
Slide 59
Slide 59 text
Wrap-up
• Testing is a paradigmatic process, not a product.
• Communication: build good listeners
• Context: enable confident decision making
• Abstraction: you're good at it, it let's you do cool stuff.
28/30
@tmikeschu
Slide 60
Slide 60 text
Wrap-up
• Testing is a paradigmatic process, not a product.
• Communication: build good listeners
• Context: enable confident decision making
• Abstraction: you're good at it, it let's you do cool stuff.
• Encapsulation: apply the same discipline to your process as you do
to your code.
28/30
@tmikeschu
Slide 61
Slide 61 text
Wrap-up
• Testing is a paradigmatic process, not a product.
• Communication: build good listeners
• Context: enable confident decision making
• Abstraction: you're good at it, it let's you do cool stuff.
• Encapsulation: apply the same discipline to your process as you do
to your code.
• Storytelling keeps you closer to users
28/30
@tmikeschu
Slide 62
Slide 62 text
Action Plan
29/30
@tmikeschu
Slide 63
Slide 63 text
Action Plan
• Develop a pendulum workflow between storyteller and developer.
29/30
@tmikeschu