SlideShare une entreprise Scribd logo
1  sur  69
Télécharger pour lire hors ligne
The Coder’s Dojo
                                 Emily Bache
                          emily@bacheconsulting.com
                        http://emilybache.blogspot.com




                                                  material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Session outline

                 Why should developers test? (slides)

                 What is TDD? (slides)

                 TDD vs Test Last (slides, discussion)

                 How can I learn TDD? (slides)

                 Randori (coding)

                 Experiences leading Coding Dojos (slides, discussion)

                                                    material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Why should developers
                      Test?


                             material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Traditional Testing Strategy:

                                                               Bug reports


                                                              Code releases

                                                                           Text




                      Testers                                                                              Developers
                                                             The Wall

 images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway   material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Developers are blind to bugs


            Developers don’t want to
            break their beautiful creation

            Subconciously use their
            knowledge of the
            implementation to avoid weak
            spots


                                             circa 1940, Paris, Blindfold typing competition
                                                                 (Jhayne, flickr)
                                                             material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
A smart mouse ...




                                   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
JUnit



                      “Keep the bar green to keep the code clean”




                                                           material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Engineering practices

                           (Exploratory) Testing


                            Automated Checks


                          Continuous Integration


                            Automated Build


                             Version Control

Friday, 13 May 2011
Testing vs Checking
                Requires a sapient                        Can be automated
                human
                                                          confirms our beliefs to be
                turns up new                              true
                information
                                                          asks the same question
                asks new questions                        as yesterday

                is exploration and                        is making sure the
                learning                                  program doesn’t fail

                           See also Michael Bolton’s article
                  http://www.developsense.com/blog/2009/08/testing-vs-checking/
Friday, 13 May 2011
Example - Fitnesse




                                   material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Testers and Devs on same team
          Timebox


                                              Frequent
                                           communication
                                                                                                                                            Working
                                                                                                                                            Software

                      Testers                                    Developers


                      The team delivers working, tested software
                                    every iteration
 images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway   material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Automated Checks

                Catch regression errors -

                      Safety net for refactoring

                Documentation/examples of
                usage

                Force internal interfaces/
                modules/units


                                                   material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
What is TDD?



                               material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Bob Martin’s Laws of TDD
                                                Red




                                     Refactor             Green


               Don’t write production code unless it is to make a failing
               unit test pass.

               Don’t write any more of a unit test than is sufficient to fail.

               Don’t write any more production code than is sufficient to
               pass the one failing unit test.
                      http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd
Friday, 13 May 2011
TDD moves
                Starting                        Red
        Analyse Problem                    Declare & Name
           Test List                      Arrange-Act-Assert
         Guiding Test                      Satisfy compiler




                           Refactor
                                                                           Green
                          Remove Fake
                                                           Implement solution
                       Remove Code Smell
                                                                Fake it
                      (No new functionality)
                                                               Start over
                       Note new test cases
                                                          material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
TDD moves (starting)
                                            Basic analysis of problem

                                            Review existing code in area
                       Starting
                                            Identify where the new functionality
                Analyse Problem
                                            will be called from
                   Test List
                 Guiding Test
                                            Guiding Test (take from story
                                            acceptance criteria)

                                            Make a list of test cases

                                       Move On When:
                      You have an achievable goal & have chosen first test
                                                          material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
TDD moves (get to red)

                                         Declare and name a test
                      Red
                                         Arrange - Act - Assert (start
               Declare & Name
              Arrange-Act-Assert
                                         with Assert)
               Satisfy compiler
                                         Just enough Production code to
                                         satisfy compiler



                                 Move On When:
             Test code describes missing function, executes, and is Red
                                                   material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
TDD moves (get to Green)
                                            Change the production code -
                                            implement just enough to make
                                            the test pass
                      Green
              Implement solution
                   Fake it                  Fake it (if you’re unsure)
                  Start over
                                            When all else fails, remove the
                                            failing test, get back to green,
                                            and write an easier test.

                                      Move On When:
                              Tests all execute and are Green
                                                       material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
TDD moves (refactor)
                                              Change production code: remove
                                              fakes, code smells
                      Refactor
                                              Change test code: improve
                 Remove Fake
                                              readability
              Remove Code Smell
             (No new functionality)
              Note new test cases             Don’t add functionality not
                                              required by tests.

                                              Note down new test cases on list.


                                     Move On When:
                       Code is Clean, tests all execute and are Green
                                                       material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Why TDD over Test Last?



                         material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
TDD vs Test Last


                                            Write code
                      Red




        Refactor            Green
                                    Debug                Write tests




Friday, 13 May 2011
TDD & feedback
                                     Writing a failing test tells you:

                                       what problem you are solving
                      Red
                                       if your SUT requires many
                                       collaborators
  Refactor                   Green     if SUT has an inconvenient API

                                     before you commit to an
                                     implementation

Friday, 13 May 2011
TDD & feedback


                      Red
                                    Getting to Green:

                                     makes you write only
                                     just enough functionality
       Refactor             Green
                                     Avoid over design &
                                     code bloat



Friday, 13 May 2011
TDD & feedback

                         Red
                                       Refactoring happens
                                       frequently
              Refactor         Green
                                        Many opportunities to
                                        improve your design




Friday, 13 May 2011
TDD - no silver bullet

          “TDD constrains the problem space we are
          looking at, as well as provides feedback on how
          well we are addressing this problem.

          Of course TDD isn't the only thing imposing
          constraints on us, nor our only source of
          feedback.”
          - David Tchepak
                                                     From his article
                      http://www.davesquared.net/2011/03/why-learning-tdd-is-hard-and-what-to-do.html


Friday, 13 May 2011
Checking & Testing
                                                     Write code
                      Red




      Refactor              Green
                                          Debug                   Write tests


                       TDD -> more like Testing

                       Test-Last -> more like Checking

                       TDD is a lot more fun to do

Friday, 13 May 2011
Discussion



Friday, 13 May 2011
Should developers do TDD?

                 Do you test your own code? Do you need
                 separate testers?

                 What can developers do to influence the long
                 term project velocity? (give examples)

                 Do you think it matters whether you write the
                 tests first or last?


Friday, 13 May 2011
How can I learn TDD?



                                   material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
read books, blogs, code...




                      other people’s experience and wisdom

                      read code, discuss code, analyse code -
                      that you didn’t write yourself
                                                 material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Pair Programming




                          Attribution: flickr user Lisamarie Babik




                                                                    material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
The Coder’s Dojo




           • The dojo is the place
             where you go every
             week to practice and
             learn karate



                                     see http://codingdojo.org

Friday, 13 May 2011
Code Kata: TDD moves




                       ‘Pragmatic’ Dave Thomas



                             material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
KataRomanNumerals
           Write a program to convert normal numbers to roman
           numerals:

                      1 --> I
                      10 --> X
                      7 --> VII




                                              material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
KataMinesweeper

        Write a program that outputs the same field including
        the hint numbers, like this

                         *...       *100
                         ....       2210
                         .*..       1*10
                         ....       1110




                                           material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
What happens at a dojo meeting?


                                                   3 – 10 programmers

                                                   meet as equals

                                                   do some coding
                                                   together

                                                   practice TDD moves
                      Image courtesy Danilo Sato




                                                     material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Prepared Kata

                      One person presents
                      their best solution

                      They have practiced it
                      many times.

                      Group contributes
                      feedback and questions

                                               material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Screencasts
          Watching someone else code

          music or commentary




                                       material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Randori


                      Everyone contributes

                      Split into pairs, or work
                      all together on a
                      projector

                      Ping pong TDD or time
                      limits

                                                  material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Dojo Rules

                The person with the key-
                board decides what to type

                Ask for help if stuck, offer
                help if asked

                Be strict about TDD

                Offer design criticism on a
                green bar


                                               material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Test-Infected
                      You’re writing some code using
                      TDD, awkward and slow and
                      unfamiliar.

                      You refactor it.

                      Some tests fail unexpectedly!

                      You realize the tests saved you
                      That feeling of safety

                      You want more of that!
                                               material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Importance of safe

                      Step outside normal hierarchy

                      Mistakes expected

                      Moderation/leadership important




                                                 material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Dojo Discussions
          The code you write in the dojo leads to concrete discussions


             PartnerData newPartner = new PartnerData("Disney");

             AddressData address = new AddressData("24 Stars Ave",

                                                "91210", "Hollywood", "USA"));

             newPartner.setAddress(address);

             UserData contact = new UserData("Emily", "emily@test.com",

                                                     "031 123456");

             newPartner.setContactPerson(contact);




Friday, 13 May 2011
Dojo Discussions
 PartnerData newPartner = new PartnerData("Disney")

                       .withAddress(

                            new AddressData("24 Stars Ave",

                                             "91210", "Hollywood", "USA"))

                       .withContactPerson(

                            new UserData("Emily", "emily@test.com",

                                             "031 123456"));




                       Is this better? Cleaner?

Friday, 13 May 2011
The Coders Dojo
                                 Emily Bache
                          emily@bacheconsulting.com
                        http://emilybache.blogspot.com




                                                  material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Experiences



                               material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Different kinds of groups


                 language user groups

                 with colleagues in the same team

                 open/free taught course

                 agile coach leading course at a client



                                                  material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Language user groups


                              .js

                      Python, Ruby, JavaScript, Scala groups

                      Small numbers of skilled enthusiasts

                      Dojo meetings are fun!


                                                   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
With colleagues



                      Stop work a little early, dojo in evening

                      Boss sponsors with time & pizza

                      Fun, community building


                                                   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Open/free taught course

                                      JDojo@Gbg


                      5 sessions announced in advance
                      as a course

                      4pm - 6pm (may count as work)

                      Host company uses it for marketing &
                      recruitment

                                                  material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Agile coach leads dojo at client

                Raise competency in
                whole dept/team

                Discuss: what is clean
                code for this team?

                “This would never
                work on our code”
 images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
What past participants
                           have learnt


                                     material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Survey of various dojos




           29 responses, most have been to more than one kind

                                             material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Based on 4-5 meetings...




                Roughly how many dojo meetings have you been to?


                                                  material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Well received




                          Would you encourage others
                      who want to improve their programming
                         skills to come to dojo meetings?


                                                  material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Practicing at home?


                                                 every day [0]
                                                a few times each month [2]




                       Have you ever practiced a Kata by
                              yourself at home?


                                                  material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
We asked about:

                 TDD
                 Mocking
                 Refactoring
                 IDE & frameworks
                 Language skills

                                    Image attribution: Flickr user crashmaster


                                                  material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Language Skill
       Scale from 1-5
      beginner - expert




                      How comfortable were/are you
                      with the programming language?


                                             material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Comfortable with IDE
       Scale from 1-5
      beginner - expert




          How comfortable were/are you with the IDE-editor?

                                           material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Mock objects
       Scale from 1-5
      beginner - expert




                 How good were/are you at using Mock objects?

                                               material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Refactoring
       Scale from 1-5
      beginner - expert




                      How good at refactoring were/are you?
                                                 material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Write Unit Tests Often?
         Scale from 1-5
          never - daily




                       How often did/do you write unit tests?


                                                   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Test-Driven Development
       Scale from 1-5
      beginner - expert




       How good at Test-Driven Development were/are you?
                                        material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
How to get started



                                   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
You could join a dojo!

          Lots of them exist already

          It's fun, rewarding and you
          get to meet new people

          Or, hire a coach to run
          one at your company!

                                        Image attribution: Flickr user lumaxart


                                                material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
You could start a dojo!


                                  ||                                                           +                                 +



                          tools: meetup.com, google groups

                          persuade a friend to help organize

                          Get someone to pay for pizza!

 images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
Online Resources




                http://codingdojo.org   http://codingkata.org
                http://codersdojo.org   http://cyber-dojo.com
                http://katacasts.com    http://katacatalog.com
                                           material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011
Still trying stuff out...
                 give out kata in advance?

                 what to do with code afterwards?

                 groups for beginners and different groups for
                 experts?

                 if/when to bring in legacy code

                 what form to use when? (prepared, randori, pairs
                 etc)

                                                   material copyright Bache consulting, emily@bacheconsulting.com

Friday, 13 May 2011
The Coders Dojo
                                 Emily Bache
                          emily@bacheconsulting.com
                        http://emilybache.blogspot.com




                                                  material copyright Bache consulting, emily@bacheconsulting.com
Friday, 13 May 2011

Contenu connexe

Tendances

Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)AyakaNishiyama
 
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)Teiichi Ota
 
AWS Elemental MediaConvert で動画変換
AWS Elemental MediaConvert で動画変換AWS Elemental MediaConvert で動画変換
AWS Elemental MediaConvert で動画変換虎の穴 開発室
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中Satoshi Noto
 
ヒューマンエラーの防ぎ方(Japanese)
ヒューマンエラーの防ぎ方(Japanese)ヒューマンエラーの防ぎ方(Japanese)
ヒューマンエラーの防ぎ方(Japanese)Toru Nakata
 
Inside WebM
Inside WebMInside WebM
Inside WebMmganeko
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれからYifeng Jiang
 
データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤Yoshinori Matsunobu
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するKohei Tokunaga
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)NTT DATA Technology & Innovation
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見zaru sakuraba
 
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkanフロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkanItsuki Kuroda
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜Yui Ito
 
Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...
Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...
Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...Kohei Ota
 
Innodb Deep Talk #2 でお話したスライド
Innodb Deep Talk #2 でお話したスライドInnodb Deep Talk #2 でお話したスライド
Innodb Deep Talk #2 でお話したスライドYasufumi Kinoshita
 
Depolamada Raf Sistemleri
Depolamada Raf SistemleriDepolamada Raf Sistemleri
Depolamada Raf SistemleriCafer SALCAN
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?Sho Tanaka
 
インメモリーデータグリッドの選択肢
インメモリーデータグリッドの選択肢インメモリーデータグリッドの選択肢
インメモリーデータグリッドの選択肢Masaki Yamakawa
 
OpenStack Trove 技術解説
OpenStack Trove 技術解説OpenStack Trove 技術解説
OpenStack Trove 技術解説Toru Makabe
 

Tendances (20)

Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)Laravel勉強会(データベーステスト編)
Laravel勉強会(データベーステスト編)
 
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
HTML5時代のネット動画技術〜良い子悪い子普通の子(増補改訂版)
 
AWS Elemental MediaConvert で動画変換
AWS Elemental MediaConvert で動画変換AWS Elemental MediaConvert で動画変換
AWS Elemental MediaConvert で動画変換
 
ただいまHadoop勉強中
ただいまHadoop勉強中ただいまHadoop勉強中
ただいまHadoop勉強中
 
ヒューマンエラーの防ぎ方(Japanese)
ヒューマンエラーの防ぎ方(Japanese)ヒューマンエラーの防ぎ方(Japanese)
ヒューマンエラーの防ぎ方(Japanese)
 
Inside WebM
Inside WebMInside WebM
Inside WebM
 
Apache Hiveの今とこれから
Apache Hiveの今とこれからApache Hiveの今とこれから
Apache Hiveの今とこれから
 
データベース技術の羅針盤
データベース技術の羅針盤データベース技術の羅針盤
データベース技術の羅針盤
 
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動するStargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
Stargz Snapshotter: イメージのpullを省略しcontainerdでコンテナを高速に起動する
 
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
BigtopでHadoopをビルドする(Open Source Conference 2021 Online/Spring 発表資料)
 
普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見普通のRailsアプリをdockerで本番運用する知見
普通のRailsアプリをdockerで本番運用する知見
 
フロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkanフロー効率性とリソース効率性、再入門 #devlove #devkan
フロー効率性とリソース効率性、再入門 #devlove #devkan
 
サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜サーバ構築を自動化する 〜Ansible〜
サーバ構築を自動化する 〜Ansible〜
 
Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...
Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...
Civic Tech Forum 2019「ここまできた!標準的バス情報フォーマット(GTFS-JP)~ 国を巻き込み全国にオープンデータが広がったプロセ...
 
Innodb Deep Talk #2 でお話したスライド
Innodb Deep Talk #2 でお話したスライドInnodb Deep Talk #2 でお話したスライド
Innodb Deep Talk #2 でお話したスライド
 
Depolamada Raf Sistemleri
Depolamada Raf SistemleriDepolamada Raf Sistemleri
Depolamada Raf Sistemleri
 
機械学習モデルのサービングとは?
機械学習モデルのサービングとは?機械学習モデルのサービングとは?
機械学習モデルのサービングとは?
 
B-link-tree
B-link-treeB-link-tree
B-link-tree
 
インメモリーデータグリッドの選択肢
インメモリーデータグリッドの選択肢インメモリーデータグリッドの選択肢
インメモリーデータグリッドの選択肢
 
OpenStack Trove 技術解説
OpenStack Trove 技術解説OpenStack Trove 技術解説
OpenStack Trove 技術解説
 

En vedette

TDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding DojoTDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding DojoRoberto Bettazzoni
 
Coding Dojo Introduction
Coding Dojo IntroductionCoding Dojo Introduction
Coding Dojo IntroductionDanilo Sato
 
"Il dilettevole giuoco dell'oca" coding dojo
"Il dilettevole giuoco dell'oca" coding dojo"Il dilettevole giuoco dell'oca" coding dojo
"Il dilettevole giuoco dell'oca" coding dojoPietro Di Bello
 
Coding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDCoding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDAlin Pandichi
 
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Alin Pandichi
 
Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSModular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSGunnar Hillert
 
Restful Security Requirements
Restful Security RequirementsRestful Security Requirements
Restful Security RequirementsPat Cappelaere
 
Vivere per raccontarla: l’importanza del daily journal in un team agile
Vivere per raccontarla: l’importanza del daily journal in un team agileVivere per raccontarla: l’importanza del daily journal in un team agile
Vivere per raccontarla: l’importanza del daily journal in un team agilePietro Di Bello
 

En vedette (13)

TDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding DojoTDD Dojo - Test Driven Development Coding Dojo
TDD Dojo - Test Driven Development Coding Dojo
 
Coding Dojo Introduction
Coding Dojo IntroductionCoding Dojo Introduction
Coding Dojo Introduction
 
Coding Dojo In 5 minutes
Coding Dojo In 5 minutesCoding Dojo In 5 minutes
Coding Dojo In 5 minutes
 
"Il dilettevole giuoco dell'oca" coding dojo
"Il dilettevole giuoco dell'oca" coding dojo"Il dilettevole giuoco dell'oca" coding dojo
"Il dilettevole giuoco dell'oca" coding dojo
 
TDD - una introduzione
TDD -  una introduzioneTDD -  una introduzione
TDD - una introduzione
 
Coding dojo
Coding dojoCoding dojo
Coding dojo
 
Coding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDDCoding Dojo - Berlin Clock - TDD
Coding Dojo - Berlin Clock - TDD
 
Coding Dojo Applied
Coding Dojo AppliedCoding Dojo Applied
Coding Dojo Applied
 
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
Coding Dojo - Golden Master Technique - Approval Tests - Gilded Rose Kata-
 
Modular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJSModular Test-driven SPAs with Spring and AngularJS
Modular Test-driven SPAs with Spring and AngularJS
 
Restful Security Requirements
Restful Security RequirementsRestful Security Requirements
Restful Security Requirements
 
Vivere per raccontarla: l’importanza del daily journal in un team agile
Vivere per raccontarla: l’importanza del daily journal in un team agileVivere per raccontarla: l’importanza del daily journal in un team agile
Vivere per raccontarla: l’importanza del daily journal in un team agile
 
Organise a Code Dojo!
Organise a Code Dojo!Organise a Code Dojo!
Organise a Code Dojo!
 

Similaire à Teaching and Learning TDD in the Coding Dojo

Open Source Test Workshop for QA Testers, Developers, IT Managers
Open Source Test Workshop for QA Testers, Developers, IT ManagersOpen Source Test Workshop for QA Testers, Developers, IT Managers
Open Source Test Workshop for QA Testers, Developers, IT ManagersClever Moe
 
Improving developer tester collaboration with microsoft visual studio 2010
Improving developer tester collaboration with microsoft visual studio 2010Improving developer tester collaboration with microsoft visual studio 2010
Improving developer tester collaboration with microsoft visual studio 2010Mohamed Samy
 
Open Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, ManagersOpen Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, ManagersClever Moe
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to productjoeysim
 
Win at life with unit testing
Win at life with unit testingWin at life with unit testing
Win at life with unit testingmarkstory
 
Continuous Integration
Continuous  IntegrationContinuous  Integration
Continuous IntegrationLiyao Chen
 
Gl istqb testing fundamentals
Gl istqb testing fundamentalsGl istqb testing fundamentals
Gl istqb testing fundamentalsPragya Rastogi
 
Devops workshop unit2
Devops workshop unit2Devops workshop unit2
Devops workshop unit2John Willis
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011Marcel Bruch
 
Marcel bruch ide 2.0 ecoop 2011
Marcel bruch ide 2.0 ecoop 2011Marcel bruch ide 2.0 ecoop 2011
Marcel bruch ide 2.0 ecoop 2011ruzannaChitchyan
 
Testy dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w LaravelTesty dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w LaravelLaravel Poland MeetUp
 
Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementChris Sterling
 
01 traditional analytics
01 traditional analytics01 traditional analytics
01 traditional analyticsMeasureWorks
 
Is Advanced Verification for FPGA based Logic needed
Is Advanced Verification for FPGA based Logic neededIs Advanced Verification for FPGA based Logic needed
Is Advanced Verification for FPGA based Logic neededchiportal
 
Ian Agustiawan - Tech Days
Ian Agustiawan - Tech DaysIan Agustiawan - Tech Days
Ian Agustiawan - Tech DaysIan Agustiawan
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flexmichael.labriola
 
Installing and Deploying TestMaker 6
Installing and Deploying TestMaker 6Installing and Deploying TestMaker 6
Installing and Deploying TestMaker 6Clever Moe
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceThomas Zimmermann
 
Tech fuse11 toolingtestingci-vs2010teamcity
Tech fuse11 toolingtestingci-vs2010teamcityTech fuse11 toolingtestingci-vs2010teamcity
Tech fuse11 toolingtestingci-vs2010teamcityBaskin Tapkan
 
Developers Border Line: Unit Testing
Developers Border Line: Unit TestingDevelopers Border Line: Unit Testing
Developers Border Line: Unit TestingSikandar Ahmed
 

Similaire à Teaching and Learning TDD in the Coding Dojo (20)

Open Source Test Workshop for QA Testers, Developers, IT Managers
Open Source Test Workshop for QA Testers, Developers, IT ManagersOpen Source Test Workshop for QA Testers, Developers, IT Managers
Open Source Test Workshop for QA Testers, Developers, IT Managers
 
Improving developer tester collaboration with microsoft visual studio 2010
Improving developer tester collaboration with microsoft visual studio 2010Improving developer tester collaboration with microsoft visual studio 2010
Improving developer tester collaboration with microsoft visual studio 2010
 
Open Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, ManagersOpen Source Test Workshop for CIOs, CTOs, Managers
Open Source Test Workshop for CIOs, CTOs, Managers
 
iPhone App from concept to product
iPhone App from concept to productiPhone App from concept to product
iPhone App from concept to product
 
Win at life with unit testing
Win at life with unit testingWin at life with unit testing
Win at life with unit testing
 
Continuous Integration
Continuous  IntegrationContinuous  Integration
Continuous Integration
 
Gl istqb testing fundamentals
Gl istqb testing fundamentalsGl istqb testing fundamentals
Gl istqb testing fundamentals
 
Devops workshop unit2
Devops workshop unit2Devops workshop unit2
Devops workshop unit2
 
IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011IDE 2.0 & Research at Eclipse - ECOOP 2011
IDE 2.0 & Research at Eclipse - ECOOP 2011
 
Marcel bruch ide 2.0 ecoop 2011
Marcel bruch ide 2.0 ecoop 2011Marcel bruch ide 2.0 ecoop 2011
Marcel bruch ide 2.0 ecoop 2011
 
Testy dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w LaravelTesty dymne, integracyjne i jednostkowe w Laravel
Testy dymne, integracyjne i jednostkowe w Laravel
 
Integrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio ManagementIntegrating Quality into Project Portfolio Management
Integrating Quality into Project Portfolio Management
 
01 traditional analytics
01 traditional analytics01 traditional analytics
01 traditional analytics
 
Is Advanced Verification for FPGA based Logic needed
Is Advanced Verification for FPGA based Logic neededIs Advanced Verification for FPGA based Logic needed
Is Advanced Verification for FPGA based Logic needed
 
Ian Agustiawan - Tech Days
Ian Agustiawan - Tech DaysIan Agustiawan - Tech Days
Ian Agustiawan - Tech Days
 
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in FlexassertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
assertYourself - Breaking the Theories and Assumptions of Unit Testing in Flex
 
Installing and Deploying TestMaker 6
Installing and Deploying TestMaker 6Installing and Deploying TestMaker 6
Installing and Deploying TestMaker 6
 
Quality of Bug Reports in Open Source
Quality of Bug Reports in Open SourceQuality of Bug Reports in Open Source
Quality of Bug Reports in Open Source
 
Tech fuse11 toolingtestingci-vs2010teamcity
Tech fuse11 toolingtestingci-vs2010teamcityTech fuse11 toolingtestingci-vs2010teamcity
Tech fuse11 toolingtestingci-vs2010teamcity
 
Developers Border Line: Unit Testing
Developers Border Line: Unit TestingDevelopers Border Line: Unit Testing
Developers Border Line: Unit Testing
 

Teaching and Learning TDD in the Coding Dojo

  • 1. The Coder’s Dojo Emily Bache emily@bacheconsulting.com http://emilybache.blogspot.com material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 2. Session outline Why should developers test? (slides) What is TDD? (slides) TDD vs Test Last (slides, discussion) How can I learn TDD? (slides) Randori (coding) Experiences leading Coding Dojos (slides, discussion) material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 3. Why should developers Test? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 4. Traditional Testing Strategy: Bug reports Code releases Text Testers Developers The Wall images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 5. Developers are blind to bugs Developers don’t want to break their beautiful creation Subconciously use their knowledge of the implementation to avoid weak spots circa 1940, Paris, Blindfold typing competition (Jhayne, flickr) material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 6. A smart mouse ... material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 7. JUnit “Keep the bar green to keep the code clean” material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 8. Engineering practices (Exploratory) Testing Automated Checks Continuous Integration Automated Build Version Control Friday, 13 May 2011
  • 9. Testing vs Checking Requires a sapient Can be automated human confirms our beliefs to be turns up new true information asks the same question asks new questions as yesterday is exploration and is making sure the learning program doesn’t fail See also Michael Bolton’s article http://www.developsense.com/blog/2009/08/testing-vs-checking/ Friday, 13 May 2011
  • 10. Example - Fitnesse material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 11. Testers and Devs on same team Timebox Frequent communication Working Software Testers Developers The team delivers working, tested software every iteration images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 12. Automated Checks Catch regression errors - Safety net for refactoring Documentation/examples of usage Force internal interfaces/ modules/units material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 13. What is TDD? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 14. Bob Martin’s Laws of TDD Red Refactor Green Don’t write production code unless it is to make a failing unit test pass. Don’t write any more of a unit test than is sufficient to fail. Don’t write any more production code than is sufficient to pass the one failing unit test. http://butunclebob.com/ArticleS.UncleBob.TheThreeRulesOfTdd Friday, 13 May 2011
  • 15. TDD moves Starting Red Analyse Problem Declare & Name Test List Arrange-Act-Assert Guiding Test Satisfy compiler Refactor Green Remove Fake Implement solution Remove Code Smell Fake it (No new functionality) Start over Note new test cases material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 16. TDD moves (starting) Basic analysis of problem Review existing code in area Starting Identify where the new functionality Analyse Problem will be called from Test List Guiding Test Guiding Test (take from story acceptance criteria) Make a list of test cases Move On When: You have an achievable goal & have chosen first test material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 17. TDD moves (get to red) Declare and name a test Red Arrange - Act - Assert (start Declare & Name Arrange-Act-Assert with Assert) Satisfy compiler Just enough Production code to satisfy compiler Move On When: Test code describes missing function, executes, and is Red material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 18. TDD moves (get to Green) Change the production code - implement just enough to make the test pass Green Implement solution Fake it Fake it (if you’re unsure) Start over When all else fails, remove the failing test, get back to green, and write an easier test. Move On When: Tests all execute and are Green material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 19. TDD moves (refactor) Change production code: remove fakes, code smells Refactor Change test code: improve Remove Fake readability Remove Code Smell (No new functionality) Note new test cases Don’t add functionality not required by tests. Note down new test cases on list. Move On When: Code is Clean, tests all execute and are Green material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 20. Why TDD over Test Last? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 21. TDD vs Test Last Write code Red Refactor Green Debug Write tests Friday, 13 May 2011
  • 22. TDD & feedback Writing a failing test tells you: what problem you are solving Red if your SUT requires many collaborators Refactor Green if SUT has an inconvenient API before you commit to an implementation Friday, 13 May 2011
  • 23. TDD & feedback Red Getting to Green: makes you write only just enough functionality Refactor Green Avoid over design & code bloat Friday, 13 May 2011
  • 24. TDD & feedback Red Refactoring happens frequently Refactor Green Many opportunities to improve your design Friday, 13 May 2011
  • 25. TDD - no silver bullet “TDD constrains the problem space we are looking at, as well as provides feedback on how well we are addressing this problem. Of course TDD isn't the only thing imposing constraints on us, nor our only source of feedback.” - David Tchepak From his article http://www.davesquared.net/2011/03/why-learning-tdd-is-hard-and-what-to-do.html Friday, 13 May 2011
  • 26. Checking & Testing Write code Red Refactor Green Debug Write tests TDD -> more like Testing Test-Last -> more like Checking TDD is a lot more fun to do Friday, 13 May 2011
  • 28. Should developers do TDD? Do you test your own code? Do you need separate testers? What can developers do to influence the long term project velocity? (give examples) Do you think it matters whether you write the tests first or last? Friday, 13 May 2011
  • 29. How can I learn TDD? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 30. read books, blogs, code... other people’s experience and wisdom read code, discuss code, analyse code - that you didn’t write yourself material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 31. Pair Programming Attribution: flickr user Lisamarie Babik material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 32. The Coder’s Dojo • The dojo is the place where you go every week to practice and learn karate see http://codingdojo.org Friday, 13 May 2011
  • 33. Code Kata: TDD moves ‘Pragmatic’ Dave Thomas material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 34. KataRomanNumerals Write a program to convert normal numbers to roman numerals: 1 --> I 10 --> X 7 --> VII material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 35. KataMinesweeper Write a program that outputs the same field including the hint numbers, like this *... *100 .... 2210 .*.. 1*10 .... 1110 material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 36. What happens at a dojo meeting? 3 – 10 programmers meet as equals do some coding together practice TDD moves Image courtesy Danilo Sato material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 37. Prepared Kata One person presents their best solution They have practiced it many times. Group contributes feedback and questions material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 38. Screencasts Watching someone else code music or commentary material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 39. Randori Everyone contributes Split into pairs, or work all together on a projector Ping pong TDD or time limits material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 40. Dojo Rules The person with the key- board decides what to type Ask for help if stuck, offer help if asked Be strict about TDD Offer design criticism on a green bar material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 41. Test-Infected You’re writing some code using TDD, awkward and slow and unfamiliar. You refactor it. Some tests fail unexpectedly! You realize the tests saved you That feeling of safety You want more of that! material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 42. Importance of safe Step outside normal hierarchy Mistakes expected Moderation/leadership important material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 43. Dojo Discussions The code you write in the dojo leads to concrete discussions PartnerData newPartner = new PartnerData("Disney"); AddressData address = new AddressData("24 Stars Ave", "91210", "Hollywood", "USA")); newPartner.setAddress(address); UserData contact = new UserData("Emily", "emily@test.com", "031 123456"); newPartner.setContactPerson(contact); Friday, 13 May 2011
  • 44. Dojo Discussions PartnerData newPartner = new PartnerData("Disney") .withAddress( new AddressData("24 Stars Ave", "91210", "Hollywood", "USA")) .withContactPerson( new UserData("Emily", "emily@test.com", "031 123456")); Is this better? Cleaner? Friday, 13 May 2011
  • 45. The Coders Dojo Emily Bache emily@bacheconsulting.com http://emilybache.blogspot.com material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 46. Experiences material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 47. Different kinds of groups language user groups with colleagues in the same team open/free taught course agile coach leading course at a client material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 48. Language user groups .js Python, Ruby, JavaScript, Scala groups Small numbers of skilled enthusiasts Dojo meetings are fun! material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 49. With colleagues Stop work a little early, dojo in evening Boss sponsors with time & pizza Fun, community building material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 50. Open/free taught course JDojo@Gbg 5 sessions announced in advance as a course 4pm - 6pm (may count as work) Host company uses it for marketing & recruitment material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 51. Agile coach leads dojo at client Raise competency in whole dept/team Discuss: what is clean code for this team? “This would never work on our code” images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 52. What past participants have learnt material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 53. Survey of various dojos 29 responses, most have been to more than one kind material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 54. Based on 4-5 meetings... Roughly how many dojo meetings have you been to? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 55. Well received Would you encourage others who want to improve their programming skills to come to dojo meetings? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 56. Practicing at home? every day [0] a few times each month [2] Have you ever practiced a Kata by yourself at home? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 57. We asked about: TDD Mocking Refactoring IDE & frameworks Language skills Image attribution: Flickr user crashmaster material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 58. Language Skill Scale from 1-5 beginner - expert How comfortable were/are you with the programming language? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 59. Comfortable with IDE Scale from 1-5 beginner - expert How comfortable were/are you with the IDE-editor? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 60. Mock objects Scale from 1-5 beginner - expert How good were/are you at using Mock objects? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 61. Refactoring Scale from 1-5 beginner - expert How good at refactoring were/are you? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 62. Write Unit Tests Often? Scale from 1-5 never - daily How often did/do you write unit tests? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 63. Test-Driven Development Scale from 1-5 beginner - expert How good at Test-Driven Development were/are you? material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 64. How to get started material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 65. You could join a dojo! Lots of them exist already It's fun, rewarding and you get to meet new people Or, hire a coach to run one at your company! Image attribution: Flickr user lumaxart material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 66. You could start a dojo! || + + tools: meetup.com, google groups persuade a friend to help organize Get someone to pay for pizza! images from iconspedia.com: Asher, DaPino Webdesign, Zeus Box, MazenI77, Harwen, Flahorn, eponas-deeway material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 67. Online Resources http://codingdojo.org http://codingkata.org http://codersdojo.org http://cyber-dojo.com http://katacasts.com http://katacatalog.com material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 68. Still trying stuff out... give out kata in advance? what to do with code afterwards? groups for beginners and different groups for experts? if/when to bring in legacy code what form to use when? (prepared, randori, pairs etc) material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011
  • 69. The Coders Dojo Emily Bache emily@bacheconsulting.com http://emilybache.blogspot.com material copyright Bache consulting, emily@bacheconsulting.com Friday, 13 May 2011