Code as a Communication Tool

856 views
770 views

Published on

Presentation done at UFLA University on May 23th 2011.

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
856
On SlideShare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
18
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Code as a Communication Tool

  1. 1. Code as a Communication Tool AKA Usando as Linguagens ao Seu Favor Vinicius Gomes Mozair May, 23rd 2011 © ThoughtWorks 2008
  2. 2. Agenda• About us• Introduction• What?• Why?• How?• Conclusion © ThoughtWorks 2008
  3. 3. Agenda• About us• Introduction• What?• Why?• How?• Conclusion © ThoughtWorks 2008
  4. 4. About usVinicius Gomes Mozair• about.me/vvgomes  @MACSkeptic  github.com/macskeptic © ThoughtWorks 2008
  5. 5. Agenda• About us• Introduction• What?• Why?• How?• Conclusion © ThoughtWorks 2008
  6. 6. Introduction © ThoughtWorks 2008
  7. 7. Reading existing code is expensive
  8. 8. Understanding existing code is expensive
  9. 9. Finding out where tochange is expensive
  10. 10. Maintenance is expensive
  11. 11. So, what to do?
  12. 12. Agenda• About us• Introduction• What?• Why?• How?• Conclusion © ThoughtWorks 2008
  13. 13. What? © ThoughtWorks 2008
  14. 14. Communicate through code effectively
  15. 15. Make it fast to read
  16. 16. Make it easy to understand
  17. 17. Express domain knowledge through software
  18. 18. Keep maintenance costs low
  19. 19. Agenda• About us• Introduction• What?• Why?• How?• Conclusion © ThoughtWorks 2008
  20. 20. Why? © ThoughtWorks 2008
  21. 21. Maintenance
  22. 22. Tech Debt © ThoughtWorks 2008
  23. 23. Time to market vs. Technical debt © ThoughtWorks 2008
  24. 24. What we do• XP –Communication –Simplicity –Feedback –Courage –Respect © ThoughtWorks 2008
  25. 25. Feedback© ThoughtWorks 2008
  26. 26. FeedbackProject1 Project2 Unitary Unitary Project1 Project2Functional Functional Project1 Project2Regression Regression © ThoughtWorks 2008
  27. 27. Help your team
  28. 28. Help your team• Make people more productive
  29. 29. Help your team• Make people more productive• Avoid ambiguous interpretation
  30. 30. Help your team• Make people more productive• Avoid ambiguous interpretation• Drop stress levels
  31. 31. Help your team• Make people more productive• Avoid ambiguous interpretation• Drop stress levels• Help people to focus on the right things
  32. 32. Agenda• About us• Introduction• What?• Why?• How?• Conclusion © ThoughtWorks 2008
  33. 33. How? © ThoughtWorks 2008
  34. 34. • Language constructs
  35. 35. • Language constructs• Implementation Patterns
  36. 36. • Language constructs• Implementation Patterns• Domain Driven Design
  37. 37. • Language constructs• Implementation Patterns• Domain Driven Design• Test Driven Development / Design
  38. 38. • Language constructs• Implementation Patterns• Domain Driven Design• Test Driven Development / Design• Refactoring
  39. 39. • Language constructs• Implementation Patterns• Domain Driven Design• Test Driven Development / Design• Refactoring• Domain Specific Languages
  40. 40. Language constructs
  41. 41. © ThoughtWorks 2008
  42. 42. © ThoughtWorks 2008
  43. 43. © ThoughtWorks 2008
  44. 44. © ThoughtWorks 2008
  45. 45. Avoid the Comic Sans Effect
  46. 46. Tell “what”, not “how”
  47. 47. © ThoughtWorks 2008
  48. 48. © ThoughtWorks 2008
  49. 49. © ThoughtWorks 2008
  50. 50. Implementation Patterns
  51. 51. Name by role
  52. 52. Abiding by the law of Demeter
  53. 53. Abstraction symmetry
  54. 54. One-line ifs
  55. 55. Test DrivenDesign/Development © ThoughtWorks 2008
  56. 56. © ThoughtWorks 2008
  57. 57. © ThoughtWorks 2008
  58. 58. © ThoughtWorks 2008
  59. 59. © ThoughtWorks 2008
  60. 60. © ThoughtWorks 2008
  61. 61. Refactoring © ThoughtWorks 2008
  62. 62. © ThoughtWorks 2008
  63. 63. © ThoughtWorks 2008
  64. 64. © ThoughtWorks 2008
  65. 65. © ThoughtWorks 2008
  66. 66. © ThoughtWorks 2008
  67. 67. © ThoughtWorks 2008
  68. 68. Domain Specific Languages
  69. 69. © ThoughtWorks 2008
  70. 70. © ThoughtWorks 2008
  71. 71. Agenda• About us• Introduction• What?• Why?• How?• Conclusion © ThoughtWorks 2008
  72. 72. Conclusion
  73. 73. Start to think about thecode as a communication tool
  74. 74. Harness the power of the tools at hand
  75. 75. Make the code talk the domain knowledge
  76. 76. Write code for human beings
  77. 77. 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
  78. 78. about.me/vvgomes @MACSkeptic
  79. 79. Thanks :)
  80. 80. Did you like this subject?Would you like to work with things like that on a daily basis?05/20/11 © ThoughtWorks 2008
  81. 81. Come get to know us, we are looking for smart people interested in doing awesome stuff www.thoughtworks.com/career-opportunities work@thoughtworks.com05/20/11 © ThoughtWorks 2008

×