How do you Learn New Skills? Emily Bache As a Professional - - PowerPoint PPT Presentation

how do you learn new skills
SMART_READER_LITE
LIVE PREVIEW

How do you Learn New Skills? Emily Bache As a Professional - - PowerPoint PPT Presentation

How do you Learn New Skills? Emily Bache As a Professional Programmer - how do you learn new skills? Emily Bache @emilybache http://coding-is-like-cooking.info www.praqma.com Emily Bache Test Automation Specialist Senior Consultant at


slide-1
SLIDE 1

How do you Learn New Skills?

Emily Bache

slide-2
SLIDE 2

www.praqma.com

how do you learn new skills?

Emily Bache @emilybache http://coding-is-like-cooking.info

As a Professional Programmer -

slide-3
SLIDE 3

Emily Bache

Test Automation Specialist Senior Consultant at Praqma Author of “The Coding Dojo Handbook” @emilybache emily.bache@praqma.com

slide-4
SLIDE 4

Programming

flickr: Matylda Czarnecka

slide-5
SLIDE 5

Practical Coding Skills

using IDE shortcuts Pair Programming Test Driven Development Designing good Test Cases Refactoring Working incrementally, committing code often Designing using SOLID principles Object Oriented Paradigm Functional Programming Paradigm ...

slide-6
SLIDE 6

Test Driven Development

Red Green Refactor

slide-7
SLIDE 7

Why TDD?

design verification: the code does what you think it does work incrementally: share your changes often, maintain flow design benefits: isolated units should have low coupling & high cohesion refactoring support: Make changes with confidence Wonderful feeling of freedom & productivity!

slide-8
SLIDE 8

Self-testing code

You have self-testing code when you can run a series of automated tests against the code base and be confident that, should the tests pass, your code is free of any substantial defects. http://www.martinfowler.com/bliki/SelfTestingCode.html — Martin Fowler

slide-9
SLIDE 9

Agile Testing Pyramid

a few tests for the whole stack many ‘service’ tests, may be public or test-specific API majority are unit tests

http://www.mountaingoatsoftware.com/blog/the-forgotten-layer-of-the- test-automation-pyramid

UI API Unit

slide-10
SLIDE 10

TDD gives more than self- testing code

design verification: the code does what you think it does work incrementally: share your changes often, maintain flow design benefits: isolated units should have low coupling & high cohesion refactoring support: Make changes with confidence Wonderful feeling of freedom & productivity!

slide-11
SLIDE 11

Kent Beck in 2009

http://www.threeriversinstitute.org/blog/?p=291

slide-12
SLIDE 12

Learning to Ski

fmickr user nonanet

slide-13
SLIDE 13

Cross Country skiing

slide-14
SLIDE 14

Snowplow

flickr: MichaEli

slide-15
SLIDE 15

Parallel turns

fmickr user nonanet

slide-16
SLIDE 16

Test Driven Development

Red Green Refactor

slide-17
SLIDE 17

Training Course

image: htup://www.fmickr.com/photos/fboyd/

slide-18
SLIDE 18

Learn on-the-job

image: flickr user Lisamarie Babik

Pair Program & Get Stuff Done

slide-19
SLIDE 19

The Coding Dojo Dojo = The place you go to learn

slide-20
SLIDE 20

What happens at a dojo meeting?

5 – 15 or so coders write code, collaborate, discuss

slide-21
SLIDE 21

A Regular Coding Dojo

Your team meets for a coding dojo every so often practice skills you can use in production code

slide-22
SLIDE 22

Dojo Principles

The fjrst rule of the dojo:

You can’t discuss a technique without code You can’t show code without tests

Code without tests simply doesn’t exist!

The Dojo Principles: htup://bossavit.com/dojo/archives/2005_02.html

slide-23
SLIDE 23

Code Kata

In martial arts, a “Kata” is a sequence of moves that you learn. Dave Thomas proposed the idea

  • f the “Code Kata”

http://codekata.pragprog.com/

small exercises, that you repeat

slide-24
SLIDE 24

Code Kata - Leap Years

Write a function that returns true or false depending

  • n whether its input integer is a leap year or not.

A leap year is divisible by 4, but is not otherwise divisible by 100, unless it is also divisible by 400. Examples: 1996 --> true 2001 --> false 2000 --> true 1900 --> false

slide-25
SLIDE 25

2 kinds of Practice

Incidental Practice Deliberate Practice

  • Repeatedly doing something you can already

do, and improving at it

slide-26
SLIDE 26

Incidental Practice: Good Habits

“I’m not a great programmer; I’m just a good programmer with great habits.”

  • Kent Beck

quote from p57, “Refactoring” by Martin Fowler

image taken by Martin Fowler at XP2002

slide-27
SLIDE 27

US Military training philosophy

“Under pressure, you don’t rise to the occasion, you sink to the level of your training. That’s why we train so hard”

  • - A US Navy Seal
slide-28
SLIDE 28

Experience TDD

  • Experience what TDD feels like when it works
  • Recognise problems well suited to it
slide-29
SLIDE 29

Repeatedly practice the same Katas

In Karate there are some katas everyone learns There are some popular software katas lots of people have done

slide-30
SLIDE 30

Practice

Incidental Practice:

  • Repeatedly doing something you can already do,

and improving at it Deliberate Practice:

  • Trying to do something you can’t comfortably do
  • breaking down a skill into components you practice

separately

slide-31
SLIDE 31

Deliberate Practice

Need to feel safe Need to feel motivated

fmickr user antony_mayfjeld

slide-32
SLIDE 32

TDD skills

Designing Test Cases Refactoring Safely Driving Development with Tests Designing Clean Code

TDD is a composite skill

slide-33
SLIDE 33

TDD skills

Designing Test Cases Refactoring Safely Driving Development with Tests Designing Clean Code

In the dojo we can focus on one at a time

slide-34
SLIDE 34

TDD skills

Designing Test Cases Refactoring Safely Driving Development with Tests Designing Clean Code

Refactoring Katas: Tennis, Yatzy, Gilded Rose…

slide-35
SLIDE 35

Tennis Refactoring Kata

https://github.com/emilybache/Tennis-Refactoring-Kata

slide-36
SLIDE 36

TDD skills

Designing Test Cases Refactoring Safely Driving Development with Tests Designing Clean Code

SOLID principles Katas: Tyre Pressure, Leaderboard

slide-37
SLIDE 37

Tyre Pressure Kata

slide-38
SLIDE 38

TDD skills

Designing Test Cases Refactoring Safely Driving Development with Tests Designing Clean Code

Diamond Kata, ISBN

slide-39
SLIDE 39

Diamond Kata

https://github.com/emilybache/DiamondKata

slide-40
SLIDE 40

Diamond Kata

slide-41
SLIDE 41

TDD skills

Designing Test Cases Refactoring Safely Driving Development with Tests Designing Clean Code

Gilded Rose, Functional Code

slide-42
SLIDE 42

Functional Code Kata

slide-43
SLIDE 43

https://github.com/emilybache

slide-44
SLIDE 44

Essential Dojo Elements

Hold an introduction and retrospective Write tests as well as code Show your working Be a facilitator

slide-45
SLIDE 45

Dojo Principles: Mastery

If it seems hard, fjnd someone who can explain it. If it seems easy, explain to those who fjnd it hard. No-one has mastery in all areas: everyone will both teach & learn.

Sensei Henri Canditan by flickr user Flavio~

slide-46
SLIDE 46

Coding Dojos in practice

Paris Dojo Ruby & Python User Groups Consultant fmown-in for 5 or 6 sessions (semi) Regularly at Pagero

slide-47
SLIDE 47

Coding Dojos @ Pagero

Once a month

Standard structure

Short intro 45 minutes coding short retrospective (optional) repeat Kata

icons: Double-J Design, ballicons.net

One or Two hours

slide-48
SLIDE 48

Improving at TDD

http://cyber-dojo.org/ Tests failing Compiler/Syntax Error Tests Passing TDD at first dojo After 6 dojos

slide-49
SLIDE 49

Coding Dojo Summary

Better coding skills Teach and Learn in a Group Incidental & Deliberate Practice Have Fun!

slide-50
SLIDE 50
slide-51
SLIDE 51

www.praqma.com

how do you learn new skills?

Emily Bache @emilybache http://coding-is-like-cooking.info

As a Professional Programmer -