Your SlideShare is downloading. ×
Ten Commandments Of A Software Engineer
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Introducing the official SlideShare app

Stunning, full-screen experience for iPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Ten Commandments Of A Software Engineer

2,193
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, …

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
2,193
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
33
Comments
1
Likes
3
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. PHP UK CONFERENCE 2013Ten Commandments Of ASoftware EngineerSebastian Marek, Internal Systems Technical Architect
  • 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. http://www.flickr.com/photos/archeon/8107633765
  • 4. Couple that work for me http://www.reverendfun.com/?date=20010207
  • 5. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  • 6. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  • 7. “I.
  • 8.   Thou
  • 9.   shalt
  • 10.   not
  • 11.   disrupt
  • 12.    the
  • 13.   legacy
  • 14.   system”
  • 15. Problem:✴ obsolete technology✴ business critical✴ poorly documented✴ change risk✴ costly maintenance http://www.flickr.com/photos/tomswift/4253985734/
  • 16. Solution: ✴ extraction ✴ refactoring ✴ blackbox ✴ well defined interfaceh"p://www.flickr.com/photos/youraccount/3939769126
  • 17. “II.
  • 18.   Thou
  • 19.   shalt
  • 20.   document
  • 21.   early
  • 22.    and
  • 23.    while
  • 24.   thy
  • 25.   mind
  • 26.   is
  • 27.   fresh”
  • 28. ✴document from the beginningof the project✴ developer’s documentation ✓ automated documentation ✓ real world examples ✓ hints and tips✴ end-user documentation ✓ internal ✓ external h"p://www.flickr.com/photos/jannem/510243975/
  • 29. “III.
  • 30.   Thou
  • 31.   shalt
  • 32.   speak
  • 33.   up
  • 34.   early
  • 35.    and
  • 36.   often”
  • 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 decisionsh"p://www.flickr.com/photos/redspike/5622332401/
  • 38. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  • 39. “IV.
  • 40.   Designeth
  • 41.   not
  • 42.   for
  • 43.   complexity,
  • 44.   but
  • 45.   for
  • 46.   simplicity;
  • 47.    and
  • 48.    wherever
  • 49.   the
  • 50.   Beast
  • 51.   named
  • 52.   Complex
  • 53.    shall
  • 54.   rear
  • 55.   its
  • 56.   ugly
  • 57.   head,
  • 58.    smiteth
  • 59.   it
  • 60.   with
  • 61.   thy
  • 62.   Sword
  • 63.   named
  • 64.   Modular,
  • 65.    and
  • 66.   let
  • 67.   no
  • 68.   Module
  • 69.   be
  • 70.   known
  • 71.    by
  • 72.   the
  • 73.   Name
  • 74.   of
  • 75.   the
  • 76.   Beast.”
  • 77. h"p://www.flickr.com/photos/kelp/4894889826h"p://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. “Make
  • 79.   everything
  • 80.   as
  • 81.   simple
  • 82.   as
  • 83.   possible,
  • 84.   but
  • 85.   not
  • 86.   simpler” h"p://commons.wikimedia.org/wiki/Image:Albert_Einstein_Head.jpg
  • 87. “V.
  • 88.   Thou
  • 89.   shalt
  • 90.   not
  • 91.   re-invent
  • 92.    the
  • 93.   wheel”
  • 94. ✴ repeatable operations ✴ in-house frameworks ✴ open-source frameworks ✴ training and support costsh"p://www.flickr.com/photos/raoulpop/2280399565/
  • 95. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  • 96. “VI.
  • 97.   Thou
  • 98.   shalt
  • 99.   commit
  • 100.   often
  • 101.    and
  • 102.   your
  • 103.   messages
  • 104.   shalt
  • 105.   be
  • 106.   informative”
  • 107. ✴ right tool for the job✴ commit frequency✴ commit verbosity h"p://www.flickr.com/photos/27594459@N04/5941708682/
  • 108. Meaningless commit messages
  • 109. Meaningless commit messagescommit 04f1f73b9ad9a2fa968cc3d16701c84f10965e66Author: Generic Guy <generic@email.net>Date: Thu Nov 18 16:16:19 2010 +0000 Initial commit of the entire client application
  • 110. Meaningless commit messagescommit 04f1f73b9ad9a2fa968cc3d16701c84f10965e66Author: Generic Guy <generic@email.net>Date: Thu Nov 18 16:16:19 2010 +0000 Initial commit of the entire client applicationcommit 38b22c0b4ed15ddf003d6e1d7fb879349a867957Author: Other Stuff Guy <otherstuff@email.net>Date: Mon Nov 22 16:26:27 2010 +0000 Changes to cancel other code
  • 111. Meaningless commit messagescommit 04f1f73b9ad9a2fa968cc3d16701c84f10965e66Author: Generic Guy <generic@email.net>Date: Thu Nov 18 16:16:19 2010 +0000 Initial commit of the entire client applicationcommit 38b22c0b4ed15ddf003d6e1d7fb879349a867957Author: Other Stuff Guy <otherstuff@email.net>Date: Mon Nov 22 16:26:27 2010 +0000 Changes to cancel other codecommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Verbose Guy <verboseguy@email.net>Date: Tue Nov 23 16:30:16 2010 +0000 Expand on comment
  • 112. Useless commit messages
  • 113. Useless commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Fixed Guy <fixedguy@email.net>Date: Tue Nov 23 16:30:16 2010 +0000 Fixed
  • 114. Useless commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Fixed Guy <fixedguy@email.net>Date: Tue Nov 23 16:30:16 2010 +0000 Fixedcommit a69657b2045f1105cc940b67bab4b80b0e07ebe9Author: Did Tests Guy <didtests@email.net>Date: Tue Mar 22 15:29:03 2011 +0000 Unit tests to prove the fix
  • 115. Useless commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Fixed Guy <fixedguy@email.net>Date: Tue Nov 23 16:30:16 2010 +0000 Fixedcommit a69657b2045f1105cc940b67bab4b80b0e07ebe9Author: Did Tests Guy <didtests@email.net>Date: Tue Mar 22 15:29:03 2011 +0000 Unit tests to prove the fixcommit af1e80d98c9d8b6fe40efd3eadc27a9d4b1a2420Author: Failed Codereview Guy<failedreview@email.net>Date: Wed Nov 24 17:07:16 2010 +0000 Code review changes, rename file
  • 116. Informative commit messages
  • 117. Informative commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: ProperComment Guy <propercomment@email.net>Date: 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. Informative commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: ProperComment Guy <propercomment@email.net>Date: 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.net>Date: 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. “VII.
  • 120.   Thou
  • 121.   shalt
  • 122.   not
  • 123.   kill
  • 124.    (maintainability)”
  • 125. ✴coding standards thateverybody follows✴ keep your code under control ✓ size ✓ complexity✴ remove dead code h"p://www.flickr.com/photos/brykmantra/76765412
  • 126. “VIII.
  • 127.   Thou
  • 128.   shalt
  • 129.   not
  • 130.   repeat
  • 131.    yourself”
  • 132. ✴ copy/paste temptation ✴ clones mutation ✴ extract and reuse ASAP ✴tools that support clone detectionh"p://www.flickr.com/photos/via/6182784051/
  • 133. Project cycle phases Project( ini+a+on(QA( Design( ( Implementa+on(
  • 134. “IX.
  • 135.   Fear
  • 136.   not
  • 137.   the
  • 138.   Priests
  • 139.   of
  • 140.   Quality
  • 141.   Assurance
  • 142.    nor
  • 143.   the
  • 144.   Altar
  • 145.   of
  • 146.   Testability,
  • 147.   though
  • 148.   they
  • 149.   be
  • 150.   stained
  • 151.   with
  • 152.   the
  • 153.   blood
  • 154.   of
  • 155.   thy
  • 156.    brethren;
  • 157.    for
  • 158.   they
  • 159.   are
  • 160.   the
  • 161.   Salvation
  • 162.   of
  • 163.   the
  • 164.   Righteous,
  • 165.   and
  • 166.   the
  • 167.   Servants
  • 168.   of
  • 169.   our
  • 170.   Lord,
  • 171.   the
  • 172.   Customer.”
  • 173. ✴ manual testing vs. automated✴ unit tests✴ functional tests✴ frequent and early integration✴ setup CI server✴ fix bugs ASAP✴ take ownership h"p://www.flickr.com/photos/alisdair/135306281
  • 174. Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
  • 175. “X.
  • 176.   Thou
  • 177.   shalt
  • 178.   recognize
  • 179.   and
  • 180.    retain
  • 181.   your
  • 182.   top
  • 183.   talent”
  • 184. ✴ non fungible people✴ experience + talent✴ retention policy✴ “hit by a bus” vs. “upset and unhappy”✴people gardening - fertilizers vs. weedcontrol h"p://www.flickr.com/photos/javacolleen/2897180413/
  • 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. 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. 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. h"p://www.flickr.com/photos/the-­‐g-­‐uk/7221928760Q&A h"ps://joind.in/8050