Ten Commandments Of A Software Engineer

3,249 views
3,142 views

Published on

Software engineering is not an easy profession. You have to constantly learn new things to improve your coding skills and make sure you produce better and cleaner code over time. It’s not difficult, but you have to be aware of a few basic principles. With them in mind you will feel a better engineer and will gain respect from your fellow engineers. And the Lord said: “Thou shall always remember to write unit tests - no matter the deadline. Remember to keep the build green. Thou shall commit often and with meaningful messages (...)”

Published in: Technology
1 Comment
3 Likes
Statistics
Notes
  • Oh, I wish all comments where specific and detailed, not just for commits but for bug fixes, again they mostly say Fixed, fixed what?

    I like the slides, would love to see the talk that goes with them.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
No Downloads
Views
Total views
3,249
On SlideShare
0
From Embeds
0
Number of Embeds
454
Actions
Shares
0
Downloads
34
Comments
1
Likes
3
Embeds 0
No embeds

No notes for slide

Ten Commandments Of A Software Engineer

  1. 1. PHP UK CONFERENCE 2013Ten Commandments Of ASoftware EngineerSebastian Marek, Internal Systems Technical Architect
  2. 2. ✴ a Pole living in Sheffield✴ over 12 years in development✴ Pascal, C++, PHP, perl, python, Java✴ co-author of 2 PHP Books✴ big fan of process automation✴ TDD and CI @proofek✴occasionally contributes to open-source projects✴ wants to be a knight h"ps://joind.in/8050
  3. 3. http://www.flickr.com/photos/archeon/8107633765
  4. 4. Couple that work for me http://www.reverendfun.com/?date=20010207
  5. 5. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  6. 6. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  7. 7. “I.
  8. 8.  Thou
  9. 9.  shalt
  10. 10.  not
  11. 11.  disrupt
  12. 12.   the
  13. 13.  legacy
  14. 14.  system”
  15. 15. Problem:✴ obsolete technology✴ business critical✴ poorly documented✴ change risk✴ costly maintenance http://www.flickr.com/photos/tomswift/4253985734/
  16. 16. Solution: ✴ extraction ✴ refactoring ✴ blackbox ✴ well defined interfacehp://www.flickr.com/photos/youraccount/3939769126
  17. 17. “II.
  18. 18.  Thou
  19. 19.  shalt
  20. 20.  document
  21. 21.  early
  22. 22.   and
  23. 23.   while
  24. 24.  thy
  25. 25.  mind
  26. 26.  is
  27. 27.  fresh”
  28. 28. ✴document from the beginningof the project✴ developer’s documentation ✓ automated documentation ✓ real world examples ✓ hints and tips✴ end-user documentation ✓ internal ✓ external hp://www.flickr.com/photos/jannem/510243975/
  29. 29. “III.
  30. 30.  Thou
  31. 31.  shalt
  32. 32.  speak
  33. 33.  up
  34. 34.  early
  35. 35.   and
  36. 36.  often”
  37. 37. effective communication ✴ within team ✓ trust ✓ weak and strong points effective communication ✴ within business ✓ communication channels ✓ open and honest ✓ provide options ✴ no decisions vs. bad decisionshp://www.flickr.com/photos/redspike/5622332401/
  38. 38. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  39. 39. “IV.
  40. 40.  Designeth
  41. 41.  not
  42. 42.  for
  43. 43.  complexity,
  44. 44.  but
  45. 45.  for
  46. 46.  simplicity;
  47. 47.   and
  48. 48.   wherever
  49. 49.  the
  50. 50.  Beast
  51. 51.  named
  52. 52.  Complex
  53. 53.   shall
  54. 54.  rear
  55. 55.  its
  56. 56.  ugly
  57. 57.  head,
  58. 58.   smiteth
  59. 59.  it
  60. 60.  with
  61. 61.  thy
  62. 62.  Sword
  63. 63.  named
  64. 64.  Modular,
  65. 65.   and
  66. 66.  let
  67. 67.  no
  68. 68.  Module
  69. 69.  be
  70. 70.  known
  71. 71.   by
  72. 72.  the
  73. 73.  Name
  74. 74.  of
  75. 75.  the
  76. 76.  Beast.”
  77. 77. hp://www.flickr.com/photos/kelp/4894889826hp://www.flickr.com/photos/kelp/4894023263 ✴ the curse of over-engineering ✴ convention over configuration design paradigm ✴ complex problems are best solved using simple solutions
  78. 78. “Make
  79. 79.  everything
  80. 80.  as
  81. 81.  simple
  82. 82.  as
  83. 83.  possible,
  84. 84.  but
  85. 85.  not
  86. 86.  simpler” hp://commons.wikimedia.org/wiki/Image:Albert_Einstein_Head.jpg
  87. 87. “V.
  88. 88.  Thou
  89. 89.  shalt
  90. 90.  not
  91. 91.  re-invent
  92. 92.   the
  93. 93.  wheel”
  94. 94. ✴ repeatable operations ✴ in-house frameworks ✴ open-source frameworks ✴ training and support costshp://www.flickr.com/photos/raoulpop/2280399565/
  95. 95. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  96. 96. “VI.
  97. 97.  Thou
  98. 98.  shalt
  99. 99.  commit
  100. 100.  often
  101. 101.   and
  102. 102.  your
  103. 103.  messages
  104. 104.  shalt
  105. 105.  be
  106. 106.  informative”
  107. 107. ✴ right tool for the job✴ commit frequency✴ commit verbosity hp://www.flickr.com/photos/27594459@N04/5941708682/
  108. 108. Meaningless commit messages
  109. 109. Meaningless commit messagescommit 04f1f73b9ad9a2fa968cc3d16701c84f10965e66Author: Generic Guy generic@email.netDate: Thu Nov 18 16:16:19 2010 +0000 Initial commit of the entire client application
  110. 110. Meaningless commit messagescommit 04f1f73b9ad9a2fa968cc3d16701c84f10965e66Author: Generic Guy generic@email.netDate: Thu Nov 18 16:16:19 2010 +0000 Initial commit of the entire client applicationcommit 38b22c0b4ed15ddf003d6e1d7fb879349a867957Author: Other Stuff Guy otherstuff@email.netDate: Mon Nov 22 16:26:27 2010 +0000 Changes to cancel other code
  111. 111. Meaningless commit messagescommit 04f1f73b9ad9a2fa968cc3d16701c84f10965e66Author: Generic Guy generic@email.netDate: Thu Nov 18 16:16:19 2010 +0000 Initial commit of the entire client applicationcommit 38b22c0b4ed15ddf003d6e1d7fb879349a867957Author: Other Stuff Guy otherstuff@email.netDate: Mon Nov 22 16:26:27 2010 +0000 Changes to cancel other codecommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Verbose Guy verboseguy@email.netDate: Tue Nov 23 16:30:16 2010 +0000 Expand on comment
  112. 112. Useless commit messages
  113. 113. Useless commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Fixed Guy fixedguy@email.netDate: Tue Nov 23 16:30:16 2010 +0000 Fixed
  114. 114. Useless commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Fixed Guy fixedguy@email.netDate: Tue Nov 23 16:30:16 2010 +0000 Fixedcommit a69657b2045f1105cc940b67bab4b80b0e07ebe9Author: Did Tests Guy didtests@email.netDate: Tue Mar 22 15:29:03 2011 +0000 Unit tests to prove the fix
  115. 115. Useless commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Fixed Guy fixedguy@email.netDate: Tue Nov 23 16:30:16 2010 +0000 Fixedcommit a69657b2045f1105cc940b67bab4b80b0e07ebe9Author: Did Tests Guy didtests@email.netDate: Tue Mar 22 15:29:03 2011 +0000 Unit tests to prove the fixcommit af1e80d98c9d8b6fe40efd3eadc27a9d4b1a2420Author: Failed Codereview Guyfailedreview@email.netDate: Wed Nov 24 17:07:16 2010 +0000 Code review changes, rename file
  116. 116. Informative commit messages
  117. 117. Informative commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: ProperComment Guy propercomment@email.netDate: Tue Nov 23 16:30:16 2010 +0000 Fixed TicketID: Scheduled changes cancelledwithout cancelling engineering appointmentDo not let scheduled changes to be cancelledwithout calling in, as there is an appointment thatneeds to be cancelled
  118. 118. Informative commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: ProperComment Guy propercomment@email.netDate: Tue Nov 23 16:30:16 2010 +0000 Fixed TicketID: Scheduled changes cancelledwithout cancelling engineering appointmentDo not let scheduled changes to be cancelledwithout calling in, as there is an appointment thatneeds to be cancelledcommit af1e80d98c9d8b6fe40efd3eadc27a9d4b1a2420Author: ProperComment Guy propercomment@email.netDate: Wed Nov 24 17:07:16 2010 +0000 Fixed TicketID: Missing data in migrationemailAdded the extra variables in the email needed for acustomer migrating from a product
  119. 119. “VII.
  120. 120.  Thou
  121. 121.  shalt
  122. 122.  not
  123. 123.  kill
  124. 124.   (maintainability)”
  125. 125. ✴coding standards thateverybody follows✴ keep your code under control ✓ size ✓ complexity✴ remove dead code hp://www.flickr.com/photos/brykmantra/76765412
  126. 126. “VIII.
  127. 127.  Thou
  128. 128.  shalt
  129. 129.  not
  130. 130.  repeat
  131. 131.   yourself”
  132. 132. ✴ copy/paste temptation ✴ clones mutation ✴ extract and reuse ASAP ✴tools that support clone detectionhp://www.flickr.com/photos/via/6182784051/
  133. 133. Project cycle phases Project( ini+a+on(QA( Design( ( Implementa+on(
  134. 134. “IX.
  135. 135.  Fear
  136. 136.  not
  137. 137.  the
  138. 138.  Priests
  139. 139.  of
  140. 140.  Quality
  141. 141.  Assurance
  142. 142.   nor
  143. 143.  the
  144. 144.  Altar
  145. 145.  of
  146. 146.  Testability,
  147. 147.  though
  148. 148.  they
  149. 149.  be
  150. 150.  stained
  151. 151.  with
  152. 152.  the
  153. 153.  blood
  154. 154.  of
  155. 155.  thy
  156. 156.   brethren;
  157. 157.   for
  158. 158.  they
  159. 159.  are
  160. 160.  the
  161. 161.  Salvation
  162. 162.  of
  163. 163.  the
  164. 164.  Righteous,
  165. 165.  and
  166. 166.  the
  167. 167.  Servants
  168. 168.  of
  169. 169.  our
  170. 170.  Lord,
  171. 171.  the
  172. 172.  Customer.”
  173. 173. ✴ manual testing vs. automated✴ unit tests✴ functional tests✴ frequent and early integration✴ setup CI server✴ fix bugs ASAP✴ take ownership hp://www.flickr.com/photos/alisdair/135306281
  174. 174. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  175. 175. “X.
  176. 176.  Thou
  177. 177.  shalt
  178. 178.  recognize
  179. 179.  and
  180. 180.   retain
  181. 181.  your
  182. 182.  top
  183. 183.  talent”
  184. 184. ✴ non fungible people✴ experience + talent✴ retention policy✴ “hit by a bus” vs. “upset and unhappy”✴people gardening - fertilizers vs. weedcontrol hp://www.flickr.com/photos/javacolleen/2897180413/
  185. 185. The 10 commandments of a Software EngineerI. Thou shalt not disrupt the legacy systemII. Thou shalt document early and while thy mind is freshIII. Thou shalt speak up early and oftenIV. Designeth not for complexity, but for simplicity ...V. Thou shalt not re-invent the wheelVI. Thou shalt commit often and your messages shalt be informativeVII. Thou shalt not kill (maintainability)VIII. Thou shalt not repeat yourselfIX. Fear not the Priests of Quality Assurance ...X. Thou shalt recognize and retain your top talent
  186. 186. Further readingThe Ten Commanndments of Software Engineering✴✓ http://bit.ly/IgHZTuThe Ten Commandments of Software Quality✴✓ http://bit.ly/yJfatpThe Ten Commandments of Egoless Programming✴✓ http://bit.ly/atT1F9✴ http://www.commitlogsfromlastnight.com/
  187. 187. Software craftsmanship Robert C. Martin @unclebobmartin✴ http://cleancoder.posterous.com/✴ http://blog.8thlight.com/✴ http://cleancoders.com/✴ http://manifesto.softwarecraftsmanship.org/✴ http://katas.softwarecraftsmanship.org/
  188. 188. hp://www.flickr.com/photos/the-­‐g-­‐uk/7221928760QA hps://joind.in/8050

×