Code as a communication tool
-
Upload
mozair-carmo -
Category
Technology
-
view
856 -
download
1
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
Project1UnitaryProject1Unitary
Project1FunctionalProject1Functional
Project2UnitaryProject2Unitary
Project2FunctionalProject2Functional
Project1RegressionProject1Regression
Project2RegressionProject2Regression
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