Top Banner
agile engineering practices Lionel Bisschoff – CEO Kaizania
48

agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Jun 27, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

agile engineering practices

Lionel Bisschoff – CEO Kaizania

Page 2: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Craft

2000Engaged,

Thinking People ‐Lean

Craft

1800Interchangeable

People –Assembly Line

Craft

1800Interchangeable

Parts

Craft

background

Page 3: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

lean

Page 4: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

7 lean principles

1. Eliminate Waste2. Build Quality In3. Defer commitment4. Deliver Fast5. Create Knowledge6. Respect People7. Optimize the Whole

Page 5: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

7 lean principles

1. Eliminate Waste2. Build Quality In3. Defer commitment4. Deliver Fast5. Create Knowledge6. Respect People7. Optimize the Whole

Page 6: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

1. Eliminate waste

Page 7: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

1. Eliminate waste

Page 8: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

1. Eliminate waste

Page 9: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

1. Eliminate waste

Page 10: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

1. Eliminate waste

Page 11: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

1. Eliminate waste

Page 12: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

1. Eliminate waste

Page 13: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

7 lean principles

1. Eliminate Waste2. Build Quality In3. Defer commitment4. Deliver Fast5. Create Knowledge6. Respect People7. Optimize the Whole

Impact on Software Engineering?

Page 14: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

what are we covering

• Code• Process• A story

Page 15: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

What’s the state of your Workshop?

Page 16: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

the 5 S’s

• Sort what do we have?• Systematize what do we want?• Standardize get there• Shine smooth and sharpen • Sustain keep it there

Eliminate WasteBuild Quality In

Create KnowledgeDeliver Fast

Page 17: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

what are we covering

• Code• Process• A story

Page 18: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.
Page 19: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Greatest Challenges in Writing Software?

• Humans do it• Together• Then it changes• Iterative

Software must be

1. Easy to change2. Easy to understand

Page 20: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Easy to Understand

CODE FORMATTING

Page 21: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

what’s in a name

• Why does something exist?• What does it do?• How is it used?

int d; //elapsed timeint elapsedTime;int elapsedTimeInDays;

Page 22: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

abstraction

• Hide complexity• Logic => well named functions• Functions :

• are not longer than 20 lines• never have > 3 arguments

• Use class instance variables

Page 23: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

abstraction

• Now stuck with classes having• lotsa functions?• lotsa instance variables?

• Abstract again• create new classes• classes hide data and expose functionality• Classes have a

• single responsibility• single reason to change

• Test?• most instance variable touched in mostmethods

Page 24: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

comments

• Failure to produce self‐documenting code• Clutter code

• Comments LIE• RTFC

Page 25: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

doing this in practice?

Add a Test

Run tests see new Failure

Write some code

Refactor

The TDD way

Run tests see all pass

Build Quality InEliminate WasteCreate KnowledgeDefer Commitment

Deliver Fast

Page 26: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

easy to change

Page 27: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

combining classes

Robert Martin – a bad design??

• Rigidity• Fragility• Immobility

Page 28: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

combining classes

Kent Beck – a simple design (i.e. Good........)

1. Runs all the tests2. Contains no duplication3. Expresses the intent of the programmer4. Minimizes the number of classes and methods

Page 29: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

combining classes

Design principles

• Single Responsibility• Interfaces• Abstractions• Quilt coding

• separation of concerns• dependency injection etc.

Page 30: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

systems Build Quality InEliminate WasteCreate KnowledgeDefer Commitment

Deliver Fast

Page 31: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

what are we covering

• Code• Process• A story

Page 32: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

multiple people writing code

DB

System/s

Dev..Integration

Source control

CI Server ‐ Autonomation(Version, Merge, Dependency, Build, Unit/Smoke test, Deploy)

QA

DB

System/s

Stage.....Live

DB

System/s

Hourly / Daily Daily Often as Possible

Page 33: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

multiple people writing code

Trunk

Team A

Team B

Sprint

Day 1 Day 2 Day 3 Day 4 Day 5 Day 6

Policy: Releasable

Policy: Unit tested

Policy: Unit tested

Each branch has owner and policy

Trunk = “Done” branch.No junk on the trunk!!

Merge from trunk to work  ‐ “catch up” every day

Publish to trunk whenever story isDone

Resolve conflicts on work branch immediately when discovered

Release!!

Firm

Soft

Build Quality InEliminate WasteCreate KnowledgeDefer Commitment

Deliver FastOptimise the wholeRespect People

Page 34: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

what are we covering

• Code• Process• A story

Page 35: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

• 24/7• 14 languages• Busy days

• 6 bets/second• 2 000 page views/minute• 10 000+ simultaneous users

Page 36: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets (logic/db)JSTL/JCTL (data)

JSP (html)

browsers

30 traders100 call centre agents

Page 37: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

Page 38: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

PriceCache

SportsLeaguesEventsMarketsPricesText/Tokens/StringsJMS

PriceCache PriceCache

Page 39: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

PriceCache

JMS

PriceCache PriceCache

SportsLeaguesEventsMarketsPricesText/Tokens/Strings

DataFeeds

Page 40: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

PriceCache

JMS

PriceCache PriceCache

SportsLeaguesEventsMarketsPricesText/Tokens/Strings

DataFeeds

osCacheosCache

Page 41: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

PriceCache

JMS

PriceCache PriceCache

SportsLeaguesEventsMarketsPricesText/Tokens/Strings

DataFeeds

osCacheosCache

RiskCache

Page 42: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

PriceCache

JMS

PriceCache PriceCache

SportsLeaguesEventsMarketsPricesText/Tokens/Strings

DataFeeds

osCacheosCache

RiskCache

Page 43: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

PriceCache

JMS

PriceCache PriceCache

SportsLeaguesEventsMarketsPricesText/Tokens/Strings

DataFeeds

osCacheosCache

RiskCache

ResultEnginesResultEnginesResultEngines

Page 44: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

Page 45: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Sportsbetting

DB

Servlets (logic/db)JSTL/JCTL (data)

JSP (html)

browsers

30 traders100 call centre agents

Page 46: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

ResultEnginesSportsbetting

DB

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

browsers

30 traders100 call centre agents

Servlets(logic/db)

JSTL/JCTL (data)JSP (html)

PriceCache

JMS

PriceCache PriceCache

SportsLeaguesEventsMarketsPricesText/Tokens/Strings

DataFeeds

osCacheosCache

RiskCache

ResultEnginesResultEngines

Page 47: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.

Lean means......

BDUF not needed

1. Eliminate Waste2. Build Quality In3. Defer commitment4. Deliver Fast5. Create Knowledge6. Respect People7. Optimize the Whole

BDUF   BAD..?

Page 48: agile engineering practices - WordPress.com · Craft. 2000. Engaged, Thinking People ‐ Lean. Craft. 1800. Interchangeable. People – Assembly Line. Craft. 1800. Interchangeable.