Code as a Communication Tool
-
Upload
vinicius-gomes -
Category
Documents
-
view
692 -
download
0
description
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
05/20/11 © ThoughtWorks 2008