SlideShare une entreprise Scribd logo
1  sur  36
Teaching TDD to Different
Learning Styles
By Tiffany Larson
Sr Software Developer
Health Care Service Corporation
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Test Driven Development
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
How does this happen?
WWW.SLIDEFOREST.COM
4
Identifying
Learning Styles
Understanding
Habits
Achieving
Milestones
31 2
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Visual
Auditory
Kinesthetic/Tactile
5
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Visual Learners: How to spot them
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Visual Learning Strategies
• Have them take notes
• White board explanations
• Post-it notes
• Make lists
7
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Auditory Learners: How to spot
them
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Auditory Learning Strategies
• Turn off visual stimuli
• Talk through implementation first
• Word association / patterns
• Have them repeat explanations
9
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Kinesthetic Learners: How to spot
them
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Kinesthetic Learning Strategies
• Same motions over and over
• Walking through in debug mode
• Taking frequent breaks
• Fidget toys / Standing up
11
WWW.SLIDEFOREST.COM
12
Identifying
Learning Styles
Understanding
Habits
Achieving
Milestones
31 2
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Cue
Reward
Routine
WWW.SLIDEFOREST.COM
14
Identifying
Learning Styles
Understanding
Habits
Achieving
Milestones
31 2
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Can we find smaller wins along the
way?
WWW.SLIDEFOREST.COM
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Dog API for dogs without names
17
@Test
public void createDog_nameFromDogClient_savesDog {
//test setup
…
dogService.createDog(dogRequest);
verify(mockDogClient).getDogName();
verify(mockDogRepository).save(dogEntity);
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Test Setup
Verify
Stubbing
18
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Test Setup
Verify
Stubbing
19
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Test Setup
20
@RunWith(MockitoJUnitRunner.class)
public class DogServiceTest {
@InjectMocks
private DogService dogService;
@Mock
private DogClient mockDogClient;
…
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Test Setup
21
@RunWith(MockitoJUnitRunner.class)
public class DogServiceTest {
@InjectMocks
private DogService dogService;
@Mock
private DogClient mockDogClient;
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Test Setup
Verify
Stubbing
22
When do you use it?
How do you use it?
What does the error mean?
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Verify
23
@Test
public void createDog_callsDogClient {
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Verify
24
@Test
public void createDog_callsDogClient {
dogService.createDog(dogRequest); (1)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Verify
25
@Test
public void createDog_callsDogClient {
DogRequest dogRequest = DogRequest.builder() (2)
.isGrumpy(true)
.fear(“bees”)
.build();
dogService.createDog(dogRequest); (1)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Verify
26
@Test
public void createDog_callsDogClient {
DogRequest dogRequest = DogRequest.builder() (2)
.isGrumpy(true)
.fear(“bees”)
.build();
dogService.createDog(dogRequest); (1)
verify(mockDogClient).getDogName(); (3)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Test Setup
Verify
Stubbing
27
When do you use it?
How do you use it?
What does the error mean?
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Stubbing
28
@Test
public void createDog_nameFromDogClient_savesDog {
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Stubbing
29
@Test
public void createDog_nameFromDogClient_savesDog {
dogService.createDog(dogRequest); (1)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Stubbing
30
@Test
public void createDog_nameFromDogClient_savesDog {
DogRequest dogRequest = DogRequest.builder().build() (2)
dogService.createDog(dogRequest); (1)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Stubbing
31
@Test
public void createDog_nameFromDogClient_savesDog {
DogRequest dogRequest = DogRequest.builder().build() (2)
dogService.createDog(dogRequest); (1)
verify(mockDogRepository).save(dogEntity); (3)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Stubbing
32
@Test
public void createDog_nameFromDogClient_savesDog {
DogRequest dogRequest = DogRequest.builder().build();(2)
DogEntity dogEntity = DogEntity.builder().build(); (4)
dogService.createDog(dogRequest); (1)
verify(mockDogRepository).save(dogEntity); (3)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Stubbing
33
@Test
public void createDog_nameFromDogClient_savesDog {
DogRequest dogRequest = DogRequest.builder().build();(2)
DogEntity dogEntity = DogEntity.builder().build(); (4)
when(mockDogClient.getDogName()) (5)
.thenReturn(”Ms Riley”);
dogService.createDog(dogRequest); (1)
verify(mockDogRepository).save(dogEntity); (3)
}
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons
Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
People Driven Development
> Stay Connected.
Tiffany Larson
linkedin.com/in/tslarson
9/24: Cloud-Native Data Architecture: Break Away From Data Monoliths for Cloud-Native Applications
9/25: Building Data Environments for Production Microservices with Geode
#springon
e
@s1
p

Contenu connexe

Similaire à Teaching TDD to Different Learning Styles

Similaire à Teaching TDD to Different Learning Styles (20)

Spring Cloud Gateway - Stéphane Maldini
Spring Cloud Gateway - Stéphane MaldiniSpring Cloud Gateway - Stéphane Maldini
Spring Cloud Gateway - Stéphane Maldini
 
Zuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne PlatformZuul @ Netflix SpringOne Platform
Zuul @ Netflix SpringOne Platform
 
What's new in Reactor Californium
What's new in Reactor CaliforniumWhat's new in Reactor Californium
What's new in Reactor Californium
 
Data Driven Decision Making for Product Development
Data Driven Decision Making for Product DevelopmentData Driven Decision Making for Product Development
Data Driven Decision Making for Product Development
 
Test Driven Development with Spring Boot - Testing the Harder Stuff
Test Driven Development with Spring Boot - Testing the Harder StuffTest Driven Development with Spring Boot - Testing the Harder Stuff
Test Driven Development with Spring Boot - Testing the Harder Stuff
 
Cloud Native Key Management
Cloud Native Key ManagementCloud Native Key Management
Cloud Native Key Management
 
From Zero to Cloud using Spring with Cloud-Native Data Technologies - John Blum
From Zero to Cloud using Spring with Cloud-Native Data Technologies - John BlumFrom Zero to Cloud using Spring with Cloud-Native Data Technologies - John Blum
From Zero to Cloud using Spring with Cloud-Native Data Technologies - John Blum
 
Success at Scale: It’s Hard, But Achievable
Success at Scale: It’s Hard, But AchievableSuccess at Scale: It’s Hard, But Achievable
Success at Scale: It’s Hard, But Achievable
 
Spring Cloud Gateway - Ryan Baxter
Spring Cloud Gateway - Ryan BaxterSpring Cloud Gateway - Ryan Baxter
Spring Cloud Gateway - Ryan Baxter
 
Heavyweights: Tipping the Scales with Very Large Foundations
Heavyweights: Tipping the Scales with Very Large FoundationsHeavyweights: Tipping the Scales with Very Large Foundations
Heavyweights: Tipping the Scales with Very Large Foundations
 
Containers Were Never Your End State
Containers Were Never Your End StateContainers Were Never Your End State
Containers Were Never Your End State
 
Application Archaeology: Accelerating App Modernization at DICK’S Sporting Goods
Application Archaeology: Accelerating App Modernization at DICK’S Sporting GoodsApplication Archaeology: Accelerating App Modernization at DICK’S Sporting Goods
Application Archaeology: Accelerating App Modernization at DICK’S Sporting Goods
 
Spring Cloud Gateway - Ryan Baxter
Spring Cloud Gateway - Ryan BaxterSpring Cloud Gateway - Ryan Baxter
Spring Cloud Gateway - Ryan Baxter
 
Becoming an Advanced Groovy Developer Spring One 2gx 2015
Becoming an Advanced Groovy Developer Spring One 2gx 2015Becoming an Advanced Groovy Developer Spring One 2gx 2015
Becoming an Advanced Groovy Developer Spring One 2gx 2015
 
The Red Button: Adventures in Security Leadership
The Red Button: Adventures in Security LeadershipThe Red Button: Adventures in Security Leadership
The Red Button: Adventures in Security Leadership
 
riffing on Knative - Scott Andrews
riffing on Knative - Scott Andrewsriffing on Knative - Scott Andrews
riffing on Knative - Scott Andrews
 
Living on the Edge With Spring Cloud Gateway - Cora Iberkleid
Living on the Edge With Spring Cloud Gateway - Cora IberkleidLiving on the Edge With Spring Cloud Gateway - Cora Iberkleid
Living on the Edge With Spring Cloud Gateway - Cora Iberkleid
 
Living on the Edge With Spring Cloud Gateway - Cora Iberkleid
Living on the Edge With Spring Cloud Gateway - Cora IberkleidLiving on the Edge With Spring Cloud Gateway - Cora Iberkleid
Living on the Edge With Spring Cloud Gateway - Cora Iberkleid
 
How to Manage Microservices and APIs with Apigee and Istio
How to Manage Microservices and APIs with Apigee and IstioHow to Manage Microservices and APIs with Apigee and Istio
How to Manage Microservices and APIs with Apigee and Istio
 
So You're Up to Your Eyes in Foundations
So You're Up to Your Eyes in FoundationsSo You're Up to Your Eyes in Foundations
So You're Up to Your Eyes in Foundations
 

Plus de VMware Tanzu

Plus de VMware Tanzu (20)

What AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About ItWhat AI Means For Your Product Strategy And What To Do About It
What AI Means For Your Product Strategy And What To Do About It
 
Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023Make the Right Thing the Obvious Thing at Cardinal Health 2023
Make the Right Thing the Obvious Thing at Cardinal Health 2023
 
Enhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at ScaleEnhancing DevEx and Simplifying Operations at Scale
Enhancing DevEx and Simplifying Operations at Scale
 
Spring Update | July 2023
Spring Update | July 2023Spring Update | July 2023
Spring Update | July 2023
 
Platforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a ProductPlatforms, Platform Engineering, & Platform as a Product
Platforms, Platform Engineering, & Platform as a Product
 
Building Cloud Ready Apps
Building Cloud Ready AppsBuilding Cloud Ready Apps
Building Cloud Ready Apps
 
Spring Boot 3 And Beyond
Spring Boot 3 And BeyondSpring Boot 3 And Beyond
Spring Boot 3 And Beyond
 
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdfSpring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
Spring Cloud Gateway - SpringOne Tour 2023 Charles Schwab.pdf
 
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
Simplify and Scale Enterprise Apps in the Cloud | Boston 2023
 
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
Simplify and Scale Enterprise Apps in the Cloud | Seattle 2023
 
tanzu_developer_connect.pptx
tanzu_developer_connect.pptxtanzu_developer_connect.pptx
tanzu_developer_connect.pptx
 
Tanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - FrenchTanzu Virtual Developer Connect Workshop - French
Tanzu Virtual Developer Connect Workshop - French
 
Tanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - EnglishTanzu Developer Connect Workshop - English
Tanzu Developer Connect Workshop - English
 
Virtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - EnglishVirtual Developer Connect Workshop - English
Virtual Developer Connect Workshop - English
 
Tanzu Developer Connect - French
Tanzu Developer Connect - FrenchTanzu Developer Connect - French
Tanzu Developer Connect - French
 
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
Simplify and Scale Enterprise Apps in the Cloud | Dallas 2023
 
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring BootSpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
SpringOne Tour: Deliver 15-Factor Applications on Kubernetes with Spring Boot
 
SpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software EngineerSpringOne Tour: The Influential Software Engineer
SpringOne Tour: The Influential Software Engineer
 
SpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs PracticeSpringOne Tour: Domain-Driven Design: Theory vs Practice
SpringOne Tour: Domain-Driven Design: Theory vs Practice
 
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense SolutionsSpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
SpringOne Tour: Spring Recipes: A Collection of Common-Sense Solutions
 

Dernier

introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
VishalKumarJha10
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
shinachiaurasa2
 

Dernier (20)

VTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learnVTU technical seminar 8Th Sem on Scikit-learn
VTU technical seminar 8Th Sem on Scikit-learn
 
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa%in tembisa+277-882-255-28 abortion pills for sale in tembisa
%in tembisa+277-882-255-28 abortion pills for sale in tembisa
 
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park %in kempton park+277-882-255-28 abortion pills for sale in kempton park
%in kempton park+277-882-255-28 abortion pills for sale in kempton park
 
AI & Machine Learning Presentation Template
AI & Machine Learning Presentation TemplateAI & Machine Learning Presentation Template
AI & Machine Learning Presentation Template
 
10 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 202410 Trends Likely to Shape Enterprise Technology in 2024
10 Trends Likely to Shape Enterprise Technology in 2024
 
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
%in Stilfontein+277-882-255-28 abortion pills for sale in Stilfontein
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
Crypto Cloud Review - How To Earn Up To $500 Per DAY Of Bitcoin 100% On AutoP...
 
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdfintroduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
introduction-to-automotive Andoid os-csimmonds-ndctechtown-2021.pdf
 
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdfAzure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
Azure_Native_Qumulo_High_Performance_Compute_Benchmarks.pdf
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verifiedSector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
Sector 18, Noida Call girls :8448380779 Model Escorts | 100% verified
 
The title is not connected to what is inside
The title is not connected to what is insideThe title is not connected to what is inside
The title is not connected to what is inside
 
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) SolutionIntroducing Microsoft’s new Enterprise Work Management (EWM) Solution
Introducing Microsoft’s new Enterprise Work Management (EWM) Solution
 
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
The Guide to Integrating Generative AI into Unified Continuous Testing Platfo...
 
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdfLearn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
Learn the Fundamentals of XCUITest Framework_ A Beginner's Guide.pdf
 
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
%in Bahrain+277-882-255-28 abortion pills for sale in Bahrain
 
%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand%in Midrand+277-882-255-28 abortion pills for sale in midrand
%in Midrand+277-882-255-28 abortion pills for sale in midrand
 

Teaching TDD to Different Learning Styles

  • 1. Teaching TDD to Different Learning Styles By Tiffany Larson Sr Software Developer Health Care Service Corporation
  • 2. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Test Driven Development
  • 3. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ How does this happen?
  • 5. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Visual Auditory Kinesthetic/Tactile 5
  • 6. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Visual Learners: How to spot them
  • 7. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Visual Learning Strategies • Have them take notes • White board explanations • Post-it notes • Make lists 7
  • 8. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Auditory Learners: How to spot them
  • 9. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Auditory Learning Strategies • Turn off visual stimuli • Talk through implementation first • Word association / patterns • Have them repeat explanations 9
  • 10. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Kinesthetic Learners: How to spot them
  • 11. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Kinesthetic Learning Strategies • Same motions over and over • Walking through in debug mode • Taking frequent breaks • Fidget toys / Standing up 11
  • 13. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Cue Reward Routine
  • 15. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Can we find smaller wins along the way?
  • 17. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Dog API for dogs without names 17 @Test public void createDog_nameFromDogClient_savesDog { //test setup … dogService.createDog(dogRequest); verify(mockDogClient).getDogName(); verify(mockDogRepository).save(dogEntity); }
  • 18. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Test Setup Verify Stubbing 18
  • 19. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Test Setup Verify Stubbing 19
  • 20. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Test Setup 20 @RunWith(MockitoJUnitRunner.class) public class DogServiceTest { @InjectMocks private DogService dogService; @Mock private DogClient mockDogClient; … }
  • 21. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Test Setup 21 @RunWith(MockitoJUnitRunner.class) public class DogServiceTest { @InjectMocks private DogService dogService; @Mock private DogClient mockDogClient; }
  • 22. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Test Setup Verify Stubbing 22 When do you use it? How do you use it? What does the error mean?
  • 23. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Verify 23 @Test public void createDog_callsDogClient { }
  • 24. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Verify 24 @Test public void createDog_callsDogClient { dogService.createDog(dogRequest); (1) }
  • 25. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Verify 25 @Test public void createDog_callsDogClient { DogRequest dogRequest = DogRequest.builder() (2) .isGrumpy(true) .fear(“bees”) .build(); dogService.createDog(dogRequest); (1) }
  • 26. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Verify 26 @Test public void createDog_callsDogClient { DogRequest dogRequest = DogRequest.builder() (2) .isGrumpy(true) .fear(“bees”) .build(); dogService.createDog(dogRequest); (1) verify(mockDogClient).getDogName(); (3) }
  • 27. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Test Setup Verify Stubbing 27 When do you use it? How do you use it? What does the error mean?
  • 28. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Stubbing 28 @Test public void createDog_nameFromDogClient_savesDog { }
  • 29. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Stubbing 29 @Test public void createDog_nameFromDogClient_savesDog { dogService.createDog(dogRequest); (1) }
  • 30. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Stubbing 30 @Test public void createDog_nameFromDogClient_savesDog { DogRequest dogRequest = DogRequest.builder().build() (2) dogService.createDog(dogRequest); (1) }
  • 31. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Stubbing 31 @Test public void createDog_nameFromDogClient_savesDog { DogRequest dogRequest = DogRequest.builder().build() (2) dogService.createDog(dogRequest); (1) verify(mockDogRepository).save(dogEntity); (3) }
  • 32. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Stubbing 32 @Test public void createDog_nameFromDogClient_savesDog { DogRequest dogRequest = DogRequest.builder().build();(2) DogEntity dogEntity = DogEntity.builder().build(); (4) dogService.createDog(dogRequest); (1) verify(mockDogRepository).save(dogEntity); (3) }
  • 33. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ Stubbing 33 @Test public void createDog_nameFromDogClient_savesDog { DogRequest dogRequest = DogRequest.builder().build();(2) DogEntity dogEntity = DogEntity.builder().build(); (4) when(mockDogClient.getDogName()) (5) .thenReturn(”Ms Riley”); dogService.createDog(dogRequest); (1) verify(mockDogRepository).save(dogEntity); (3) }
  • 34. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/
  • 35. Unless otherwise indicated, these slides are © 2013 -2018 Pivotal Software, Inc. and licensed under a Creative Commons Attribution-NonCommercial license: http://creativecommons.org/licenses/by -nc/3.0/ People Driven Development
  • 36. > Stay Connected. Tiffany Larson linkedin.com/in/tslarson 9/24: Cloud-Native Data Architecture: Break Away From Data Monoliths for Cloud-Native Applications 9/25: Building Data Environments for Production Microservices with Geode #springon e @s1 p

Notes de l'éditeur

  1. Thrilled to be at SpringOne Excited to share something I’ve been learning about
  2. XP best practice - ( It’s not about writing one giant test that contains all of the logic necessary to complete your feature or bug. TDD is an iterative, discovery driven process. By walking through incrementally the idea is you’re hopefully able to drive out and test edge cases. It’s Challenging - Different way of thinking
  3. Don’t know how - Most bootcamps/schools don’t emphasize… Usually not a requirement of the entire curriculum So it’s not a habit… They don’t know how… If it’s because they don’t want to - that’s a little outside the scope of this talk. But an important conversation to have
  4. Break this up into 3 topics Brief amount of time on the habit cycle and how to intercept routines that are not conducive to TDD This order matters - If you’re trying to teach someone but you aren’t spending a moment to figure out how to speak their language, you’re doing a dis-service to both of you. Agile Manifesto - Focus on the person first and then the process Once I get those things - I’m going to apply that knowledge by incrementally teaching them a new concept
  5. Focus on the big three Most people are more than one Majority of people know what type they are
  6. * "I can't picture it..." * Always remember a face * Take lots of notes (prefer to see words written down) * Might not be great at remembering or following verbal instructions
  7. Usually ask me a question more than once Once I find out they are a visual learner - I encourage them to take notes and try to give them the time while we are pairing to write things down Post it notes for (shortcuts) syntax
  8. * Talkative / story tellers * Remember lyrics to songs/movie quotes * Good listeners * Prefer discussions over reading articles
  9. They are the hardest for me to teach Let your pair drive out if they need visual stimuli They learn really well by explaining things to others
  10. Learning is done by carrying out physical activities Very hands on Enjoy making and creating Fidget a lot Eat snacks while studying Talk with their hands
  11. Letting them fail Need to do something active while learning
  12. We’re going to revisit these strategies later when get into achieveing milestones, the key to TDD is Test Driven or writing the test first. It’s not enough to just know how to write tests. What happens is dev starts a feature, takes a minute to figure out what they want to do, and then starts writing the code. (Comment it out). What’s happening here? To get to writing tests first we need to understand the habit cycle….
  13. Power of Habit by Charles Duhigg Alcohol. Cracking knuckles. Is the cue - I don’t know what to do so I need to try some things? I know what to do and I want to create business value ASAP? I don’t know how to write a test for this? No secret - spend some time with your pair understanding their habit cycle.
  14. how hard/discouraging it is to try and get someone to understand TDD in a day. Can’t TDD if you don’t know how to write a test If we did that, it would be a big win. …(Next slide) Can we find smaller wins along the way to celebrate?
  15. Scary code slide next…
  16. This is end goal… Dog API for dogs without names. Takes in dog data (like their color and fears), calls a client to get a name, saves the dog. This test is calling our createDog method, and verifying client was called and it was saved
  17. This test is calling our createDog method, and verifying client was called and it was saved How can we break this down into smaller learning modules? (Looking at that last slide - you can break the learning down in 3 modules)
  18. 3 modules Reason I like to start with verify - don’t know final implementation
  19. Consistency helps not start from scratch every time they open a test Have conversations about the setup (something I did wrong)
  20. (More complicated) What are we testing and what do we mock? What to say to visual learners/auditory (might start a convo re dep. injection) Memorization
  21. When do you use it? How do you use it? What does the error mean? (Or, what does a successful failing test look like)
  22. Write down the name of the test for them. Understanding how to incrementally break down a problem and how to write a test are different milestones. When do you use it? Auditory learner - let’s talk through how we are going to write this test
  23. How do I use it (syntax) What’s the error?
  24. When do you use it? How do you use it? What does the error mean? (Or, what does a successful failing test look like)
  25. Stop for your auditory learners
  26. Understand how your pair learn and how you learn Create consistency in your visual setup (how you name things), the descriptive language you use, and the way you build your tests. Treat teaching like TDD
  27. (Treat teaching like TDD) TDD is an iterative, discovery driven process. Find your failing tests! Asking those questions… Use strategies that make sense to your pair to get those tests passing. Focus on the person first and use that knowledge to help get them through the process.