SlideShare a Scribd company logo
Getting Better
through practice
Athletes train
•

Train Every Day

•

Keep Eye on the Prize

•

Be specific in training

•

Fuel body for peak performance

•

Know when to rest

•

Have perfect form
http://exercise.about.com/od/healthinjuries/a/olympictraining.htm
Musicians Train
•

Continuous improvement is a fundamental part
of the job and of the performer.

•

Many musicians continue to pay for their own
lessons to further develop their skills.

http://www.prospects.ac.uk/musician_training.htm!
Your Career is your
Responsibility
<start channelling UncleBob>

It’s not your employers responsibility

says Uncle Bob
book: The Clean Coder
Not Your Company’s
Responsibility To
!

•
•
•

buy books
send you to conferences
subscriptions ( CodeSchool, PluralSite, TreeHouse )

!
!

Take Responsibility for your own career!

</end channelling UncleBob>
Ways to Practice
•

reading a book

•

watch videos at confreaks / youtube

•

going to and/or speaking to user group

•

mentor someone
Practice with Katas
•

Kata is a simple programing problem

•

Goal is to train your fingers and brain
!

•

Pick one to work on every day for a week, ok
maybe at least 3 days :)

•

Uncle Bob does one in morning and at night
Variations
•

Practice with new languages

•

editors (VI, Emacs, Textmate, Sublime, Atom,
Light Table)

•

practice keyboard shortcuts (shortcutfoo.com)

•

test libraries (rspec, minitest/spec, test unit)

•

styles (Functional, TDD, London Style, etc)
Functional
•

recursion, lists, reduce, map

•

Tom Stuart video

•

https://skillsmatter.com/skillscasts/1101enumerators
Traditional TDD

http://ryantablada.com/post/red-green-refactor---a-tdd-fairytale
Write all the tests
•

rapid fire, just write out every test you could think
of as it statements

•

keep them in pending state

•

pass them one by one

•

fiveruns gem is a great way to look at test
output, spec —documentation is also great
Write it out on paper
•

stepping away from the keyboard

•

list every possible way

•

sketch it or psuedo code

•

then code it!
London-Style TDD
•

Developed in London by early adopters of of Extreme
Programming

•

Mock Everything

•

Test relationships

•

Naysayers say using mocks is crutch for bad design

•

Good video from Gary Bernhardt
https://www.youtube.com/watch?v=tdNnN5yTIeM
Nola’s interpretation
•

I’ve seen mocks use badly.

•

Very Badly.

•

Great to “skip” certain parts of the problem, as a
temporary measure.

•

Great to “skip” making expensive API calls

•

Just depends what part your tests are focused on

#facepalm
shocking white slide
of code next!!
Example of London Style
class Calc!
end!

describe Calc do
before do
@c = Calc.new
end

!

!

it "should be a class" do
@c.should be_an_instance_of(Calc)
end
it "should accept a string" do
@c.should_receive(:add).with("1").and_return(1)
expect(@c.add("1")).to be 1
end

it "should accept a string with 2 numbers" do
@c.should_receive(:add).with("1,2,3").and_return(6)
expect(@c.add("1,2,3")).to be 6
end
end
Example
class Calc!
def add(input)!
return 0 if input.empty?!
numbers = input.split(/[,n]/)!
numbers.map!(&:to_i)!
sum = 0!
numbers.each do |num|!
sum += num!
end!
sum!
end!
end!
!
Example
describe Calc do
before do
@c = Calc.new
end

!

!

it "should be a class" do
@c.should be_an_instance_of(Calc)
end
it "should accept a string" do
@c.should_receive(:add).with("1").and_return(1)
expect(@c.add("1")).to be 1
end

it "should accept a string with 2 numbers" do
@c.should_receive(:add).with("1,2,3").and_return(6)
expect(@c.add("1,2,3")).to be 6
end
end
The Coding Dojo Book

!

•
•

group “Dojo” and how to lead a group
Has 23 katas with variations

http://www.kataclub.com is inspired by this book
I am attempting to index all the Katas I know about there!
Katas as a Group
•

Styles for groups:
•

working in pairs

•

look-at-me-coding

•

whole-group
Randori - a Group Format
•

Code is project with one computer

•

Everyone codes

•

Taking turns

•

Whiteboards to explain problem
•

if you have keyboard:
•

you decide what to type

•

or you ask for ideas

More Related Content

Viewers also liked

Women Who Code Functional Programming - 9/26/2016
Women Who Code   Functional Programming - 9/26/2016Women Who Code   Functional Programming - 9/26/2016
Women Who Code Functional Programming - 9/26/2016
Nola Stowe
 
международные конвенции и договоры об интеллектуальной собственности
международные конвенции и договоры об интеллектуальной собственностимеждународные конвенции и договоры об интеллектуальной собственности
международные конвенции и договоры об интеллектуальной собственностиareginalnaia
 
Jekyll and MrBlog
Jekyll and MrBlogJekyll and MrBlog
Jekyll and MrBlog
Nola Stowe
 
Ruby Data Types and Data Structures
Ruby Data Types and Data StructuresRuby Data Types and Data Structures
Ruby Data Types and Data Structures
Nola Stowe
 
All girlhacknight intro to rails
All girlhacknight intro to railsAll girlhacknight intro to rails
All girlhacknight intro to rails
Nola Stowe
 
Presenters
PresentersPresenters
Presenters
Nola Stowe
 
Intro to Clojure 4 Developers
Intro to Clojure 4 DevelopersIntro to Clojure 4 Developers
Intro to Clojure 4 Developers
Nola Stowe
 
Intro to Clojure lightningtalk
Intro to Clojure lightningtalkIntro to Clojure lightningtalk
Intro to Clojure lightningtalk
Nola Stowe
 
Beginning Clojure at AustinClojure Meetup
Beginning Clojure at AustinClojure MeetupBeginning Clojure at AustinClojure Meetup
Beginning Clojure at AustinClojure Meetup
Nola Stowe
 
Ruby101
Ruby101Ruby101
Ruby101
Nola Stowe
 
Manjemen produksi dan operasi
Manjemen produksi dan operasiManjemen produksi dan operasi
Manjemen produksi dan operasi
Hidayat Ramadhan
 
Dart: Another Tool in the Toolbox
Dart: Another Tool in the ToolboxDart: Another Tool in the Toolbox
Dart: Another Tool in the Toolbox
Nola Stowe
 
EKONOMI & MANAJEMEN AGRIBISNIS
EKONOMI & MANAJEMEN AGRIBISNISEKONOMI & MANAJEMEN AGRIBISNIS
EKONOMI & MANAJEMEN AGRIBISNIS
Hidayat Ramadhan
 
How to Run a ClojureBridge Workshop
How to Run a ClojureBridge WorkshopHow to Run a ClojureBridge Workshop
How to Run a ClojureBridge Workshop
Nola Stowe
 
Euptoieta claudia hortensia
Euptoieta claudia hortensiaEuptoieta claudia hortensia
Euptoieta claudia hortensia
Márcio Martins
 
Pseudoscada erruca
Pseudoscada errucaPseudoscada erruca
Pseudoscada erruca
Márcio Martins
 

Viewers also liked (16)

Women Who Code Functional Programming - 9/26/2016
Women Who Code   Functional Programming - 9/26/2016Women Who Code   Functional Programming - 9/26/2016
Women Who Code Functional Programming - 9/26/2016
 
международные конвенции и договоры об интеллектуальной собственности
международные конвенции и договоры об интеллектуальной собственностимеждународные конвенции и договоры об интеллектуальной собственности
международные конвенции и договоры об интеллектуальной собственности
 
Jekyll and MrBlog
Jekyll and MrBlogJekyll and MrBlog
Jekyll and MrBlog
 
Ruby Data Types and Data Structures
Ruby Data Types and Data StructuresRuby Data Types and Data Structures
Ruby Data Types and Data Structures
 
All girlhacknight intro to rails
All girlhacknight intro to railsAll girlhacknight intro to rails
All girlhacknight intro to rails
 
Presenters
PresentersPresenters
Presenters
 
Intro to Clojure 4 Developers
Intro to Clojure 4 DevelopersIntro to Clojure 4 Developers
Intro to Clojure 4 Developers
 
Intro to Clojure lightningtalk
Intro to Clojure lightningtalkIntro to Clojure lightningtalk
Intro to Clojure lightningtalk
 
Beginning Clojure at AustinClojure Meetup
Beginning Clojure at AustinClojure MeetupBeginning Clojure at AustinClojure Meetup
Beginning Clojure at AustinClojure Meetup
 
Ruby101
Ruby101Ruby101
Ruby101
 
Manjemen produksi dan operasi
Manjemen produksi dan operasiManjemen produksi dan operasi
Manjemen produksi dan operasi
 
Dart: Another Tool in the Toolbox
Dart: Another Tool in the ToolboxDart: Another Tool in the Toolbox
Dart: Another Tool in the Toolbox
 
EKONOMI & MANAJEMEN AGRIBISNIS
EKONOMI & MANAJEMEN AGRIBISNISEKONOMI & MANAJEMEN AGRIBISNIS
EKONOMI & MANAJEMEN AGRIBISNIS
 
How to Run a ClojureBridge Workshop
How to Run a ClojureBridge WorkshopHow to Run a ClojureBridge Workshop
How to Run a ClojureBridge Workshop
 
Euptoieta claudia hortensia
Euptoieta claudia hortensiaEuptoieta claudia hortensia
Euptoieta claudia hortensia
 
Pseudoscada erruca
Pseudoscada errucaPseudoscada erruca
Pseudoscada erruca
 

Similar to Getting better through Katas

Bug Hunting Safari
Bug Hunting SafariBug Hunting Safari
Bug Hunting Safari
Janie Clayton
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
Nacho Cougil
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++
Michael Heron
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
ssusercaf6c1
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
Nacho Cougil
 
Exploratory Testing with the Team_ATDNL
Exploratory Testing with the Team_ATDNLExploratory Testing with the Team_ATDNL
Exploratory Testing with the Team_ATDNL
Maaike Brinkhof
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
Artem Tabalin
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
Derek Jacoby
 
How engineering practices help business
How engineering practices help businessHow engineering practices help business
How engineering practices help business
Andrey Rebrov
 
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship CultureTechnical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Allison Pollard
 
As media studies lesson 1
As media studies   lesson 1As media studies   lesson 1
As media studies lesson 1
Tracey Spavins
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
Nacho Cougil
 
Being a designer
Being a designerBeing a designer
Being a designer
Ahmad Firoz
 
Choosing a Simple 3D Printing and Arduino Project for Maximum Learning
Choosing a Simple 3D Printing and Arduino Project for Maximum LearningChoosing a Simple 3D Printing and Arduino Project for Maximum Learning
Choosing a Simple 3D Printing and Arduino Project for Maximum Learning
Adrienne Harvey
 
Practical engineering
Practical engineeringPractical engineering
Practical engineering
Ashwith Rego
 
Hacker News Meetup April 2014
Hacker News Meetup April 2014Hacker News Meetup April 2014
Hacker News Meetup April 2014
Dan Quine
 
Good programming practices updated
Good programming practices updatedGood programming practices updated
Good programming practices updated
Agha Dostain
 
Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012
Dror Helper
 
Confessions of a Senior Mind
Confessions of a Senior MindConfessions of a Senior Mind
Confessions of a Senior Mind
Stojan Peshov
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
Danny Preussler
 

Similar to Getting better through Katas (20)

Bug Hunting Safari
Bug Hunting SafariBug Hunting Safari
Bug Hunting Safari
 
TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)TDD - Seriously, try it! (updated '22)
TDD - Seriously, try it! (updated '22)
 
CPP01 - Introduction to C++
CPP01 - Introduction to C++CPP01 - Introduction to C++
CPP01 - Introduction to C++
 
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
TDD - Seriously, try it! - Trójmiasto Java User Group (17th May '23)
 
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
TDD - Seriously, try it! - Trjjmiasto JUG (17th May '23)
 
Exploratory Testing with the Team_ATDNL
Exploratory Testing with the Team_ATDNLExploratory Testing with the Team_ATDNL
Exploratory Testing with the Team_ATDNL
 
eXtreme Programming
eXtreme ProgrammingeXtreme Programming
eXtreme Programming
 
Untangling - fall2017 - week 7
Untangling - fall2017 - week 7Untangling - fall2017 - week 7
Untangling - fall2017 - week 7
 
How engineering practices help business
How engineering practices help businessHow engineering practices help business
How engineering practices help business
 
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship CultureTechnical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
Technical Excellence Doesn't Just Happen--Igniting a Craftsmanship Culture
 
As media studies lesson 1
As media studies   lesson 1As media studies   lesson 1
As media studies lesson 1
 
TDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech WeekTDD - Seriously, try it! - Bucarest Tech Week
TDD - Seriously, try it! - Bucarest Tech Week
 
Being a designer
Being a designerBeing a designer
Being a designer
 
Choosing a Simple 3D Printing and Arduino Project for Maximum Learning
Choosing a Simple 3D Printing and Arduino Project for Maximum LearningChoosing a Simple 3D Printing and Arduino Project for Maximum Learning
Choosing a Simple 3D Printing and Arduino Project for Maximum Learning
 
Practical engineering
Practical engineeringPractical engineering
Practical engineering
 
Hacker News Meetup April 2014
Hacker News Meetup April 2014Hacker News Meetup April 2014
Hacker News Meetup April 2014
 
Good programming practices updated
Good programming practices updatedGood programming practices updated
Good programming practices updated
 
Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012Creating change from within - Agile Practitioners 2012
Creating change from within - Agile Practitioners 2012
 
Confessions of a Senior Mind
Confessions of a Senior MindConfessions of a Senior Mind
Confessions of a Senior Mind
 
Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)Test Driven Development on Android (Kotlin Kenya)
Test Driven Development on Android (Kotlin Kenya)
 

Recently uploaded

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
SOFTTECHHUB
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
Claudio Di Ciccio
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
Kumud Singh
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
Zilliz
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems S.M.S.A.
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
KAMESHS29
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
Zilliz
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
Matthew Sinclair
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
Neo4j
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
Neo4j
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
Edge AI and Vision Alliance
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
Quotidiano Piemontese
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
Neo4j
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Paige Cruz
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
Matthew Sinclair
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
mikeeftimakis1
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
Neo4j
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Malak Abu Hammad
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
Mariano Tinti
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
Uni Systems S.M.S.A.
 

Recently uploaded (20)

Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
Goodbye Windows 11: Make Way for Nitrux Linux 3.5.0!
 
“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”“I’m still / I’m still / Chaining from the Block”
“I’m still / I’m still / Chaining from the Block”
 
Mind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AIMind map of terminologies used in context of Generative AI
Mind map of terminologies used in context of Generative AI
 
Building Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and MilvusBuilding Production Ready Search Pipelines with Spark and Milvus
Building Production Ready Search Pipelines with Spark and Milvus
 
Uni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdfUni Systems Copilot event_05062024_C.Vlachos.pdf
Uni Systems Copilot event_05062024_C.Vlachos.pdf
 
RESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for studentsRESUME BUILDER APPLICATION Project for students
RESUME BUILDER APPLICATION Project for students
 
Infrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI modelsInfrastructure Challenges in Scaling RAG with Custom AI models
Infrastructure Challenges in Scaling RAG with Custom AI models
 
20240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 202420240609 QFM020 Irresponsible AI Reading List May 2024
20240609 QFM020 Irresponsible AI Reading List May 2024
 
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
GraphSummit Singapore | Enhancing Changi Airport Group's Passenger Experience...
 
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
GraphSummit Singapore | Graphing Success: Revolutionising Organisational Stru...
 
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
“Building and Scaling AI Applications with the Nx AI Manager,” a Presentation...
 
National Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practicesNational Security Agency - NSA mobile device best practices
National Security Agency - NSA mobile device best practices
 
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
GraphSummit Singapore | Neo4j Product Vision & Roadmap - Q2 2024
 
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfObservability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdf
 
20240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 202420240607 QFM018 Elixir Reading List May 2024
20240607 QFM018 Elixir Reading List May 2024
 
Introduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - CybersecurityIntroduction to CHERI technology - Cybersecurity
Introduction to CHERI technology - Cybersecurity
 
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024GraphSummit Singapore | The Art of the  Possible with Graph - Q2 2024
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024
 
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdfUnlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
Unlock the Future of Search with MongoDB Atlas_ Vector Search Unleashed.pdf
 
Mariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceXMariano G Tinti - Decoding SpaceX
Mariano G Tinti - Decoding SpaceX
 
Microsoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdfMicrosoft - Power Platform_G.Aspiotis.pdf
Microsoft - Power Platform_G.Aspiotis.pdf
 

Getting better through Katas

  • 2. Athletes train • Train Every Day • Keep Eye on the Prize • Be specific in training • Fuel body for peak performance • Know when to rest • Have perfect form http://exercise.about.com/od/healthinjuries/a/olympictraining.htm
  • 3. Musicians Train • Continuous improvement is a fundamental part of the job and of the performer. • Many musicians continue to pay for their own lessons to further develop their skills. http://www.prospects.ac.uk/musician_training.htm!
  • 4. Your Career is your Responsibility <start channelling UncleBob> It’s not your employers responsibility says Uncle Bob book: The Clean Coder
  • 5. Not Your Company’s Responsibility To ! • • • buy books send you to conferences subscriptions ( CodeSchool, PluralSite, TreeHouse ) ! ! Take Responsibility for your own career! </end channelling UncleBob>
  • 6. Ways to Practice • reading a book • watch videos at confreaks / youtube • going to and/or speaking to user group • mentor someone
  • 7. Practice with Katas • Kata is a simple programing problem • Goal is to train your fingers and brain ! • Pick one to work on every day for a week, ok maybe at least 3 days :) • Uncle Bob does one in morning and at night
  • 8. Variations • Practice with new languages • editors (VI, Emacs, Textmate, Sublime, Atom, Light Table) • practice keyboard shortcuts (shortcutfoo.com) • test libraries (rspec, minitest/spec, test unit) • styles (Functional, TDD, London Style, etc)
  • 9. Functional • recursion, lists, reduce, map • Tom Stuart video • https://skillsmatter.com/skillscasts/1101enumerators
  • 11. Write all the tests • rapid fire, just write out every test you could think of as it statements • keep them in pending state • pass them one by one • fiveruns gem is a great way to look at test output, spec —documentation is also great
  • 12. Write it out on paper • stepping away from the keyboard • list every possible way • sketch it or psuedo code • then code it!
  • 13. London-Style TDD • Developed in London by early adopters of of Extreme Programming • Mock Everything • Test relationships • Naysayers say using mocks is crutch for bad design • Good video from Gary Bernhardt https://www.youtube.com/watch?v=tdNnN5yTIeM
  • 14. Nola’s interpretation • I’ve seen mocks use badly. • Very Badly. • Great to “skip” certain parts of the problem, as a temporary measure. • Great to “skip” making expensive API calls • Just depends what part your tests are focused on #facepalm
  • 15. shocking white slide of code next!!
  • 16. Example of London Style class Calc! end! describe Calc do before do @c = Calc.new end ! ! it "should be a class" do @c.should be_an_instance_of(Calc) end it "should accept a string" do @c.should_receive(:add).with("1").and_return(1) expect(@c.add("1")).to be 1 end it "should accept a string with 2 numbers" do @c.should_receive(:add).with("1,2,3").and_return(6) expect(@c.add("1,2,3")).to be 6 end end
  • 17. Example class Calc! def add(input)! return 0 if input.empty?! numbers = input.split(/[,n]/)! numbers.map!(&:to_i)! sum = 0! numbers.each do |num|! sum += num! end! sum! end! end! !
  • 18. Example describe Calc do before do @c = Calc.new end ! ! it "should be a class" do @c.should be_an_instance_of(Calc) end it "should accept a string" do @c.should_receive(:add).with("1").and_return(1) expect(@c.add("1")).to be 1 end it "should accept a string with 2 numbers" do @c.should_receive(:add).with("1,2,3").and_return(6) expect(@c.add("1,2,3")).to be 6 end end
  • 19. The Coding Dojo Book ! • • group “Dojo” and how to lead a group Has 23 katas with variations http://www.kataclub.com is inspired by this book I am attempting to index all the Katas I know about there!
  • 20. Katas as a Group • Styles for groups: • working in pairs • look-at-me-coding • whole-group
  • 21. Randori - a Group Format • Code is project with one computer • Everyone codes • Taking turns • Whiteboards to explain problem • if you have keyboard: • you decide what to type • or you ask for ideas