SlideShare una empresa de Scribd logo
1 de 72
Descargar para leer sin conexión
Introduction of Agile programmer Skills



Agile Fundamental Skill Set




  Produced by Tsuyoshi Ushio
Agile Fundamental Skill Set

In 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
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.
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.
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
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
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
Serial
                     It	
  works	
  well	
  for	
  buildings	
  
    Requirements	
   	
  	
  	
  but	
  isn’t	
  proper	
  to	
  soQware	
  development.	




              Design	

               ImplementaPon	

                                               Test	
8
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
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
Why?
11
I started
        doing

      Agile in
12
       Japan
10 years ago

13
Agile now
      became
      Popular
14
But
15
Now, Agile is popular

          in Japan but…

      • Shallow Understanding of Agile
      • Poor Engineering practices
      • Don’t care about Prerequisites of
      Agile practices


16
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 past




h?p://www.fanpop.com/clubs/back-­‐to-­‐the-­‐future/images/29447185/Ptle/back-­‐future-­‐wallpapers-­‐photo
I want see you succeed in
           running projects

            using Agile


21
Get the Value!

     Chance to get the

         Competence!

           To Vietnam!
22
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
Five Knowledge Areas




1. Designing & Programming
2. Testing
3. Team and behaviors
4. Structuring Work
5. Environment
1. Designing & Programming



           TDD	
  (Test	
  Driven	
  Development)	




         Refactoring	
               Good	
  Design	




Refactoring and Good Design support TDD
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
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
TDD / Refactoring Books




Test	
  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
Demo
Good Design
•    Agile Programmer has an ability to think some good designs.


         TDD	
  /	
  Refactoring	

                                     Simple	
  Design	



                                                  Design	
  Principles	
  
          Clean	
  Programming	
                                                     /	
  Pa?erns	



                                       Architecture	
30
Simple Design
If 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)
Clean Programming
Poorly 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
Design Principle / Pattern
Design 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	
  
Advanced	
                                         Architecture
The software architecture of a computing system is the set of structures
needed 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	
  
Learn and Practice
You	
  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
2. Testing



  Acceptance	
  TesPng	
              Programming	
  TesPng	




                       SoQware	
  TesPng	
  
                        (Engineering)	
  



Learn Software Testing
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
3. Team and Behavior


                                  CollecPve	
  	
            Team	
  
        CollaboraPon	
                                Accountability	
            AcPvity	


CommunicaPon	
                              CollecPve	
  
                      Visualize	
  
   Design	
                                 Ownership	
  




Learn Software Testing
Communication Design
The 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
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/
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
Product Backlog & Burndown




                                                                                           Burndown	
  chart	
                      Product	
  Backlog	
h?p://agilesoQwaredevelopment.com/files/aposPmages/Scrum/simple-­‐product-­‐backlog.png	




            Release	
  burndown	
  chart
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/
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
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
Pair Programming
h?p://pognowound.wordpress.com/2011/02/21/o-­‐segredo-­‐do-­‐pair-­‐programming/
4. Structuring Work


      FuncPon-­‐Based	
  
                                Planning	
       Development	



         Story	
  Card	
     EsPmaPng	
  and	
  
          Back	
  Log	
         Planning	
  




Manage It
Story Card
A 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
Backlog
The product backlog is an ordered list of user stories that is maintained
for 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	
  
Estimating
Estimate 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
Relative Estimation
Planning
Release 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
5. Environment



                         Leveraging	
  tools	



                                           ConPnuous	
  	
  
        Version	
  Control	
  
                                           IntegraPon	
  




Sometimes tools helps to be Agile
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
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: rake


55
Reference

ICAgile	
  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/
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	
  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.
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
Environment



Language             : Ruby
Testing               :Rspec/Cucumber
Framework            : Ruby on Rails
DBMS             : MongoDB
Management           : Pivotal Tracker
Share               : Cacoo
Version Control     : Git Hub
CI                   : Jenkins
Chat/Tel Conference : Skype

Más contenido relacionado

La actualidad más candente

SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8
Rajwinder Singh
 
Continuous Delivery with Visual Studio Online
Continuous Delivery with Visual Studio Online Continuous Delivery with Visual Studio Online
Continuous Delivery with Visual Studio Online
Moataz Nabil
 

La actualidad más candente (20)

Qa in CI/CD
Qa in CI/CDQa in CI/CD
Qa in CI/CD
 
SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8SanDiego_DevOps_Meetup_9212016-v8
SanDiego_DevOps_Meetup_9212016-v8
 
Continuous Delivery with Visual Studio Online
Continuous Delivery with Visual Studio Online Continuous Delivery with Visual Studio Online
Continuous Delivery with Visual Studio Online
 
Visual Studio Team Services Extensions by Taavi Kõosaar (@melborp)
Visual Studio Team Services Extensions by Taavi Kõosaar (@melborp)Visual Studio Team Services Extensions by Taavi Kõosaar (@melborp)
Visual Studio Team Services Extensions by Taavi Kõosaar (@melborp)
 
An introduction to DevOps
An introduction to DevOpsAn introduction to DevOps
An introduction to DevOps
 
DevOps and Visual Studio Team Services
DevOps and Visual Studio Team Services DevOps and Visual Studio Team Services
DevOps and Visual Studio Team Services
 
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
Automated Testing and Continuous Integration for Mobile Apps: Jenkins & Cloud...
 
Mobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and DockerMobile UI Testing using Appium and Docker
Mobile UI Testing using Appium and Docker
 
Introduction to DevOps
Introduction to DevOpsIntroduction to DevOps
Introduction to DevOps
 
Devops | CICD Pipeline
Devops | CICD PipelineDevops | CICD Pipeline
Devops | CICD Pipeline
 
Devops certification training course
Devops certification training courseDevops certification training course
Devops certification training course
 
CI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality EngineeringCI/CT/CD and Role of Quality Engineering
CI/CT/CD and Role of Quality Engineering
 
Testing in DevOps world
Testing in DevOps worldTesting in DevOps world
Testing in DevOps world
 
"DevOps > CI+CD "
"DevOps > CI+CD ""DevOps > CI+CD "
"DevOps > CI+CD "
 
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
NIWeek 2012: Fire and Forget / Bulletproof Builds Using Continuous Integratio...
 
All Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of WorkAll Around Azure: DevOps with GitHub - Managing the Flow of Work
All Around Azure: DevOps with GitHub - Managing the Flow of Work
 
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
Jumping from Continuous Integration to Continuous Delivery with Jenkins Enter...
 
Cloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team ServicesCloud load testing with Visual Studio Team Services
Cloud load testing with Visual Studio Team Services
 
Dev ops tutorial for beginners what is devops &amp; devops tools
Dev ops tutorial for beginners what is devops &amp; devops toolsDev ops tutorial for beginners what is devops &amp; devops tools
Dev ops tutorial for beginners what is devops &amp; devops tools
 
Introducing DevOps
Introducing DevOpsIntroducing DevOps
Introducing DevOps
 

Similar a Agile Fundamental Skill Set

Amy.stapleton
Amy.stapletonAmy.stapleton
Amy.stapleton
NASAPMC
 
An Introduction to Agile - Prashant Pund, AgileSoft.
An Introduction to Agile - Prashant Pund, AgileSoft.An Introduction to Agile - Prashant Pund, AgileSoft.
An Introduction to Agile - Prashant Pund, AgileSoft.
Pune OpenCoffee Club
 
Agile Importance in Pharmaceutical Industry
Agile Importance in Pharmaceutical IndustryAgile Importance in Pharmaceutical Industry
Agile Importance in Pharmaceutical Industry
Vijay Brzee
 
Introduction To Agile
Introduction To AgileIntroduction To Agile
Introduction To Agile
Tony Deng
 
Agile awareness -implementation1.0
Agile awareness -implementation1.0Agile awareness -implementation1.0
Agile awareness -implementation1.0
Komudi Bahal
 

Similar a Agile Fundamental Skill Set (20)

Amy.stapleton
Amy.stapletonAmy.stapleton
Amy.stapleton
 
Agile intro module 1
Agile intro   module 1Agile intro   module 1
Agile intro module 1
 
An Introduction to Agile - Prashant Pund, AgileSoft.
An Introduction to Agile - Prashant Pund, AgileSoft.An Introduction to Agile - Prashant Pund, AgileSoft.
An Introduction to Agile - Prashant Pund, AgileSoft.
 
Agile intro module 1
Agile intro   module 1Agile intro   module 1
Agile intro module 1
 
Agiletools
AgiletoolsAgiletools
Agiletools
 
Agile Intro for FCL
Agile Intro for FCLAgile Intro for FCL
Agile Intro for FCL
 
Agile Importance in Pharmaceutical Industry
Agile Importance in Pharmaceutical IndustryAgile Importance in Pharmaceutical Industry
Agile Importance in Pharmaceutical Industry
 
Agile Importance in Pharmaceuticals Industry
Agile Importance in Pharmaceuticals IndustryAgile Importance in Pharmaceuticals Industry
Agile Importance in Pharmaceuticals Industry
 
Introduction To Agile
Introduction To AgileIntroduction To Agile
Introduction To Agile
 
Agile awareness -implementation1.0
Agile awareness -implementation1.0Agile awareness -implementation1.0
Agile awareness -implementation1.0
 
Scrum Training
Scrum TrainingScrum Training
Scrum Training
 
Scrum training
Scrum trainingScrum training
Scrum training
 
Agile Webinar: Managing Distributed Teams
Agile Webinar: Managing Distributed TeamsAgile Webinar: Managing Distributed Teams
Agile Webinar: Managing Distributed Teams
 
Lean & agile 101 for Astute Entrepreneurs
Lean & agile 101 for Astute EntrepreneursLean & agile 101 for Astute Entrepreneurs
Lean & agile 101 for Astute Entrepreneurs
 
プレゼンビフォアアフタ
プレゼンビフォアアフタプレゼンビフォアアフタ
プレゼンビフォアアフタ
 
Agile
AgileAgile
Agile
 
Agile Anti-Patterns. Yes your agile projects can and will fail too.
Agile Anti-Patterns. Yes your agile projects can and will fail too.Agile Anti-Patterns. Yes your agile projects can and will fail too.
Agile Anti-Patterns. Yes your agile projects can and will fail too.
 
Intro Of Agile
Intro Of AgileIntro Of Agile
Intro Of Agile
 
What makes Agile Development so different?
What makes Agile Development so different?What makes Agile Development so different?
What makes Agile Development so different?
 
Agile development at Sokrati
Agile development at SokratiAgile development at Sokrati
Agile development at Sokrati
 

Más de Tsuyoshi Ushio

ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話
Tsuyoshi Ushio
 
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
Tsuyoshi Ushio
 
英語勉強法の法則
英語勉強法の法則英語勉強法の法則
英語勉強法の法則
Tsuyoshi Ushio
 

Más de Tsuyoshi Ushio (20)

ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話ログの書き方がチームの生産性を爆上げする話
ログの書き方がチームの生産性を爆上げする話
 
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話アメリカの超巨大クラウドの「中の人」に転生したガチ三流プログラマが米国システム開発の現実をリークする話
アメリカの超巨大クラウドの 「中の人」に転生した ガチ三流プログラマが 米国システム開発の現実を リークする話
 
Serverless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャServerless の自動回復と自動化のためのアーキテクチャ
Serverless の自動回復と自動化のためのアーキテクチャ
 
"サーバーレス"を超越する。なぜ?から理解する Durable Functions
"サーバーレス"を超越する。なぜ?から理解する Durable Functions"サーバーレス"を超越する。なぜ?から理解する Durable Functions
"サーバーレス"を超越する。なぜ?から理解する Durable Functions
 
三年後のエンジニアがもっているとお得な資質
三年後のエンジニアがもっているとお得な資質三年後のエンジニアがもっているとお得な資質
三年後のエンジニアがもっているとお得な資質
 
ワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキルワタシハ Azure Functions チョットデキル
ワタシハ Azure Functions チョットデキル
 
Visual Studio Team Services を使った Serverless のための継続的デリバリ
Visual Studio Team Services を使った Serverless のための継続的デリバリVisual Studio Team Services を使った Serverless のための継続的デリバリ
Visual Studio Team Services を使った Serverless のための継続的デリバリ
 
Agile overview
Agile overviewAgile overview
Agile overview
 
Container microservices
Container microservicesContainer microservices
Container microservices
 
技術と度胸のミニワークショップ InfoQで英語学習
技術と度胸のミニワークショップ InfoQで英語学習技術と度胸のミニワークショップ InfoQで英語学習
技術と度胸のミニワークショップ InfoQで英語学習
 
英語のリズム
英語のリズム英語のリズム
英語のリズム
 
A New Business Model of Custom Software Development For Agile Software Develo...
A New Business Model of Custom Software Development For Agile Software Develo...A New Business Model of Custom Software Development For Agile Software Develo...
A New Business Model of Custom Software Development For Agile Software Develo...
 
Build Less Patterns AgileRoots 2014
Build Less Patterns AgileRoots 2014Build Less Patterns AgileRoots 2014
Build Less Patterns AgileRoots 2014
 
ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法ITエンジニアのためのゼロから始める英語勉強法
ITエンジニアのためのゼロから始める英語勉強法
 
Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)Ultimate agilisttokyo(japanese)
Ultimate agilisttokyo(japanese)
 
How to be an agile programmer.
How to be an agile programmer.How to be an agile programmer.
How to be an agile programmer.
 
Ultimate agilisttokyo
Ultimate agilisttokyoUltimate agilisttokyo
Ultimate agilisttokyo
 
アジャイルツアー大阪
アジャイルツアー大阪アジャイルツアー大阪
アジャイルツアー大阪
 
Java festa2011(改訂中)
Java festa2011(改訂中)Java festa2011(改訂中)
Java festa2011(改訂中)
 
英語勉強法の法則
英語勉強法の法則英語勉強法の法則
英語勉強法の法則
 

Agile Fundamental Skill Set

  • 1. Introduction of Agile programmer Skills Agile Fundamental Skill Set Produced by Tsuyoshi Ushio
  • 2. Agile Fundamental Skill Set In 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. 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. 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. 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. 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. 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. Serial It  works  well  for  buildings   Requirements      but  isn’t  proper  to  soQware  development. Design ImplementaPon Test 8
  • 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. 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
  • 12. I started doing
 Agile in 12 Japan
  • 14. Agile now became Popular 14
  • 16. Now, Agile is popular
 in Japan but… • Shallow Understanding of Agile • Poor Engineering practices • Don’t care about Prerequisites of Agile practices 16
  • 17. 17
  • 18. Some people said
 Agile was Lame! 18
  • 19. I still believe 
 Agile is AWESOME! 19 http://terrapin21.s502.xrea.com/?p=153
  • 20. We can never go back to the past h?p://www.fanpop.com/clubs/back-­‐to-­‐the-­‐future/images/29447185/Ptle/back-­‐future-­‐wallpapers-­‐photo
  • 21. I want see you succeed in running projects
 using Agile 21
  • 22. Get the Value! Chance to get the
 Competence! To Vietnam! 22
  • 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. Five Knowledge Areas 1. Designing & Programming 2. Testing 3. Team and behaviors 4. Structuring Work 5. Environment
  • 25. 1. Designing & Programming TDD  (Test  Driven  Development) Refactoring Good  Design Refactoring and Good Design support TDD
  • 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. 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. TDD / Refactoring Books Test  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. Demo
  • 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. Simple Design If 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. Clean Programming Poorly 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. Design Principle / Pattern Design 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. Advanced Architecture The software architecture of a computing system is the set of structures needed 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. Learn and Practice You  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. 2. Testing Acceptance  TesPng Programming  TesPng SoQware  TesPng   (Engineering)   Learn Software Testing
  • 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. 3. Team and Behavior CollecPve     Team   CollaboraPon Accountability AcPvity CommunicaPon   CollecPve   Visualize   Design   Ownership   Learn Software Testing
  • 39. Communication Design The 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. 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. 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. Product Backlog & Burndown Burndown  chart Product  Backlog h?p://agilesoQwaredevelopment.com/files/aposPmages/Scrum/simple-­‐product-­‐backlog.png Release  burndown  chart
  • 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. 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. 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
  • 47. 4. Structuring Work FuncPon-­‐Based   Planning Development Story  Card   EsPmaPng  and   Back  Log   Planning   Manage It
  • 48. Story Card A 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. Backlog The product backlog is an ordered list of user stories that is maintained for 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. Estimating Estimate 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
  • 52. Planning Release 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. 5. Environment Leveraging  tools ConPnuous     Version  Control   IntegraPon   Sometimes tools helps to be Agile
  • 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. 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: rake 55
  • 56. Reference ICAgile  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. Sometimes, we have other roles • Project  Manager   • Architect   • Business  Analyst   • Tester
  • 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.
  • 60. Next Steps Advanced Continuous Delivery Agile UX Management 3.0 DevOps Lean Start Up
  • 65. Task Planning / Iteration / Share
  • 70. CI TV Burn down Chart (Cacoo) Monitoring
  • 71. Facility with bar counter
  • 72. Environment Language : Ruby Testing :Rspec/Cucumber Framework : Ruby on Rails DBMS : MongoDB Management : Pivotal Tracker Share : Cacoo Version Control : Git Hub CI : Jenkins Chat/Tel Conference : Skype