ºÝºÝߣ

ºÝºÝߣShare a Scribd company logo
¡°³§¾±³¾±è±ô±ð¡±
                          Design and Testing
               by @zspencer for @rubytaiwan on May 31, 2011
               http://www.zacharyspencer.com




                                                 @rubytaiwan
Wednesday, June 1, 2011
WTF is ¡°SIMPLE?!¡±


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Everything is in my
            language of choice
                                                          It¡¯s all in a single method!
                Took the fewest
                  keystrokes!

                                                          It¡¯s aesthetically clean!

                      I just like it!


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Maximizing the amount
                  of work *not* done

                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
For Who?
                   ?      The Users/Customers

                   ?      The Stakeholders/Sponsors

                   ?      The Team/You

                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Your Users




                           http://www.?ickr.com/photos/57634636@N00/5134293410/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Your Stakeholders




                             http://www.?ickr.com/photos/the_war?eld/4992455554/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Your Team




                          http://www.?ickr.com/photos/reinholdbehringer/1073165898/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Ok. How?


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Radiate Information
               Center Design On The User
               Write Changeable Code


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Radiate Information
               Center Design On The User
               Write Changeable Code


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Ok. How?


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
4 Rules for
                                 Simple Design
                  * Pass All Tests
                  * Duplicate No Behavior or Con?guration
                  * Express Intent Clearly and Consistently
                  * Have No Super?uous Parts



                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
All Tests Must Pass!


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Automated Story Tests




                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Automated Unit Tests




                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Exploratory Testing




                              http://www.?ickr.com/photos/rogersmith/4947063094/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
No Duplication




                              http://www.?ickr.com/photos/vermininc/3327459367/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Smell Yer Code!




                                 http://www.?ickr.com/photos/spine/2076612679/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Duplication Smells!
 http://rubylearning.com/blog/2010/11/08/how-does-your-code-smell/


                   ?      Reinvented Wheel                  ?   Data Classes

                   ?      Combinatorial Explosion           ?   Procedural Code

                   ?      Middle Man                        ?   Repeated Value

                   ?      Greedy Methods/                   ?   Big Classes
                          Modules


                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Express Intent
                  Clearly + Consistently!




                               http://www.?ickr.com/photos/spacelion/263948300/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Reveal Why




                             http://www.?ickr.com/photos/freeparking/2247693823/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
(Re)Name Stuff




                            http://www.?ickr.com/photos/cinderellas_blog/255282013/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Extract and Move Stuff




                              www.?ickr.com/photos/22746515@N02/2989699245/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Some More Smells!
 http://rubylearning.com/blog/2010/11/08/how-does-your-code-smell/


                   ?      Uncommunicative Name              ?   Global Variables

                   ?      Type Included in Name             ?   Dynamic Code Creation

                   ?      Inconsistent Names                ?   Comments

                   ?      Long Parameters                   ?   Complicated Booleans




                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
No Super?uous Parts!




                                http://www.?ickr.com/photos/altuwa/4530651461/
                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
Photo Credits
                   ?      Kids Using iPads: Kathy Cassidy
                                                            ?   Walmart Storefront: Walmart
                                                                Corporate
                   ?      The Boardroom: The War?eld

                                                            ?   Breakdancer: Gueorgui
                   ?      Software Team at Work: Reinhold
                          Behringer
                                                            ?   Alfred Lord Tennyson: freeparking

                   ?      Passing Test: Davey Brown
                                                            ?   The Pelican: Cindy Andrie

                   ?      Spy Plane: Roger Smith
                                                            ?   Earth Mover: Bert Kaufmann

                   ?      Octuplet Consumers:Vermin Inc.
                                                            ?   Rube Goldberg Machine: Sebastian
                                                                B
                   ?      Smelling Wine: Rick

                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011
More Learnin¡¯
                   ?      A List of Books and Articles on Simple Design and
                          Testing: http://bit.ly/simple_design_and_testing

                   ?      Other Resources I Think Are Awesome (Broken Down by
                          Speciality): http://bit.ly/zspencer_recommends

                   ?      Pillars Free Webinars: http://pillartechnology.com/content/
                          webinarbrowse

                   ?      Other Free Pillar Resources: http://pillartechnology.com/
                          page/agilelinks

                     @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011


Wednesday, June 1, 2011

More Related Content

Simple design and Testing by @zspencer for @rubytaiwan

  • 1. ¡°³§¾±³¾±è±ô±ð¡± Design and Testing by @zspencer for @rubytaiwan on May 31, 2011 http://www.zacharyspencer.com @rubytaiwan Wednesday, June 1, 2011
  • 2. WTF is ¡°SIMPLE?!¡± @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 3. Everything is in my language of choice It¡¯s all in a single method! Took the fewest keystrokes! It¡¯s aesthetically clean! I just like it! @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 4. Maximizing the amount of work *not* done @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 5. For Who? ? The Users/Customers ? The Stakeholders/Sponsors ? The Team/You @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 6. Your Users http://www.?ickr.com/photos/57634636@N00/5134293410/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 7. Your Stakeholders http://www.?ickr.com/photos/the_war?eld/4992455554/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 8. Your Team http://www.?ickr.com/photos/reinholdbehringer/1073165898/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 9. Ok. How? @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 10. Radiate Information Center Design On The User Write Changeable Code @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 11. Radiate Information Center Design On The User Write Changeable Code @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 12. Ok. How? @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 13. 4 Rules for Simple Design * Pass All Tests * Duplicate No Behavior or Con?guration * Express Intent Clearly and Consistently * Have No Super?uous Parts @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 14. All Tests Must Pass! @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 15. Automated Story Tests @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 16. Automated Unit Tests @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 17. Exploratory Testing http://www.?ickr.com/photos/rogersmith/4947063094/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 18. No Duplication http://www.?ickr.com/photos/vermininc/3327459367/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 19. Smell Yer Code! http://www.?ickr.com/photos/spine/2076612679/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 20. Duplication Smells! http://rubylearning.com/blog/2010/11/08/how-does-your-code-smell/ ? Reinvented Wheel ? Data Classes ? Combinatorial Explosion ? Procedural Code ? Middle Man ? Repeated Value ? Greedy Methods/ ? Big Classes Modules @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 21. Express Intent Clearly + Consistently! http://www.?ickr.com/photos/spacelion/263948300/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 22. Reveal Why http://www.?ickr.com/photos/freeparking/2247693823/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 23. (Re)Name Stuff http://www.?ickr.com/photos/cinderellas_blog/255282013/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 24. Extract and Move Stuff www.?ickr.com/photos/22746515@N02/2989699245/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 25. Some More Smells! http://rubylearning.com/blog/2010/11/08/how-does-your-code-smell/ ? Uncommunicative Name ? Global Variables ? Type Included in Name ? Dynamic Code Creation ? Inconsistent Names ? Comments ? Long Parameters ? Complicated Booleans @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 26. No Super?uous Parts! http://www.?ickr.com/photos/altuwa/4530651461/ @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 27. Photo Credits ? Kids Using iPads: Kathy Cassidy ? Walmart Storefront: Walmart Corporate ? The Boardroom: The War?eld ? Breakdancer: Gueorgui ? Software Team at Work: Reinhold Behringer ? Alfred Lord Tennyson: freeparking ? Passing Test: Davey Brown ? The Pelican: Cindy Andrie ? Spy Plane: Roger Smith ? Earth Mover: Bert Kaufmann ? Octuplet Consumers:Vermin Inc. ? Rube Goldberg Machine: Sebastian B ? Smelling Wine: Rick @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011
  • 28. More Learnin¡¯ ? A List of Books and Articles on Simple Design and Testing: http://bit.ly/simple_design_and_testing ? Other Resources I Think Are Awesome (Broken Down by Speciality): http://bit.ly/zspencer_recommends ? Pillars Free Webinars: http://pillartechnology.com/content/ webinarbrowse ? Other Free Pillar Resources: http://pillartechnology.com/ page/agilelinks @zspencer -- http://www.zacharyspencer.com -- @rubytaiwan May 31, 2011 Wednesday, June 1, 2011