プレゼンビフォアアフタ

7,753 views

Published on

英語プレゼンのレビュー前、レビュー後の恥ずかしい資料です。しかも日本語の元ネタがあるページはそれもつけておきました。

  • Be the first to comment

プレゼンビフォアアフタ

  1. 1. レビュー前   (抜粋)
  2. 2. Elementary バカにされてる   気分になる A presentation for elementary programmers of AgileAgile Fundamental Skill Set Produced by Tsuyoshi Ushio
  3. 3. 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 skill set for you.•  Write your ideas and share these.Ranking You should learn it now! You can learn it. Development Team should cover it.
  4. 4. Mission #1 Mandatory Skills (5min)Discuss  with  Team  members  about  …   受動態多用   日本人っぽい   ・What  skills  are  needed  for  agile  programmers?   Please  tell  me  your  opinions.  Discuss  and  write  down  and  share.
  5. 5. Agile Practice Overview Goal Business  Value   国によっては   Customer  SaOsfacOon   敏感! Market  CreaOon LeJ  Wing Right  Wing CollaboraOon  ,   Team   Technical  PracOce   Scrum   Engineering  pracOce  (XP)   VisualizaOon   ConOnuous  IntegraOon   RetrospecOve   ConOnuous  Delivery   IteraOon   Automated  Build  /  Test  /  Deploy   Daily  Standup  MeeOng   Version  Control   Human  /  Mind   TDD  /  Refactoring   Reference  this  blog  and  customize  it.   hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html
  6. 6. Five Knowledge Areas 新規作成   ページ例 1. Designing & Programming2. Testing3. Team and behaviors4. Structuring Work5. Environment
  7. 7. 1. Designing & Programming 新規作成   ページ例 TDD  (Test  Driven  Development) Refactoring Good  Design Refactoring and Good Design support TDD
  8. 8. 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 NoOce  :  you  should  not  execute  add  funcOon  and  refactoring  on  the  same  Ome. Write Test Fail Write Code Success Refresh the Design Refactoring 8
  9. 9. Refactoring•  Refactoring is the art of safety improving the design of existing code. Planed  Design EvoluOonal  Design AJer  the  design  ,  implement  it. Small  design  ,Small  implementaOon,  small  refactoring. design Design Programming Add  funcOon   Refactoring Add  tests Before AJer • If  the  soJware  design  changes,  the  design  is  ge]ng  worse.   • If  the  soJware  design  changes,  the  design  is  sOll  smart.  • Cannot  embrace  change   • Embrace  change  • It  takes  too  much  Ome  for  analyze  and  design.   • It  takes  small  amount  of  Ome  for  analyze  and  design.   Point   日本語元ネタ          1.  Basic  skill  of  design  is  same.   あり例。ダサイ        2.  Automate  Test          3.  Learn  about  Refactoring  catalog 9
  10. 10. Good Design 新規作成例 •  Agile Programmer has an ability to think some good designs. TDD  /  Refactoring Simple  Design Design  Principles   Clean  Programming /  PaAerns Architecture 10
  11. 11. Simple DesignIf you keep it simple, you will get … 新規作成例 Easy to change, Less time, Easy to Understand it. We can t predict the future Beck’s  4  rules  of  simple  design Pass  all  tests Contains  no  duplicaOons Express  the  intent  of  the  programmers Minimizes  the  number  of  classes  and  methods Extreme  Prgramming  Explained:        Embrace  Change  –  Kent  Beck hAp://theholyjava.wordpress.com/2011/02/14/clean-­‐code-­‐four-­‐simple-­‐design-­‐rules/ 11 OOP  (Object  Oriented  Programming)
  12. 12. 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:DusOn  Boswell,  Trevor  Foucher   The  Art  of  Readable  Code:   DusOn  Boswell,  Trevor  Foucher   Instead  of  retval  you  should  use  sum_squares   Because  it  would  show  the  meaning  of  the  variable  12
  13. 13. EstimatingEstimate user stories on the product backlog using relative estimate. 恥ずかしい文法   ミス指摘の例 Planning  Poker Agile  EsOmaOng  and  Planning   Mike  Corn   EsOmate  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.  13
  14. 14. レビュー後   (抜粋)
  15. 15. Introduction of Agile programmer SkillsAgile Fundamental Skill Set Produced by Tsuyoshi Ushio
  16. 16. 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
  17. 17. 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.
  18. 18. Agile Practice Overview Goal Business  Value   Customer  SaOsfacOon   Market  CreaOon CollaboraOon  ,   Team   Technical  PracOce   Scrum   Engineering  pracOce  (XP)   VisualizaOon   ConOnuous  IntegraOon   RetrospecOve   ConOnuous  Delivery   IteraOon   Automated  Build  /  Test  /  Deploy  Daily  Standup  MeeOng   Version  Control   Human  /  Mind   TDD  /  Refactoring   Reference  this  blog  and  customize  it.   hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html
  19. 19. Five Knowledge Areas1. Designing & Programming2. Testing3. Team and behaviors4. Structuring Work5. Environment
  20. 20. 1. Designing & Programming TDD  (Test  Driven  Development) Refactoring Good  Design Refactoring and Good Design support TDD
  21. 21. 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 NoOce  :  you  should  not  execute  add  funcOon  and  refactoring  on  the  same  Ome. Write Test Fail Write Code Success Refresh the Design Refactoring 21
  22. 22. Refactoring•  Refactoring is the art of safety improving the design of existing code. Planed  Design EvoluOonal  Design AJer  the  design  ,  implement  it. Small  design  ,Small  implementaOon,  small  refactoring. design Design Programming Add  funcOon   Refactoring Add  tests Before AJer • If  the  soJware  design  changes,  the  design  is  ge]ng  worse.   • If  the  soJware  design  changes,  the  design  is  sOll  smart.  • Cannot  embrace  change   • Embrace  change  • It  takes  too  much  Ome  for  analyze  and  design.   • It  takes  small  amount  of  Ome  for  analyze  and  design.   Point          1.  Basic  skill  of  design  is  same.          2.  Automate  Test          3.  Learn  about  Refactoring  catalog 22
  23. 23. Good Design•  Agile Programmer has an ability to think some good designs. TDD  /  Refactoring Simple  Design Design  Principles   Clean  Programming /  PaAerns Architecture 23
  24. 24. 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 hAp://c2.com/xp/XpSimplicityRules.html 24 OOP  (Object  Oriented  Programming)
  25. 25. 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:DusOn  Boswell,  Trevor  Foucher   The  Art  of  Readable  Code:   DusOn  Boswell,  Trevor  Foucher   Instead  of  retval  you  should  use  sum_squares   Because  it  would  show  the  meaning  of  the  variable  25
  26. 26. EstimatingEstimate user stories on the product backlog using relative estimation. Planning  Poker Agile  EsOmaOng  and  Planning   Mike  Corn   EsOmate  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.  26
  27. 27. 日本語元ネタ   (抜粋)
  28. 28. テスト駆動開発•  プログラムに必要な各機能について、最初にテストを書き、そのテストが 動作する最低限の実装を行った後、コードを洗練させるという短い工程を 繰り返す開発方法 テスト駆動開発イメージ 注:機能追加と、リファクタリングを同時に行わないことがポイントです テストコード作成 テスト失敗 コーディング テスト成功 設計改善を定期的に 実施する 設計改善
 (リファクタリング) 28
  29. 29. リファクタリング•  外部から見た時の振る舞いを保ちつつ、理解や修正が簡単になるように、 ソフトウェアの内部構造を変化させること 先行型設計 進化型設計 最初にじっくり設計を考え、その後プログラミングする 少し設計、少し機能追加、リファクタリングを繰り返す 少し設計 設計 プログラミング 少し機能追加   リファクタリング 少しテスト追加 Before AJer • ソフトウェアの変更によって設計が崩れる   • ソフトウェアの変更後も設計が崩れない   • 想像しなかった変更に弱い   • 変化が前提であり、変更に強い   • 分析/設計に時間がかかる   • 分析/設計はシンプルに実施するので時間が    かからない   導入のPoint          1.  必要な基本リテラシは先行型設計と同じ          2.  自動テストがあること          3.    リファクタリングのイメージを知る事 29

×