プレゼンビフォアアフタ

29
レビュー前 (抜粋)

Upload: tsuyoshi-ushio

Post on 20-Nov-2014

3.936 views

Category:

Documents


0 download

DESCRIPTION

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

TRANSCRIPT

Page 1: プレゼンビフォアアフタ

レビュー前  (抜粋)

Page 2: プレゼンビフォアアフタ

Agile Fundamental Skill Set

Produced by Tsuyoshi Ushio

A presentation for elementary programmers of Agile

Elementary バカにされてる  

気分になる

Page 3: プレゼンビフォアアフタ

Agile Fundamental Skill Set

•  learn about Agile technical skill set in 90 min. •  Know about book recommendations. •  Watch demonstration of TDD.

•  Make some teams (4 people in each team) •  Think about important agile skill set for you. •  Write your ideas and share these.

In this presentation, you will …

What will you do?

Ranking You should learn it now! You can learn it. Development Team should cover it.

Page 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.

受動態多用  日本人っぽい  

Page 5: プレゼンビフォアアフタ

Agile Practice Overview

Reference  this  blog  and  customize  it.  hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html

Business  Value  Customer  SaOsfacOon  

Market  CreaOon

CollaboraOon  ,  Team   Technical  PracOce  

Goal

Scrum  VisualizaOon  RetrospecOve  

IteraOon  Daily  Standup  MeeOng  

Human  /  Mind  

Engineering  pracOce  (XP)  ConOnuous  IntegraOon  ConOnuous  Delivery  

Automated  Build  /  Test  /  Deploy  Version  Control  TDD  /  Refactoring  

Right  Wing LeJ  Wing

国によっては  敏感!

Page 6: プレゼンビフォアアフタ

Five Knowledge Areas

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

新規作成  ページ例

Page 7: プレゼンビフォアアフタ

1. Designing & Programming

Refactoring and Good Design support TDD

TDD  (Test  Driven  Development)

Refactoring Good  Design

新規作成  ページ例

Page 8: プレゼンビフォアアフタ

Test Driven Development •  Test-driven development is a software development technique that uses really short development cycles to incrementally design your software.

Write Test Fail Write Code Success

Refactoring

Refresh the Design

Test  Driven  Development NoOce  :  you  should  not  execute  add  funcOon  and  refactoring  on  the  same  Ome.

8

日本語元ネタ  ありの例

Page 9: プレゼンビフォアアフタ

Refactoring •  Refactoring is the art of safety improving the design of existing code.

Planed  Design EvoluOonal  Design

Before AJer

• If  the  soJware  design  changes,  the  design  is  ge]ng  worse.  • Cannot  embrace  change  • It  takes  too  much  Ome  for  analyze  and  design.  

• If  the  soJware  design  changes,  the  design  is  sOll  smart.  • Embrace  change  • It  takes  small  amount  of  Ome  for  analyze  and  design.  

AJer  the  design  ,  implement  it.

Design Programming

Small  design  ,Small  implementaOon,  small  refactoring.

design

Add  funcOon  Add  tests

Refactoring

Point          1.  Basic  skill  of  design  is  same.          2.  Automate  Test          3.  Learn  about  Refactoring  catalog

9

日本語元ネタ  あり例。ダサイ

Page 10: プレゼンビフォアアフタ

Good Design •  Agile Programmer has an ability to think some good designs.

10

Simple  Design

Clean  Programming Design  Principles  

/  PaAerns

Architecture

TDD  /  Refactoring

新規作成例

Page 11: プレゼンビフォアアフタ

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

11

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

hAp://theholyjava.wordpress.com/2011/02/14/clean-­‐code-­‐four-­‐simple-­‐design-­‐rules/

Extreme  Prgramming  Explained:        Embrace  Change  –  Kent  Beck

OOP  (Object  Oriented  Programming)

新規作成例

Page 12: プレゼンビフォアアフタ

Clean Programming Poorly written code is hard to understand and hard to evolve, making code base more expensive to maintain.

12

The  Art  of  Readable  Code:  DusOn  Boswell,  Trevor  Foucher  

Avoid  Generic  Names  Like    tmp  and  retval

The  Art  of  Readable  Code:DusOn  Boswell,  Trevor  Foucher  

var euclidean_norm = function (v) {�for (var i = 0; I < v.length; i += 1) � retval += v[i] + v[i]; � return Math.sqrt(retval); �};

Instead  of  retval  you  should  use  sum_squares  Because  it  would  show  the  meaning  of  the  variable  

新規作成例

Page 13: プレゼンビフォアアフタ

Estimating Estimate user stories on the product backlog using relative estimate.

13

Planning  Poker

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.  

Agile  EsOmaOng  and  Planning  Mike  Corn  

恥ずかしい文法  ミス指摘の例

Page 14: プレゼンビフォアアフタ

レビュー後  (抜粋)

Page 15: プレゼンビフォアアフタ

Agile Fundamental Skill Set

Produced by Tsuyoshi Ushio

Introduction of Agile programmer Skills

Page 16: プレゼンビフォアアフタ

Agile Fundamental Skill Set

•  learn about Agile technical skill set in 90 min. •  Know about book recommendations. •  Watch demonstration of TDD.

•  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.

In this presentation, you will …

What will you do?

Ranking Everybody must have A Team should have A Team may have

Page 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.

Page 18: プレゼンビフォアアフタ

Agile Practice Overview

Reference  this  blog  and  customize  it.  hAp://blogs.itmedia.co.jp/hiranabe/2012/09/rightwing-­‐and-­‐leJwing-­‐of-­‐agile.html

Business  Value  Customer  SaOsfacOon  

Market  CreaOon

CollaboraOon  ,  Team   Technical  PracOce  

Goal

Scrum  VisualizaOon  RetrospecOve  

IteraOon  Daily  Standup  MeeOng  

Human  /  Mind  

Engineering  pracOce  (XP)  ConOnuous  IntegraOon  ConOnuous  Delivery  

Automated  Build  /  Test  /  Deploy  Version  Control  TDD  /  Refactoring  

Page 19: プレゼンビフォアアフタ

Five Knowledge Areas

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

Page 20: プレゼンビフォアアフタ

1. Designing & Programming

Refactoring and Good Design support TDD

TDD  (Test  Driven  Development)

Refactoring Good  Design

Page 21: プレゼンビフォアアフタ

Test Driven Development •  Test-driven development is a software development technique that uses really short development cycles to incrementally design your software.

Write Test Fail Write Code Success

Refactoring

Refresh the Design

Test  Driven  Development NoOce  :  you  should  not  execute  add  funcOon  and  refactoring  on  the  same  Ome.

21

Page 22: プレゼンビフォアアフタ

Refactoring •  Refactoring is the art of safety improving the design of existing code.

Planed  Design EvoluOonal  Design

Before AJer

• If  the  soJware  design  changes,  the  design  is  ge]ng  worse.  • Cannot  embrace  change  • It  takes  too  much  Ome  for  analyze  and  design.  

• If  the  soJware  design  changes,  the  design  is  sOll  smart.  • Embrace  change  • It  takes  small  amount  of  Ome  for  analyze  and  design.  

AJer  the  design  ,  implement  it.

Design Programming

Small  design  ,Small  implementaOon,  small  refactoring.

design

Add  funcOon  Add  tests

Refactoring

Point          1.  Basic  skill  of  design  is  same.          2.  Automate  Test          3.  Learn  about  Refactoring  catalog

22

Page 23: プレゼンビフォアアフタ

Good Design •  Agile Programmer has an ability to think some good designs.

23

Simple  Design

Clean  Programming Design  Principles  

/  PaAerns

Architecture

TDD  /  Refactoring

Page 24: プレゼンビフォアアフタ

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

24

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

hAp://c2.com/xp/XpSimplicityRules.html

Extreme  Prgramming  Explained:        Embrace  Change  –  Kent  Beck

OOP  (Object  Oriented  Programming)

Page 25: プレゼンビフォアアフタ

Clean Programming Poorly written code is hard to understand and hard to evolve, making code base more expensive to maintain.

25

The  Art  of  Readable  Code:  DusOn  Boswell,  Trevor  Foucher  

Avoid  Generic  Names  Like    tmp  and  retval

The  Art  of  Readable  Code:DusOn  Boswell,  Trevor  Foucher  

var euclidean_norm = function (v) {�for (var i = 0; I < v.length; i += 1) � retval += v[i] + v[i]; � return Math.sqrt(retval); �};

Instead  of  retval  you  should  use  sum_squares  Because  it  would  show  the  meaning  of  the  variable  

Page 26: プレゼンビフォアアフタ

Estimating Estimate user stories on the product backlog using relative estimation.

26

Planning  Poker

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.  

Agile  EsOmaOng  and  Planning  Mike  Corn  

Page 27: プレゼンビフォアアフタ

日本語元ネタ  (抜粋)

Page 28: プレゼンビフォアアフタ

テスト駆動開発 •  プログラムに必要な各機能について、最初にテストを書き、そのテストが動作する最低限の実装を行った後、コードを洗練させるという短い工程を繰り返す開発方法

テストコード作成 テスト失敗 コーディング テスト成功

設計改善(リファクタリング)

設計改善を定期的に 実施する

テスト駆動開発イメージ

注:機能追加と、リファクタリングを同時に行わないことがポイントです

28

Page 29: プレゼンビフォアアフタ

リファクタリング •  外部から見た時の振る舞いを保ちつつ、理解や修正が簡単になるように、ソフトウェアの内部構造を変化させること

先行型設計 進化型設計

Before AJer

• ソフトウェアの変更によって設計が崩れる  • 想像しなかった変更に弱い  • 分析/設計に時間がかかる  

• ソフトウェアの変更後も設計が崩れない  • 変化が前提であり、変更に強い  • 分析/設計はシンプルに実施するので時間が    かからない  

最初にじっくり設計を考え、その後プログラミングする

設計 プログラミング

少し設計、少し機能追加、リファクタリングを繰り返す

少し設計

少し機能追加  少しテスト追加

リファクタリング

導入のPoint          1.  必要な基本リテラシは先行型設計と同じ          2.  自動テストがあること          3.    リファクタリングのイメージを知る事

29