Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Ten Commandments                          Of                  A Software EngineerSebastian Marek
• a Pole living in Sheffield   • over 12 years in     development   • Pascal, C++, PHP, perl,     python, Java   • co-auth...
@proofek
Couple that works for me…
I. Thou shalt not disrupt the legacy                         system.1st commandment
Problem:•   Obsolete technology•   Business critical•   Poorly documented•   Change risk vs. costly maintenance    I. Thou...
Solution:• extract• blackbox• Hide behind well defined interface I. Thou shalt not disrupt the legacy system.
II. Thou shalt not re-invent the wheel.2nd commandment
• Repeatable operations   • In-house framework vs. open source     framework   • Training and support costsII. Thou shalt ...
III. Thou shalt commit often and your               messages shalt be informative3rd commandment
• Right tool for the job• Commit frequency• Commit verbosity   III. Thou shalt commit often and your messages shalt be …
commit 971704e40b00cbd5fde612ed5aeb96e174bc9d2a     Author: Verbose Guy <verboseguy@email.net>     Date:   Tue Nov 23 16:3...
commit 971704e40b00cbd5fde612ed5aeb96e174bc9d2a     Author: Fixed Guy <fixedguy@email.net>     Date:   Tue Nov 23 16:30:16...
commit 971704e40b00cbd5fde612ed5aeb96e174bc9d2a      Author: ProperComment Guy <propercomment@email.net>      Date:   Tue ...
IV. Thou shalt document early and                 while thy mind is fresh4th commandment
• Document from the beginning of the project• Developer documentation  – Automated documentation  – Real world examples  –...
V. Fear not the Priests of Quality         Assurance nor the Altar of Testability,         though they be stained with the...
•   Manual testing vs. automated•   Unit tests•   Functional tests•   Frequent and early integration•   Setup CI server•  ...
VI. Designeth not for complexity, but        for simplicity; and wherever the Beast          named Complex shall rear its ...
• The curse of overengineering• Convention over configuration design  paradigm• Complex problems are best solved using  si...
"Make everything as simple as        possible, but not simpler”                                                 Albert Ein...
VII. Thou shalt not kill (maintainability)7th commandment
• Coding standard that everybody follows     • Keep your code under control          – Size          – Complexity     • Re...
VIII. Thou shalt not repeat yourself8th commandment
VIII. Thou shalt not repeat yourself                         (Copy)8th commandment
•   Copy/paste temptation    •   Clones mutations    •   Extract and reuse ASAP    •   Tools that support clone detectionV...
IX. Thou shalt speak up early and                           often9th commandment
• Effective communication within team       – Trust       – Weak and strong points  • Effective communication within busin...
X. Thou shalt recognize and retain                    your top talent.10th commandment
•   Non fungible people    •   Experience + talent    •   Retention policy    •   “Hit by a bus” vs. “Upset and unhappy”  ...
Thanks to:   Pictures   • http://www.flickr.com/photos/biscuitsmlp/3439419556/in/photostream/   • http://orangeroom.devian...
Questions?      https://joind.in/6290Q&A
Ten Commandments Of A Software Engineer
Upcoming SlideShare
Loading in …5
×

Ten Commandments Of A Software Engineer

7,941 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
  • As to disrupting legacy systems: An on-line vendor asked me to do minor upgrades and keep his system running. However, his main problem was not addressing huge security holes that previous 'professional amateurs' had left in as debug statements. The system was, indeed, a bramble bush.

    Since he had no version control, The time honored rule of 'you touch the code, you own it' meant I was in for a heap of abuse. -- This was one legacy system that created huge liabilities for everyone involved.

    I still wish this vendor well, but his headlights were just not turned on, so I fired this boss with prejudice.
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Ten Commandments Of A Software Engineer

  1. Ten Commandments Of A Software EngineerSebastian Marek
  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 • occasionally contributes to open source projects • wants to be a knight@proofek
  3. @proofek
  4. Couple that works for me…
  5. I. Thou shalt not disrupt the legacy system.1st commandment
  6. Problem:• Obsolete technology• Business critical• Poorly documented• Change risk vs. costly maintenance I. Thou shalt not disrupt the legacy system.
  7. Solution:• extract• blackbox• Hide behind well defined interface I. Thou shalt not disrupt the legacy system.
  8. II. Thou shalt not re-invent the wheel.2nd commandment
  9. • Repeatable operations • In-house framework vs. open source framework • Training and support costsII. Thou shalt not re-invent the wheel.
  10. III. Thou shalt commit often and your messages shalt be informative3rd commandment
  11. • Right tool for the job• Commit frequency• Commit verbosity III. Thou shalt commit often and your messages shalt be …
  12. commit 971704e40b00cbd5fde612ed5aeb96e174bc9d2a Author: Verbose Guy <verboseguy@email.net> Date: Tue Nov 23 16:30:16 2010 +0000 Expand on comment commit 38b22c0b4ed15ddf003d6e1d7fb879349a867957 Author: Other Stuff Guy <otherstuff@email.net> Date: Mon Nov 22 16:26:27 2010 +0000 Changes to cancel other code commit 04f1f73b9ad9a2fa968cc3d16701c84f10965e66 Author: Generic Guy <generic@email.net> Date: Thu Nov 18 16:16:19 2010 +0000 Initial commit of the entire client applicationMeaningless commit messages
  13. commit 971704e40b00cbd5fde612ed5aeb96e174bc9d2a Author: Fixed Guy <fixedguy@email.net> Date: Tue Nov 23 16:30:16 2010 +0000 Fixed commit a69657b2045f1105cc940b67bab4b80b0e07ebe9 Author: Did Tests Guy <didtests@email.net> Date: Tue Mar 22 15:29:03 2011 +0000 Unit tests to prove the fix commit af1e80d98c9d8b6fe40efd3eadc27a9d4b1a2420 Author: Failed Codereview Guy <failedreview@email.net> Date: Wed Nov 24 17:07:16 2010 +0000 Code review changes, rename fileUseless commit messages
  14. commit 971704e40b00cbd5fde612ed5aeb96e174bc9d2a Author: ProperComment Guy <propercomment@email.net> Date: Tue Nov 23 16:30:16 2010 +0000 Fixed <TicketID>: Scheduled changes cancelled without cancelling engineering appointment Do not let scheduled changes to be cancelled without calling in, as there is an appointment that needs to be cancelled commit af1e80d98c9d8b6fe40efd3eadc27a9d4b1a2420 Author: ProperComment Guy <propercomment@email.net> Date: Wed Nov 24 17:07:16 2010 +0000 Fixed <TicketID>: Missing data in migration email Added the extra variables in the email needed for a customer migrating from <a product>Informative commit messages
  15. IV. Thou shalt document early and while thy mind is fresh4th commandment
  16. • Document from the beginning of the project• Developer documentation – Automated documentation – Real world examples – Hints and tips• End user documentation – Internal – external IV. Thou shalt document early and while thy mind is fresh
  17. V. Fear not the Priests of Quality Assurance nor the Altar of Testability, though they be stained with the blood of thy brethren; for they are the Salvation of the Righteous, and the Servants of our Lord, the Customer.5th commandment
  18. • Manual testing vs. automated• Unit tests• Functional tests• Frequent and early integration• Setup CI server• Fix bugs ASAP• Take ownership V. Fear not the Priests of Quality Assurance nor the Altar of …
  19. VI. Designeth not for complexity, but for simplicity; and wherever the Beast named Complex shall rear its ugly head, smiteth it with thy Sword named Modular, and let no Module be known by the Name of the Beast.6th commandment
  20. • The curse of overengineering• Convention over configuration design paradigm• Complex problems are best solved using simple solutions. VI. Designeth not for complexity, but for simplicity; and wherever…
  21. "Make everything as simple as possible, but not simpler” Albert EinsteinVI. Designeth not for complexity, but for simplicity; and wherever…
  22. VII. Thou shalt not kill (maintainability)7th commandment
  23. • Coding standard that everybody follows • Keep your code under control – Size – Complexity • Remove dead codeVII. Thou shalt not kill (maintainability)
  24. VIII. Thou shalt not repeat yourself8th commandment
  25. VIII. Thou shalt not repeat yourself (Copy)8th commandment
  26. • Copy/paste temptation • Clones mutations • Extract and reuse ASAP • Tools that support clone detectionVIII. Thou shalt not repeat yourself
  27. IX. Thou shalt speak up early and often9th commandment
  28. • Effective communication within team – Trust – Weak and strong points • Effective communication within business – Communications channels – Open and honest – Provide options • No decisions vs. bad decisionsIX. Thou shalt speak up early and often
  29. X. Thou shalt recognize and retain your top talent.10th commandment
  30. • Non fungible people • Experience + talent • Retention policy • “Hit by a bus” vs. “Upset and unhappy” • People gardening – fertilizers vs. weed controlX. Thou shalt recognize and retain your top talent.
  31. Thanks to: Pictures • http://www.flickr.com/photos/biscuitsmlp/3439419556/in/photostream/ • http://orangeroom.deviantart.com/#/d4rsmkf • http://www.flickr.com/photos/imnotquitejack/4099186535/ Further reading • The Ten Commanndments of Software Engineering - http://bit.ly/IgHZTu • The Ten Commandments of Software Quality - http://bit.ly/yJfatp • The Ten Commandments of Egoless Programming - http://bit.ly/atT1F9Big thanks
  32. Questions? https://joind.in/6290Q&A

×