Introduction of Agile programmer SkillsAgile Fundamental Skill Set  Produced by Tsuyoshi Ushio
Agile Fundamental Skill SetIn this presentation, you will …	•  learn about Agile technical skill set in 90 min.•  Know abo...
Tsuyoshi Ushio•    Consultant, Samurai of Agile•    Agile, OO, Business Analysis , Project Manager•    2001 - 2005 Agile P...
Mission #1 Mandatory Skills (5min)Discuss	  with	  Team	  members	  about	  …	   ・What	  skills	  do	  you	  need	  as	  a...
What is the GOAL of software development?                 Our	  highest	  priority	  is	  	               to	  sa#sfy	  th...
Risks  Schedule	  Slips	         Project	  Canceled	           Defect	  rate	                                             ...
Cost of change curve•  The cost of fixing errors increases exponentially later they are   detected the development lifecycl...
Serial                     It	  works	  well	  for	  buildings	      Requirements	   	  	  	  but	  isn’t	  proper	  to	  ...
Agile Development                             Agile Process	                                                              ...
Roles (Scrum)                                                                                                 Scrum	  Mast...
Why?11
I started        doing
      Agile in12       Japan
10 years ago13
Agile now      became      Popular14
But15
Now, Agile is popular
          in Japan but…      • Shallow Understanding of Agile      • Poor Engineering practices     ...
17
Some people said
      Agile was Lame!18
I still believe 
  Agile is AWESOME!19                       http://terrapin21.s502.xrea.com/?p=153
We can never go back to the pasth?p://www.fanpop.com/clubs/back-­‐to-­‐the-­‐future/images/29447185/Ptle/back-­‐future-­‐w...
I want see you succeed in           running projects
            using Agile21
Get the Value!     Chance to get the
         Competence!           To Vietnam!22
Agile Practice Overview                                          Goal	                                    Business	  Value...
Five Knowledge Areas1. Designing & Programming2. Testing3. Team and behaviors4. Structuring Work5. Environment
1. Designing & Programming           TDD	  (Test	  Driven	  Development)	         Refactoring	               Good	  Design...
Test Driven Development•      Test-driven development is a software development technique that       uses really short dev...
Refactoring•      Refactoring is the art of safety improving the design of existing code.                             Plan...
TDD / Refactoring BooksTest	  Driven	  Development:	  	     Refactoring:	  Improving	  the	  Design	  	                  R...
Demo
Good Design•    Agile Programmer has an ability to think some good designs.         TDD	  /	  Refactoring	                ...
Simple DesignIf you keep it simple, you will get …    Easy to change, Less time, Easy to Understand it.    We can t predic...
Clean ProgrammingPoorly written code is hard to understand and hard to evolve,making code base more expensive to maintain....
Design Principle / PatternDesign principle and pattern will solve common or difficult design   problems.                    ...
Advanced	                                         ArchitectureThe software architecture of a computing system is the set o...
Learn and PracticeYou	  can	  prac#ce	  and	  share	  …	  The	  4	  rules	  of	  simple	  design,	  OO	  principles,	  TDD...
2. Testing  Acceptance	  TesPng	              Programming	  TesPng	                       SoQware	  TesPng	               ...
Advanced	                                                                  Software Testing        A development team shou...
3. Team and Behavior                                  CollecPve	  	            Team	          CollaboraPon	               ...
Communication DesignThe team should have UML Modeling skill.You may use to communicate with your team mate and read books....
Visualize             h?p://www.flickr.com/photos/ownpageone/2311074406/in/pool-­‐538058@N21	                              ...
Analog Tools                           User	  Story	  Mapping	            h?p://www.infoq.com/jp/news/2010/04/scrum-­‐gath...
Product Backlog & Burndown                                                                                           Burnd...
Pivotal Tracker (Story Management)                                                            h?p://pm-­‐soQware.org/web-­...
Collective Ownership•  Everyone can change code.                        Private	  Ownership	                              ...
Pair Programming   •       Write codes by a pair using same machine.                                                      ...
Pair Programmingh?p://pognowound.wordpress.com/2011/02/21/o-­‐segredo-­‐do-­‐pair-­‐programming/
4. Structuring Work      FuncPon-­‐Based	                                  Planning	       Development	         Story	  Ca...
Story CardA user story is a chunk of functionality that is of value to the customer.As a developer you should have an abil...
BacklogThe product backlog is an ordered list of user stories that is maintainedfor a product.Story	  ID	     Story	      ...
EstimatingEstimate user stories on the product backlog using relative estimation.                                      Pla...
Relative Estimation
PlanningRelease Planning allocates user stories to releases and sprints by these estimate.The big plan helped us decide th...
5. Environment                         Leveraging	  tools	                                           ConPnuous	  	        ...
Version Control•    Version Control System is a software that has the ability to manage     and track changes that occur t...
Continuous Integration•       Continuous integration is a software development practice where        members of a team int...
ReferenceICAgile	  exists	  to	  support	  educaPon	  in	  the	  agile	  space.	  Use	  ICAgile’s	  definiPve	  learning	  ...
Sometimes, we have other roles• Project	  Manager	  • Architect	  • Business	  Analyst	  • Tester
Mission #2 Retrospective (5min)Discuss	  with	  Team	  members	  about	  …	  ・What	  skills	  does	  an	  agile	  programm...
Advanced
Next Steps       Advanced	Continuous Delivery     Agile UX Management 3.0     DevOps   Lean Start Up
Case	  Study
h?p://www.groovenauts.jp
Daily Scrum (via Skype)
Planning Poker (Estimation)
Task Planning / Iteration / Share
Share the Architecture   Advanced
Share the Architecture   Advanced
Pair Programming
Agile Management Tool
CI TV  Burn down Chart       (Cacoo)	Monitoring
Facility with bar counter
EnvironmentLanguage             : RubyTesting               :Rspec/CucumberFramework            : Ruby on RailsDBMS       ...
Upcoming SlideShare
Loading in …5
×

Agile Fundamental Skill Set

3,037 views

Published on

Agile Fundamental Skill Set

  1. 1. Introduction of Agile programmer SkillsAgile Fundamental Skill Set Produced by Tsuyoshi Ushio
  2. 2. Agile Fundamental Skill SetIn this presentation, you will … •  learn about Agile technical skill set in 90 min.•  Know about book recommendations.•  Watch demonstration of TDD.What will you do? •  Make some teams (4 people in each team)•  Think about important agile skills and build your future skill set.•  Write your ideas and share these.Ranking Everybody must have A Team should have A Team may have
  3. 3. Tsuyoshi Ushio•  Consultant, Samurai of Agile•  Agile, OO, Business Analysis , Project Manager•  2001 - 2005 Agile Programmer, PM , Join Community(XP-Jug in Japan)•  2003 Agile2003, wrote OO/Agile Best Seller Book in Japan•  2006 - 2009 Consultant•  2009 CEO of SimpleArchitect•  2011 Established E-Agility(Community)•  2011 Agile2011 Conference Speaker (Salt Lake City)•  Vocalist of Za Michael.
  4. 4. Mission #1 Mandatory Skills (5min)Discuss  with  Team  members  about  …   ・What  skills  do  you  need  as  an  agile  programmer?   Please  share  your  team’s  opinions.  Discuss  and  write  down  and  share.
  5. 5. What is the GOAL of software development? Our  highest  priority  is     to  sa#sfy  the  customer     through  early  and  con#nuous  delivery   Of  valuable  so5ware. Principles  behind  the  agile  manifesto   h?p://agilemanifesto.org/principles.html
  6. 6. Risks Schedule  Slips Project  Canceled Defect  rate Business  System  goes  sour False  feature  rich misunderstood Staff  turnover Embrace  Change   Con#nuous  Delivery Extreme  Programming  Explained
  7. 7. Cost of change curve•  The cost of fixing errors increases exponentially later they are detected the development lifecycle.•  If we try it to be flat, what would happen in a software development. Serial Agile Cost Cost Time Time h?p://www.agilemodeling.com/essays/costOfChange.htm 7
  8. 8. Serial It  works  well  for  buildings   Requirements      but  isn’t  proper  to  soQware  development. Design ImplementaPon Test 8
  9. 9. Agile Development Agile Process A sprint is a period of time which specific work 1 – 4 weeks has to be completed and made ready for review. Release
 Planning Sprint #1 Sprint #2 Spring #3 ・・・ Decide Sprint Scope Potentially Shippable Product Sprint Review Planning Retrospectives Development Kaizen 1st Day Last Day 9
  10. 10. Roles (Scrum) Scrum  Master is  accountable  for     removing  impediments  to     the  ability  of  the  team  to  deliver  the  sprint.     • Ensures  the  team  is  fully  funcPonal  and  producPve   • Shields  from  external  interferences   • Ensures  the  process  is  followed   Product  Owner Development  Team Is  accountable  for   Is  responsible  for   Ensuring  that  the  team  delivers   Delivering  poten#ally  shippable  product    value  to  business.    increments  at  the  end  of  each  sprint.     • Try  to  realize  the  sprint  goal   • Defines  the  feature  of  the  product     • Organizes  and  manages  itself  and  its  work   • Decides  on  release  date  and  content   • Review  work  results  with  the  Product  Owner   • PrioriPzes  features  according  to  market  value   • Cross-­‐funcPonal,  5  –  9  members   • Accept  or  rejects  work  results  10
  11. 11. Why?11
  12. 12. I started doing
 Agile in12 Japan
  13. 13. 10 years ago13
  14. 14. Agile now became Popular14
  15. 15. But15
  16. 16. Now, Agile is popular
 in Japan but… • Shallow Understanding of Agile • Poor Engineering practices • Don’t care about Prerequisites of Agile practices16
  17. 17. 17
  18. 18. Some people said
 Agile was Lame!18
  19. 19. I still believe 
 Agile is AWESOME!19 http://terrapin21.s502.xrea.com/?p=153
  20. 20. We can never go back to the pasth?p://www.fanpop.com/clubs/back-­‐to-­‐the-­‐future/images/29447185/Ptle/back-­‐future-­‐wallpapers-­‐photo
  21. 21. I want see you succeed in running projects
 using Agile21
  22. 22. Get the Value! Chance to get the
 Competence! To Vietnam!22
  23. 23. Agile Practice Overview Goal Business  Value   Customer  SaPsfacPon   Market  CreaPon CollaboraPon     Team   Technical  PracPce   Scrum   Engineering  pracPce  (XP)   VisualizaPon   ConPnuous  IntegraPon   RetrospecPve   ConPnuous  Delivery   IteraPon   Automated  Build  /  Test  /  Deploy  Daily  Standup  MeePng   Version  Control   Human  /  Mind   TDD  /  Refactoring   Reference  this  blog  and  customize  it.   h?p://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leQwing-­‐of-­‐agile.html
  24. 24. Five Knowledge Areas1. Designing & Programming2. Testing3. Team and behaviors4. Structuring Work5. Environment
  25. 25. 1. Designing & Programming TDD  (Test  Driven  Development) Refactoring Good  Design Refactoring and Good Design support TDD
  26. 26. Test Driven Development•  Test-driven development is a software development technique that uses really short development cycles to incrementally design your software. Test  Driven  Development NoPce  :  you  should  not  execute  add  funcPon  and  refactoring  on  the  same  Pme. Write Test Fail Write Code Success Refresh the Design Refactoring 26
  27. 27. Refactoring•  Refactoring is the art of safety improving the design of existing code. Planed  Design EvoluPonal  Design AQer  the  design  ,  implement  it. Small  design  ,Small  implementaPon,  small  refactoring. design Design Programming Add  funcPon   Refactoring Add  tests Before AQer • If  the  soQware  design  changes,  the  design  is  gegng  worse.   • If  the  soQware  design  changes,  the  design  is  sPll  smart.  • Cannot  embrace  change   • Embrace  change  • It  takes  too  much  Pme  for  analyze  and  design.   • It  takes  small  amount  of  Pme  for  analyze  and  design.   Point          1.  Basic  skill  of  design  is  same.          2.  Automate  Test          3.  Learn  about  Refactoring  catalog 27
  28. 28. TDD / Refactoring BooksTest  Driven  Development:     Refactoring:  Improving  the  Design     Refactoring  Workbook  By  Example   of  ExisPng  Code   William  C.  Wake  (2003) Kent  Beck  (2002) MarPn  Fowler  ,  Kent  Beck,  John  Brant,     William  Opdyke,  Don  Roberts(1999) 28
  29. 29. Demo
  30. 30. Good Design•  Agile Programmer has an ability to think some good designs. TDD  /  Refactoring Simple  Design Design  Principles   Clean  Programming /  Pa?erns Architecture 30
  31. 31. Simple DesignIf you keep it simple, you will get … Easy to change, Less time, Easy to Understand it. We can t predict the future XP  Simplicity  Rules Run  all  the  tests. Express  every  idea  that  we  need  to  express Say  everything  Once  And  Only  Once Has  no  superfluous  parts Extreme  Prgramming  Explained:        Embrace  Change  –  Kent  Beck h?p://c2.com/xp/XpSimplicityRules.html 31 OOP  (Object  Oriented  Programming)
  32. 32. Clean ProgrammingPoorly written code is hard to understand and hard to evolve,making code base more expensive to maintain. Avoid  Generic  Names  Like    tmp  and  retval var euclidean_norm = function (v) { for (var i = 0; I < v.length; i += 1) retval += v[i] + v[i]; return Math.sqrt(retval); }; The  Art  of  Readable  Code:DusPn  Boswell,  Trevor  Foucher   The  Art  of  Readable  Code:   DusPn  Boswell,  Trevor  Foucher   Instead  of  retval  you  should  use  sum_squares   Because  it  would  show  the  meaning  of  the  variable  32
  33. 33. Design Principle / PatternDesign principle and pattern will solve common or difficult design problems. Open-­‐Closed  Principle Client Server Agile  SoQware  Development:   Robert.  C.  MarPn   <<interface>>   Client Client  Interface Server An  Object  Oriented  Principle:   Modules  and  funcPons  should  be  open  for  extension  33 But  closed  for  modificaPons.     Head  First  Design  Pa?erns:   Elisabeth  Freeman,  Eric  Freeman,   Bert  Bates,  Kathy  Sierra,  Elisabeth  Robson  
  34. 34. Advanced ArchitectureThe software architecture of a computing system is the set of structuresneeded to reason about the system, which comprise software elements,Relations among them, and properties of both. Structures  sample Just  Enough  SoQware  Architecture   George  H.  Fairbanks  h?p://www.uml-­‐diagrams.org/package-­‐diagrams-­‐examples.html h?p://adrianmejia.com/blog/2011/08/11/ruby-­‐on-­‐rails-­‐architectural-­‐design/ h?p://www.ibm.com/developerworks/raPonal/tutorials/rt-­‐umlprofiles/secPon2.html h?p://www.codeproject.com/ArPcles/22769/IntroducPon-­‐to-­‐Object-­‐Oriented-­‐Programming-­‐Concep It  contains  not  only  applicaPon  architecture,  but  also  include   Pa?erns  of  Enterprise   network,  infra  structure  architecture.   ApplicaPon  Architecture   MarPn  Fowler  34 You  can  learn  architecture  by  learning  open  source  frameworks  
  35. 35. Learn and PracticeYou  can  prac#ce  and  share  …  The  4  rules  of  simple  design,  OO  principles,  TDD,  FuncPonal  programming,  ConPnuous  Refactoring  by   Coderetreat h?p://mybroadband.co.za/news/soQware/65218-­‐coderetreat-­‐ programming-­‐event-­‐grows-­‐in-­‐sa.html h?p://coderetreat.org
  36. 36. 2. Testing Acceptance  TesPng Programming  TesPng SoQware  TesPng   (Engineering)  Learn Software Testing
  37. 37. Advanced Software Testing A development team should cover these knowledge areas. Automated   Business  Facing Manual &  Manual Exploratory  TesPng   Func#onal  Tests   Scenarios   Story  Tests  SupporPng  the  Team Usability  TesPng   Prototypes   CriPque  Product Acceptance  Test   SimulaPons   Alpha  /  Beta   A  PracPPoner’s  Guide  to     SoQware  Test  Design   Lee  Copeland Performance  TesPng   Unit  Tests   Load  TesPng   Component  Tests   Security  TesPng   “ility”  TesPng   Automated Tools Technology  Facing Agile  TesPng  Quadrants   Agile  TesPng:   A  PracPcal  Guide  for  Testers    and  Agile  Team   37 Agile  TesPng  :  A  PracPcal  Guide  for  Testers  and  Agile  Team  Lisa  Crispin,  Janet  Gregory Lisa  Crispin,  Janet  Gregory
  38. 38. 3. Team and Behavior CollecPve     Team   CollaboraPon Accountability AcPvity CommunicaPon   CollecPve   Visualize   Design   Ownership  Learn Software Testing
  39. 39. Communication DesignThe team should have UML Modeling skill.You may use to communicate with your team mate and read books. h?p://trelford.com/blog/category/UML.aspx UML  DisPlled  (3rd  EdiPon)   UML  Sequence  Diagram   MarPn  Fowler   UML  Class  Diagram (Wihteboard) 39
  40. 40. Visualize h?p://www.flickr.com/photos/ownpageone/2311074406/in/pool-­‐538058@N21 h?p://rules.ssw.com.au/Management/RulesToSuccessfulProjects/Pages/PairWork.aspx h?p://www.flickr.com/photos/improveit/1470213987/sizes/o/in/photostream/
  41. 41. Analog Tools User  Story  Mapping h?p://www.infoq.com/jp/news/2010/04/scrum-­‐gathering-­‐comm-­‐of-­‐pracPce SoQware  Kanban Burn  Down  Chart h?p://www.infoq.com/jp/arPcles/agile-­‐kanban-­‐boards
  42. 42. Product Backlog & Burndown Burndown  chart Product  Backlog h?p://agilesoQwaredevelopment.com/files/aposPmages/Scrum/simple-­‐product-­‐backlog.png Release  burndown  chart
  43. 43. Pivotal Tracker (Story Management) h?p://pm-­‐soQware.org/web-­‐based/pivotal-­‐tracker ?p://depth-­‐first.com/arPcles/2010/11/19/building-­‐chemwriter-­‐2-­‐pivotal-­‐tracker-­‐for-­‐project-­‐management/
  44. 44. Collective Ownership•  Everyone can change code. Private  Ownership CollecPve  Ownership Every  code  is  maintained  by  one  person Everyone  can  maintain  every  code. Code   Create/change A Code   Create/change Code   Code   A B B Code   Code   Create/change C C Repository Before AQer • If  the  person  leaves  this  secPon,  no  one  can  change  it   • Reduce  the  risk  of  leaving   • Quality  of  Code  is  relaPvely  bad   • Gain  code  quality,  everyone  check  out  the  code   • Only  the  author  can  understand  the  code   • Every  code  will  be  read  by  other  person   Point          1.  Version  Control  System          2.  Automated  Test          3.    The  team  has  CollaboraPve  mood   44
  45. 45. Pair Programming •  Write codes by a pair using same machine. Use 1PC by 2 people Someone who write code(Driver)
 Someone who navigates (Navigator) Change the role between Driver And Navigator by 10 min. The roles should be exchanged at the fixed interval • Pair  programming  increate  the  quality,  it  reduces  setback.  • You  don’t  execute  pair  programming  ,  every  Pme. 45
  46. 46. Pair Programmingh?p://pognowound.wordpress.com/2011/02/21/o-­‐segredo-­‐do-­‐pair-­‐programming/
  47. 47. 4. Structuring Work FuncPon-­‐Based   Planning Development Story  Card   EsPmaPng  and   Back  Log   Planning  Manage It
  48. 48. Story CardA user story is a chunk of functionality that is of value to the customer.As a developer you should have an ability to write story cards. User  Story A user can search for books by author, title or ISBN number. User  Stories  Applied   User  Stories  Applied:        For  Agile  SoQware  Development   Story  must  be  understandable  to  the  customer.   Mike  Corn   A  user  story  is  nothing  more  than  an  agreement  that  the     customer  and  developers  will  talk  together  about  a  feature  48
  49. 49. BacklogThe product backlog is an ordered list of user stories that is maintainedfor a product.Story  ID Story Es#mate Sprint  #1 1 As  a  swimmer,  I  can  see  a  line  chart  of  my  Pme  for  a   3 parPcular  event. 2 As  a  coach,  I  can  see  a  line  chart  showing  the  progress  over   8 the  season  of  all  of  my  swimmers  in  a  parPcular  event. 3 As  a  swimmer,  I  can  see  a  pie  chart  showing  how  many  first,   5 second,  third,  and  lower  places  I’ve  finished. 4 As  a  coach,  I  can  see  a  text  report  showing  each  swimmer’s   2 best  Pme  in  each  event Agile  EsPmaPng  and  Planning   Mike  Corn  Sprint  #2 5 As  a  coach,  I  can  upload  meet  result  from  a  file  and  Planning  rom   Agile  EsPmaPng   exported  f 3 the  Pming  system  used  at  the  meet List  of  funcPonality,  technology,  issues   Emergent,  prioriPzed,  esPmated  49 One  list  per  product  
  50. 50. EstimatingEstimate user stories on the product backlog using relative estimation. Planning  Poker Agile  EsPmaPng  and  Planning   Mike  Corn   EsPmate  Size  =    0,  1,  2,  3,  5,  8,  13,  20,  40  and  100.     Fetch  a  user  story  which  seems  smallest  size  and  set  size  to  2.   Compare  user  stories  with  others  and  define  these  size.  50
  51. 51. Relative Estimation
  52. 52. PlanningRelease Planning allocates user stories to releases and sprints by these estimate.The big plan helped us decide that it wasn t patently stupid to invest in the project. Release  Planning Coarse  Grained  Planning Sprint#1 Sprint#2 Sprint#3 Sprint#4    … Sprint#1 Sprint#2 Sprint#3 Sprint#4    … Story  1 Story  2 PO Story  3 Subsystem  B Subsystem  C Story  4 Story  4 Story  5 Dev Subsystem  A Subsystem  B We  should  make  a  big  plan.  But  we  must  understand  it  is  not  stable  at  all.   A  big  plan  is  just  an  assumpPon  of  the  development,  never  promise  it.   Coarse  Grained  Planning  helps  Product  Owner.  52
  53. 53. 5. Environment Leveraging  tools ConPnuous     Version  Control   IntegraPon  Sometimes tools helps to be Agile
  54. 54. Version Control•  Version Control System is a software that has the ability to manage and track changes that occur to any document (incl Source Code) that is in a project. Version  Control  with  Git:   Powerful  tools  and  techniques   For  collaboraPve  soQware  development   Jon  Leliger,  Ma?hew  McCullough  54
  55. 55. Continuous Integration•  Continuous integration is a software development practice where members of a team integrate their work frequently, usually each person integrates at least daily ‒ leading to multiple integrations per day.•  Each integration is verified by an automated build to detect integration error as quickly as possible. CI  acPviPes Report   1.  Check  out Repository 2.Automated  Build Send E-mail 3.Automated  test Visualize the problem 4.Test  Reports Test Reports Tool  Examples CI :Jenkins xUnit : rspec Automated Build :rake Automated Test: rake55
  56. 56. ReferenceICAgile  exists  to  support  educaPon  in  the  agile  space.  Use  ICAgile’s  definiPve  learning  roadmap  to  find  accredited  courses  that  recognize    students  as  they  progress  along  their  specialty  paths.   h?p://www.icagile.com/
  57. 57. Sometimes, we have other roles• Project  Manager  • Architect  • Business  Analyst  • Tester
  58. 58. Mission #2 Retrospective (5min)Discuss  with  Team  members  about  …  ・What  skills  does  an  agile  programmer  need?  ・Which  skills  will  you  learn  aQer  back  your  office?  ・What  good  knowledge  have  you  got  in  this  lesson?   Please  share  your  team’s  opinions.  Discuss  and  write  down  and  share.
  59. 59. Advanced
  60. 60. Next Steps Advanced Continuous Delivery Agile UX Management 3.0 DevOps Lean Start Up
  61. 61. Case  Study
  62. 62. h?p://www.groovenauts.jp
  63. 63. Daily Scrum (via Skype)
  64. 64. Planning Poker (Estimation)
  65. 65. Task Planning / Iteration / Share
  66. 66. Share the Architecture Advanced
  67. 67. Share the Architecture Advanced
  68. 68. Pair Programming
  69. 69. Agile Management Tool
  70. 70. CI TV Burn down Chart (Cacoo) Monitoring
  71. 71. Facility with bar counter
  72. 72. EnvironmentLanguage : RubyTesting :Rspec/CucumberFramework : Ruby on RailsDBMS : MongoDBManagement : Pivotal TrackerShare : CacooVersion Control : Git HubCI : JenkinsChat/Tel Conference : Skype

×