68
Watch your language, young man! A short story about an impact of language on software development.

Watch your language, young man!

Embed Size (px)

Citation preview

Page 1: Watch your language, young man!

Watch your language, young man!

A short story about an impact of language on software development.

Page 2: Watch your language, young man!

$ whoami

● Paweł Wacławczyk

● I am passionate about making life easier.

Which applies to software development too :-)

● Software developer at Clearcode

since November 2014.

● @pawaclawczyk

[email protected]

[email protected]

Page 3: Watch your language, young man!

What is a language?

Page 4: Watch your language, young man!

What is a language?

Wikipedia:

„Language is the human ability to acquire and use complex systems of communication, and a language is any specific example of such a system.”

Page 5: Watch your language, young man!

What is a language?

Wikipedia:

„Language is the human ability to acquire and use complex systems of communication, and a language is any specific example of such a system.”

Page 6: Watch your language, young man!

What is a language?

Wikipedia:

„Language is the human ability to acquire and use complex systems of communication, and a language is any specific example of such a system.”

Page 7: Watch your language, young man!

Why shall we care about

language?

Page 8: Watch your language, young man!
Page 9: Watch your language, young man!

„There are only two hard things in Computer Science: cache invalidation

and naming things.”

-- Phil Karlton

Page 10: Watch your language, young man!

„There are only two hard things in Computer Science: cache invalidation

and naming things.”

-- Phil Karlton

Page 11: Watch your language, young man!

„There are only two hard things in Computer Science: cache invalidation, naming things and off-by-one errors.”

:-)

Page 12: Watch your language, young man!

If we care, then we can benefit from it.

Page 13: Watch your language, young man!

● understanding and focusing on the bussiness value,

If we care, then we can benefit from it.

Page 14: Watch your language, young man!

● understanding and focusing on the bussiness value,

● understanding the problem domain and it's environment,

If we care, then we can benefit from it.

Page 15: Watch your language, young man!

● understanding and focusing on the bussiness value,

● understanding the problem domain and it's environment,

● deeper exploring of the domain,

If we care, then we can benefit from it.

Page 16: Watch your language, young man!

● understanding and focusing on the bussiness value,

● understanding the problem domain and it's environment,

● deeper exploring of the domain,

● deliberated discovery,

If we care, then we can benefit from it.

Page 17: Watch your language, young man!

● understanding and focusing on the bussiness value,

● understanding the problem domain and it's environment,

● deeper exploring of the domain,

● deliberated discovery,

● use complex architectural and design patterns,

If we care, then we can benefit from it.

Page 18: Watch your language, young man!

● understanding and focusing on the bussiness value,

● understanding the problem domain and it's environment,

● deeper exploring of the domain,

● deliberated discovery,

● use complex architectural and design patterns,

● knowledge sharing.

If we care, then we can benefit from it.

Page 19: Watch your language, young man!

How can we work with

language?

Page 20: Watch your language, young man!

Understand where are you going?

And what is more important - why?

Page 21: Watch your language, young man!

Talk the same language as your bussiness is.

Page 22: Watch your language, young man!

Focus on goal your bussiness want to achieve.

„Good goals should be translatable to money, so we can decide what the appropriate return on

investment is.”

-- Gojko Adzic

Page 23: Watch your language, young man!

Impact mapping

„Make impacts, not software.”

-- Gojko Adzic

Page 24: Watch your language, young man!

Impact mapping

„Impact Mapping: Making a big impact with software products and projects”

Gojko Adzic (2012)

Page 25: Watch your language, young man!

Impact mapping

Page 26: Watch your language, young man!

Impact mapping

WHY?

● Why are we doing this?

● State goals for the problem to be solved.

Page 27: Watch your language, young man!

Impact mapping

WHO?

● Who can produce the desired effect?

● Who can obstruct it?

● Who will consume and buy our product?

● Who will be impacted by it?

Page 28: Watch your language, young man!

Impact mapping

HOW?

● How should our actors behavior change?

● How can they help us to achieve the goal?

● How can they obstruct or prevent us from

succeding?

Page 29: Watch your language, young man!

Impact mapping

WHAT?

● What can we deliver?

● This may, or may not, be software features.

Page 30: Watch your language, young man!

Explore the domain

Page 31: Watch your language, young man!

Event storming

Page 32: Watch your language, young man!

Event storming

Page 33: Watch your language, young man!

Event storming

Page 34: Watch your language, young man!

Event storming

● invite the right people,

Page 35: Watch your language, young man!

Event storming

● invite the right people,

● provide unlimited space,

Page 36: Watch your language, young man!

Event storming

● invite the right people,

● provide unlimited space,

● explore domain starting from domain events,

Page 37: Watch your language, young man!

Event storming

● invite the right people,

● provide unlimited space,

● explore domain starting from domain events,

● look for aggregates,

Page 38: Watch your language, young man!

Event storming

● invite the right people,

● provide unlimited space,

● explore domain starting from domain events,

● look for aggregates,

● explore subdomains,

Page 39: Watch your language, young man!

Event storming

● invite the right people,

● provide unlimited space,

● explore domain starting from domain events,

● look for aggregates,

● explore subdomains,

● explore bounded contexts.

Page 40: Watch your language, young man!

Event storming

It is all about the knowledge!

Learn as much as possible in the

shortest possible time.

Page 41: Watch your language, young man!

Ubiquitous Language

„Domain-Driven Design: Tackling Complexity in the Heart of Software” (aka „Blue Book”)

by Eric Evans (2003)

Page 42: Watch your language, young man!

Ubiquitous Language

The idea is to use this language as a way to explore our Domain and, with the help of the

Domain experts, capture it in a Domain Model - a useful abstraction of the business, captured in the

code.

Page 43: Watch your language, young man!

Ubiquitous Language

The idea is to use this language as a way to explore our Domain and, with the help of the

Domain experts, capture it in a Domain Model - a useful abstraction of the business, captured in the

code.

Page 44: Watch your language, young man!

Ubiquitous Language

The idea is to use this language as a way to explore our Domain and, with the help of the

Domain experts, capture it in a Domain Model - a useful abstraction of the business, captured in the

code.

Page 45: Watch your language, young man!

Design and develop

Page 46: Watch your language, young man!

Behavior-Driven Development

Page 47: Watch your language, young man!

BDD. Specification by Example

1) elaborate requirements

Page 48: Watch your language, young man!

BDD. Specification by Example

1) elaborate requirements

2) use domain language

Page 49: Watch your language, young man!

BDD. Specification by Example

1) elaborate requirements

2) use domain language

3) became tests

Page 50: Watch your language, young man!

BDD. Specification by Example

„Specification by Example: How Successful Teams Deliver the Right Software”

Gojko Adzic (2011)

Page 51: Watch your language, young man!

Behavior-Driven Development

Brings together the idea of Test-Driven

Development and the Ubiquitous Language from

Domain-Driven Design.

Page 52: Watch your language, young man!

Behavior-Driven Development

Brings together the idea of Test-Driven

Development and the Ubiquitous Language from

Domain-Driven Design.

Page 53: Watch your language, young man!

Behavior-Driven Development

Brings together the idea of Test-Driven

Development and the Ubiquitous Language from

Domain-Driven Design.

Page 54: Watch your language, young man!

Behavior-Driven Development

1) Can have a form of user story from Agile Software Develpoment.

Feature: [Doing things]  In order to [achieve conrete business goal]  As [an actor who can achieve the goal]  I want to [perform actions towards achieving the goal]

Page 55: Watch your language, young man!

Behavior-Driven Development

Feature: Register transaction  In order to track incoming payments  As an owner  I want to register transaction

  Scenario: Register transaction    ...

  Scenario: Register transaction for non existing payment subscription    ...

  Scenario: Register transaction with different currency than subscription currency    ...    

Page 56: Watch your language, young man!

Behavior-Driven Development

Page 57: Watch your language, young man!

Behavior-Driven Development

2) It can also be applied on more technical level. In that case it takes a form of specification.

tests\unit\...\PaymentSubscription

 [x] it settles new payment subscription [x] it registers transactions [x] it registers unsuccessful transactions

Page 58: Watch your language, young man!

Behavior-Driven Development

Page 59: Watch your language, young man!

Pattern Language

Page 60: Watch your language, young man!

Pattern Language

„A Pattern Language:

Towns, Buildings, Construction”

Christopher Alexander (1977)

Page 61: Watch your language, young man!

Pattern Language

„Using Pattern Languages

for Object-Oriented Programs”

Kent Beck and Ward Cunnigham

(OOPSLA, 1987)

Page 62: Watch your language, young man!

Pattern Language

1) Context

Page 63: Watch your language, young man!

Pattern Language

1) Context

2) Problem

Page 64: Watch your language, young man!

Pattern Language

1) Context

2) Problem

3) Solution

Page 65: Watch your language, young man!

Pattern Language

1) Context

2) Problem

3) Solution

4) Relation with another patterns

Page 66: Watch your language, young man!

Thank you :-)

Page 67: Watch your language, young man!

One more thing...

join me at xDD ninjas meetings.

Page 68: Watch your language, young man!

Q & A