SlideShare a Scribd company logo
1 of 103
Download to read offline
Code as a Communication Tool
    AKA Usando as Linguagens ao Seu Favor


                                         Vinicius Gomes
                                                  Mozair


                 May, 23rd 2011

                   © ThoughtWorks 2008
Agenda

•   About us
•   Introduction
•   What?
•   Why?
•   How?
•   Conclusion

                   © ThoughtWorks 2008
Agenda

•   About us
•   Introduction
•   What?
•   Why?
•   How?
•   Conclusion

                   © ThoughtWorks 2008
About us



Vinicius Gomes                   Mozair
• about.me/vvgomes                @MACSkeptic
                                  github.com/macskeptic




                     © ThoughtWorks 2008
Agenda

•   About us
•   Introduction
•   What?
•   Why?
•   How?
•   Conclusion

                   © ThoughtWorks 2008
Introduction


    © ThoughtWorks 2008
Reading existing code is
      expensive
Understanding existing
  code is expensive
Finding out where to
change is expensive
Maintenance is expensive
So, what to do?
Agenda

•   About us
•   Introduction
•   What?
•   Why?
•   How?
•   Conclusion

                   © ThoughtWorks 2008
What?


 © ThoughtWorks 2008
Communicate through
  code effectively
Make it fast to read
Make it easy to understand
Express domain knowledge
     through software
Keep maintenance costs
         low
Agenda

•   About us
•   Introduction
•   What?
•   Why?
•   How?
•   Conclusion

                   © ThoughtWorks 2008
Why?


 © ThoughtWorks 2008
Maintenance
Tech Debt




 © ThoughtWorks 2008
Time to market vs. Technical debt




            © ThoughtWorks 2008
What we do


• XP
 –Communication
 –Simplicity
 –Feedback
 –Courage
 –Respect

             © ThoughtWorks 2008
Feedback




© ThoughtWorks 2008
Feedback


Project1                    Project2
 Unitary                     Unitary
 Project1               Project2
Functional             Functional
 Project1               Project2
Regression             Regression

           © ThoughtWorks 2008
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
Agenda

•   About us
•   Introduction
•   What?
•   Why?
•   How?
•   Conclusion

                   © ThoughtWorks 2008
How?


 © ThoughtWorks 2008
• 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
Agenda

•   About us
•   Introduction
•   What?
•   Why?
•   How?
•   Conclusion

                   © 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

More Related Content

Similar to Code as a Communication Tool

Code as a communication tool
Code as a communication toolCode as a communication tool
Code as a communication toolMozair Carmo
 
Distributed Agile: An oxymoron?
Distributed Agile: An oxymoron?Distributed Agile: An oxymoron?
Distributed Agile: An oxymoron?Thoughtworks
 
Distributed Agile: An Oxymoron?
Distributed Agile: An Oxymoron?Distributed Agile: An Oxymoron?
Distributed Agile: An Oxymoron?Thoughtworks
 
Outsource with Invento Labs
Outsource with Invento LabsOutsource with Invento Labs
Outsource with Invento LabsInvento Labs
 
Coaching in distributed environment
Coaching in distributed environmentCoaching in distributed environment
Coaching in distributed environmentJaroslav Procházka
 
Getting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsGetting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsMichael Keeling
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): RevistedMike Harris
 
Tinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical CommunicatorTinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical CommunicatorBeth Agnew
 
Taking The Tyrannosaurus Out Of Technology
Taking The Tyrannosaurus Out Of TechnologyTaking The Tyrannosaurus Out Of Technology
Taking The Tyrannosaurus Out Of TechnologyDoug Devitre
 
Targeted documentation STC Houston, Mar 20, 2012
Targeted documentation   STC Houston, Mar 20, 2012Targeted documentation   STC Houston, Mar 20, 2012
Targeted documentation STC Houston, Mar 20, 2012STC_Houston
 
IBM Sametime 8.5.1 How do I get there?
IBM Sametime 8.5.1 How do I get there?IBM Sametime 8.5.1 How do I get there?
IBM Sametime 8.5.1 How do I get there?Chris Miller
 
Keeping the spin – from idea to cash in 6 weeks
Keeping the spin – from idea to cash in 6 weeksKeeping the spin – from idea to cash in 6 weeks
Keeping the spin – from idea to cash in 6 weeksJaroslav Procházka
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny daybcoder
 
Friday final test
Friday final testFriday final test
Friday final testbcoder
 
SACon 2019 - Surviving in a Microservices Environment
SACon 2019 - Surviving in a Microservices EnvironmentSACon 2019 - Surviving in a Microservices Environment
SACon 2019 - Surviving in a Microservices EnvironmentSteve Pember
 
Getting Inside Information on Collaboration
Getting Inside Information on CollaborationGetting Inside Information on Collaboration
Getting Inside Information on CollaborationSarah O'Keefe
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)Mike Harris
 
Cloud4Business breakfast meeting
Cloud4Business breakfast meeting Cloud4Business breakfast meeting
Cloud4Business breakfast meeting scottcrowther
 
Talking to organisations with x-road
Talking to organisations with x-roadTalking to organisations with x-road
Talking to organisations with x-roadAndres Kütt
 

Similar to Code as a Communication Tool (20)

Code as a communication tool
Code as a communication toolCode as a communication tool
Code as a communication tool
 
Distributed Agile: An oxymoron?
Distributed Agile: An oxymoron?Distributed Agile: An oxymoron?
Distributed Agile: An oxymoron?
 
Distributed Agile: An Oxymoron?
Distributed Agile: An Oxymoron?Distributed Agile: An Oxymoron?
Distributed Agile: An Oxymoron?
 
Outsource with Invento Labs
Outsource with Invento LabsOutsource with Invento Labs
Outsource with Invento Labs
 
Coaching in distributed environment
Coaching in distributed environmentCoaching in distributed environment
Coaching in distributed environment
 
It's XP, Stupid
It's XP, StupidIt's XP, Stupid
It's XP, Stupid
 
Getting Started with Architecture Decision Records
Getting Started with Architecture Decision RecordsGetting Started with Architecture Decision Records
Getting Started with Architecture Decision Records
 
Extreme Programming (XP): Revisted
Extreme Programming (XP): RevistedExtreme Programming (XP): Revisted
Extreme Programming (XP): Revisted
 
Tinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical CommunicatorTinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
Tinker Tailor Soldier Sailor - What you Can Do as a Technical Communicator
 
Taking The Tyrannosaurus Out Of Technology
Taking The Tyrannosaurus Out Of TechnologyTaking The Tyrannosaurus Out Of Technology
Taking The Tyrannosaurus Out Of Technology
 
Targeted documentation STC Houston, Mar 20, 2012
Targeted documentation   STC Houston, Mar 20, 2012Targeted documentation   STC Houston, Mar 20, 2012
Targeted documentation STC Houston, Mar 20, 2012
 
IBM Sametime 8.5.1 How do I get there?
IBM Sametime 8.5.1 How do I get there?IBM Sametime 8.5.1 How do I get there?
IBM Sametime 8.5.1 How do I get there?
 
Keeping the spin – from idea to cash in 6 weeks
Keeping the spin – from idea to cash in 6 weeksKeeping the spin – from idea to cash in 6 weeks
Keeping the spin – from idea to cash in 6 weeks
 
It is a sunny day
It is a sunny dayIt is a sunny day
It is a sunny day
 
Friday final test
Friday final testFriday final test
Friday final test
 
SACon 2019 - Surviving in a Microservices Environment
SACon 2019 - Surviving in a Microservices EnvironmentSACon 2019 - Surviving in a Microservices Environment
SACon 2019 - Surviving in a Microservices Environment
 
Getting Inside Information on Collaboration
Getting Inside Information on CollaborationGetting Inside Information on Collaboration
Getting Inside Information on Collaboration
 
It's XP Stupid (2019)
It's XP Stupid (2019)It's XP Stupid (2019)
It's XP Stupid (2019)
 
Cloud4Business breakfast meeting
Cloud4Business breakfast meeting Cloud4Business breakfast meeting
Cloud4Business breakfast meeting
 
Talking to organisations with x-road
Talking to organisations with x-roadTalking to organisations with x-road
Talking to organisations with x-road
 

Code as a Communication Tool