Code as a Communication Tool

Post on 10-May-2015

692 views 0 download

Tags:

description

Presentation done at UFLA University on May 23th 2011.

Transcript of Code as a Communication Tool

Code as a Communication Tool

Vinicius Gomes

Mozair

May, 23rd 2011

© ThoughtWorks 2008

AKA Usando as Linguagens ao Seu Favor

• About us

• Introduction

• What?

• Why?

• How?

• Conclusion

Agenda

© ThoughtWorks 2008

• About us

• Introduction

• What?

• Why?

• How?

• Conclusion

Agenda

© ThoughtWorks 2008

About us

Vinicius Gomes

• about.me/vvgomes

Mozair

@MACSkeptic

github.com/macskeptic

© ThoughtWorks 2008

• About us

• Introduction

• What?

• Why?

• How?

• Conclusion

Agenda

© ThoughtWorks 2008

© ThoughtWorks 2008

Introduction

Reading existing code is

expensive

Understanding existing

code is expensive

Finding out where to

change is expensive

Maintenance is expensive

So, what to do?

• About us

• Introduction

• What?

• Why?

• How?

• Conclusion

Agenda

© ThoughtWorks 2008

© ThoughtWorks 2008

What?

Communicate through

code effectively

Make it fast to read

Make it easy to understand

Express domain knowledge

through software

Keep maintenance costs

low

• About us

• Introduction

• What?

• Why?

• How?

• Conclusion

Agenda

© ThoughtWorks 2008

© ThoughtWorks 2008

Why?

Maintenance

Tech Debt

© ThoughtWorks 2008

Time to market vs. Technical debt

© ThoughtWorks 2008

• XP

–Communication

–Simplicity

–Feedback

–Courage

–Respect

What we do

© ThoughtWorks 2008

Feedback

© ThoughtWorks 2008

Feedback

© ThoughtWorks 2008

Project1

Unitary

Project1

Functional

Project2

Unitary

Project2

Functional

Project1

Regression

Project2

Regression

Help your team

Help your team

• Make people more productive

Help your team

• Make people more productive

• Avoid ambiguous interpretation

Help your team

• Make people more productive

• Avoid ambiguous interpretation

• Drop stress levels

Help your team

• Make people more productive

• Avoid ambiguous interpretation

• Drop stress levels

• Help people to focus on the right things

• About us

• Introduction

• What?

• Why?

• How?

• Conclusion

Agenda

© ThoughtWorks 2008

© ThoughtWorks 2008

How?

• Language constructs

• Language constructs

• Implementation Patterns

• Language constructs

• Implementation Patterns

• Domain Driven Design

• Language constructs

• Implementation Patterns

• Domain Driven Design

• Test Driven Development / Design

• Language constructs

• Implementation Patterns

• Domain Driven Design

• Test Driven Development / Design

• Refactoring

• Language constructs

• Implementation Patterns

• Domain Driven Design

• Test Driven Development / Design

• Refactoring

• Domain Specific Languages

Language constructs

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

Avoid the Comic Sans Effect

Tell “what”, not “how”

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

Implementation

Patterns

Name by role

Abiding by the law of Demeter

Abstraction symmetry

One-line ifs

Test Driven

Design/Development

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

Refactoring

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

© ThoughtWorks 2008

Domain Specific

Languages

© ThoughtWorks 2008

© ThoughtWorks 2008

• About us

• Introduction

• What?

• Why?

• How?

• Conclusion

Agenda

© ThoughtWorks 2008

Conclusion

Start to think about the

code as a communication

tool

Harness the power of the

tools at hand

Make the code talk the

domain knowledge

Write code for human

beings

More Information

XP Explained by Kent Beck

TDD by Example by Kent Beck

Implementation Patterns by Kent Beck

Refactoring by Martin Fowler

Clean Code by Bob Martin

Domain Driven Desing by Eric Evans

Literate Programming by David Knuth

about.me/vvgomes @MACSkeptic

Thanks :)

Did you like this subject?

Would you like to work with things

like that on a daily basis?

05/20/11 © ThoughtWorks 2008

Come get to know us, we are looking

for smart people interested in doing

awesome stuff

www.thoughtworks.com/career-opportunities

work@thoughtworks.com

05/20/11 © ThoughtWorks 2008