simple design

34
The First 100 Hours: Simple Design Jason Cheong-Kee-You @jpcky www.mightyjupiter.com Alistair McKinnell @amckinnell www.valuablecode.com

Upload: alistair-mckinnell

Post on 03-Dec-2014

607 views

Category:

Technology


1 download

DESCRIPTION

A workshop on the Agile practice of Simple Design.

TRANSCRIPT

Page 1: Simple Design

The First 100 Hours:Simple Design

Jason Cheong-Kee-You @jpcky www.mightyjupiter.com

Alistair McKinnell

@amckinnell www.valuablecode.com

Page 2: Simple Design

The First 100 Hours

Page 3: Simple Design

The First 100 Hours

1. Learning

2. Test-Driven Development

3. Design

Page 4: Simple Design

Pair Programming

Page 5: Simple Design

44 A Rhythm for Success: TheTDD Cycle

R

ed

Gre

en

Refac

tor

Prepared exclusively for Alistair McKinnell Copyright ©2011 Pragmatic Programmers

Page 6: Simple Design
Page 7: Simple Design

Where DoYou Stand?

Page 8: Simple Design

Simple Design

Page 9: Simple Design

Simple Design

1. All tests must pass

2. No code is duplicated

3. Code is self-explanatory

4. No superfluous parts exist

Page 10: Simple Design

Exercise

Page 11: Simple Design

Exercise

Why are the four rules of simple design important?

Page 12: Simple Design
Page 13: Simple Design

1. All tests must pass

2. No code is duplicated

3. Code is self-explanatory

4. No superfluous parts exist

Simple Design

Page 14: Simple Design

1. Passes its tests

2. No code is duplicated

3. Code is self-explanatory

4. No superfluous parts exist

Simple Design

Page 15: Simple Design

1. Passes its tests

2. Minimizes duplication

3. Code is self-explanatory

4. No superfluous parts exist

Simple Design

Page 16: Simple Design

1. Passes its tests

2. Minimizes duplication

3. Maximizes clarity

4. No superfluous parts exist

Simple Design

Page 17: Simple Design

1. Passes its tests

2. Minimizes duplication

3. Maximizes clarity

4. Has fewer elements

Simple Design

Page 18: Simple Design

1. Passes its tests (given TDD)

2. Minimizes duplication

3. Maximizes clarity

4. Has fewer elements

Simple Design

Page 19: Simple Design

1. Passes its tests (given TDD)

2. Minimizes duplication

3. Maximizes clarity (fix names)

4. Has fewer elements

Simple Design

Page 20: Simple Design

1. Passes its tests (given TDD)

2. Minimizes duplication

3. Maximizes clarity (fix names)

4. Has fewer elements

Simple Design

Page 21: Simple Design

That leaves me with two key elementsof simple design: remove duplication and fix bad names.

When I remove duplication, I tend to seean appropriate structure emerge, and whenI fix bad names, I tend to see responsibilities slide into appropriate parts of the design.

J. B. Rainsberger

Page 22: Simple Design

• Remove duplication

• Fix bad names

Simple Design

Page 23: Simple Design

Exercise

Page 24: Simple Design

Exercise

How to choose good names?

Build a checklist

Page 25: Simple Design

Choosing Good Names

Page 26: Simple Design

Choosing Good Names

Pronounceable Names

Avoid Encodings

Page 27: Simple Design

Choosing Good Names

Intention-Revealing Name

Role-Suggesting Name

Page 28: Simple Design

Choosing Good Names

Ubiquitous Language

Page 29: Simple Design

Simple Design

1. All tests must pass

2. No code is duplicated

3. Code is self-explanatory

4. No superfluous parts exist

Page 30: Simple Design

• Remove duplication

• Fix bad names

Simple Design

Page 31: Simple Design
Page 32: Simple Design

“The prime directive that was unanimously agree upon by allpresent was that in the nexttens years Agile leaders mustDemand Technical Excellence”

Jeff Sutherland

Page 33: Simple Design

“Failure to do that meansyou are not an Agile leader”

Jeff Sutherland