Code as a communication tool

1,059 views

Published on

Published in: Technology, Design
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
1,059
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
11
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Code as a communication tool

  1. 1. Code as a Communication Tool<br />AKA Usando as Linguagens ao Seu Favor<br />Vinicius Gomes<br />Mozair<br />May, 23rd 2011<br />© ThoughtWorks2008<br />
  2. 2. Agenda<br /><ul><li>About us
  3. 3. Introduction
  4. 4. What?
  5. 5. Why?
  6. 6. How?
  7. 7. Conclusion</li></ul>© ThoughtWorks2008<br />
  8. 8. Agenda<br /><ul><li>About us
  9. 9. Introduction
  10. 10. What?
  11. 11. Why?
  12. 12. How?
  13. 13. Conclusion</li></ul>© ThoughtWorks2008<br />
  14. 14. About us<br />Vinicius Gomes<br /><ul><li>about.me/vvgomes</li></ul>Mozair<br /><ul><li>@MACSkeptic
  15. 15. github.com/macskeptic</li></ul>© ThoughtWorks2008<br />
  16. 16. Agenda<br /><ul><li>About us
  17. 17. Introduction
  18. 18. What?
  19. 19. Why?
  20. 20. How?
  21. 21. Conclusion</li></ul>© ThoughtWorks2008<br />
  22. 22. Introduction<br />© ThoughtWorks2008<br />
  23. 23. Reading existing code is expensive<br />
  24. 24. Understanding existing code is expensive<br />
  25. 25. Finding out where to change is expensive<br />
  26. 26. Maintenance is expensive<br />
  27. 27. So, what to do?<br />
  28. 28. Agenda<br /><ul><li>About us
  29. 29. Introduction
  30. 30. What?
  31. 31. Why?
  32. 32. How?
  33. 33. Conclusion</li></ul>© ThoughtWorks2008<br />
  34. 34. What?<br />© ThoughtWorks2008<br />
  35. 35.
  36. 36.
  37. 37.
  38. 38.
  39. 39. Communicate through code effectively<br />
  40. 40. Make it fast to read<br />
  41. 41. Make it easy to understand<br />
  42. 42. Express domain knowledge through software<br />
  43. 43. Keep maintenance costs low<br />
  44. 44.
  45. 45.
  46. 46. Agenda<br /><ul><li>About us
  47. 47. Introduction
  48. 48. What?
  49. 49. Why?
  50. 50. How?
  51. 51. Conclusion</li></ul>© ThoughtWorks2008<br />
  52. 52. Why?<br />© ThoughtWorks2008<br />
  53. 53. Maintenance<br />
  54. 54. Tech Debt<br />© ThoughtWorks2008<br />
  55. 55. Time to market vs. Technical debt<br />© ThoughtWorks2008<br />
  56. 56. What we do<br /><ul><li>XP
  57. 57. Communication
  58. 58. Simplicity
  59. 59. Feedback
  60. 60. Courage
  61. 61. Respect</li></ul>© ThoughtWorks2008<br />
  62. 62. Feedback<br />© ThoughtWorks2008<br />
  63. 63. Feedback<br />Project1<br />Unitary<br />Project2<br />Unitary<br />Project1<br />Functional<br />Project2<br />Functional<br />Project1<br />Regression<br />Project2<br />Regression<br />© ThoughtWorks2008<br />
  64. 64. Help your team<br />
  65. 65. Help your team<br /><ul><li>Make people more productive</li></li></ul><li>Help your team<br /><ul><li>Make people more productive
  66. 66. Avoid ambiguous interpretation</li></li></ul><li>Help your team<br /><ul><li>Make people more productive
  67. 67. Avoid ambiguous interpretation
  68. 68. Drop stress levels</li></li></ul><li>Help your team<br /><ul><li>Make people more productive
  69. 69. Avoid ambiguous interpretation
  70. 70. Drop stress levels
  71. 71. Help people to focus on the right things</li></li></ul><li>Agenda<br /><ul><li>About us
  72. 72. Introduction
  73. 73. What?
  74. 74. Why?
  75. 75. How?
  76. 76. Conclusion</li></ul>© ThoughtWorks2008<br />
  77. 77. How?<br />© ThoughtWorks2008<br />
  78. 78. <ul><li>Language constructs</li></li></ul><li><ul><li>Language constructs
  79. 79. Implementation Patterns</li></li></ul><li><ul><li>Language constructs
  80. 80. Implementation Patterns
  81. 81. Domain Driven Design</li></li></ul><li><ul><li>Language constructs
  82. 82. Implementation Patterns
  83. 83. Domain Driven Design
  84. 84. Test Driven Development / Design</li></li></ul><li><ul><li>Language constructs
  85. 85. Implementation Patterns
  86. 86. Domain Driven Design
  87. 87. Test Driven Development / Design
  88. 88. Refactoring</li></li></ul><li><ul><li>Language constructs
  89. 89. Implementation Patterns
  90. 90. Domain Driven Design
  91. 91. Test Driven Development / Design
  92. 92. Refactoring
  93. 93. Domain Specific Languages</li></li></ul><li>Language constructs<br />
  94. 94.
  95. 95.
  96. 96. © ThoughtWorks2008<br />
  97. 97. © ThoughtWorks2008<br />
  98. 98. © ThoughtWorks2008<br />
  99. 99. © ThoughtWorks2008<br />
  100. 100. Avoid the Comic Sans Effect<br />
  101. 101.
  102. 102.
  103. 103.
  104. 104.
  105. 105. Tell “what”, not “how”<br />
  106. 106. © ThoughtWorks2008<br />
  107. 107. © ThoughtWorks2008<br />
  108. 108. © ThoughtWorks2008<br />
  109. 109. Implementation Patterns<br />
  110. 110. Name by role<br />
  111. 111.
  112. 112.
  113. 113. Abiding by the law of Demeter<br />
  114. 114.
  115. 115.
  116. 116.
  117. 117.
  118. 118. Abstraction symmetry<br />
  119. 119.
  120. 120.
  121. 121. One-line ifs<br />
  122. 122.
  123. 123.
  124. 124. Test Driven Design/Development<br />© ThoughtWorks2008<br />
  125. 125. © ThoughtWorks2008<br />
  126. 126. © ThoughtWorks2008<br />
  127. 127. © ThoughtWorks2008<br />
  128. 128. © ThoughtWorks2008<br />
  129. 129. © ThoughtWorks2008<br />
  130. 130. Refactoring<br />© ThoughtWorks2008<br />
  131. 131. © ThoughtWorks2008<br />
  132. 132. © ThoughtWorks2008<br />
  133. 133. © ThoughtWorks2008<br />
  134. 134. © ThoughtWorks2008<br />
  135. 135. © ThoughtWorks2008<br />
  136. 136. © ThoughtWorks2008<br />
  137. 137. Domain Specific Languages<br />
  138. 138. © ThoughtWorks2008<br />
  139. 139. © ThoughtWorks2008<br />
  140. 140. Agenda<br /><ul><li>About us
  141. 141. Introduction
  142. 142. What?
  143. 143. Why?
  144. 144. How?
  145. 145. Conclusion</li></ul>© ThoughtWorks2008<br />
  146. 146. Conclusion<br />
  147. 147. Start to think about the code as a communication tool<br />
  148. 148. Harness the power of the tools at hand<br />
  149. 149. Make the code talk the domain knowledge<br />
  150. 150. Write code for human beings<br />
  151. 151. More Information<br /><ul><li>XP Explainedby Kent Beck
  152. 152. TDD by Exampleby Kent Beck
  153. 153. Implementation Patternsby Kent Beck
  154. 154. Refactoring by Martin Fowler
  155. 155. Clean Codeby Bob Martin
  156. 156. Domain Driven Desingby Eric Evans
  157. 157. Literate Programming by David Knuth</li></li></ul><li>?<br />about.me/vvgomes<br />@MACSkeptic<br />
  158. 158. Thanks :)<br />
  159. 159. Did you like this subject?<br />Would you like to work with things like that on a daily basis?<br />05/20/11<br />© ThoughtWorks2008<br />
  160. 160. Come get to know us, we are looking for smart people interested in doing awesome stuff <br />www.thoughtworks.com/career-opportunities<br />work@thoughtworks.com<br />05/20/11<br />© ThoughtWorks2008<br />

×