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

Ten Commandments Of A Software Engineer

on

  • 2,155 views

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 (...)”

Statistics

Views

Total Views
2,155
Slideshare-icon Views on SlideShare
1,947
Embed Views
208

Actions

Likes
3
Downloads
27
Comments
1

5 Embeds 208

http://librosweb.es 201
https://twitter.com 4
https://www.google.com.mx 1
http://www.google.es 1
http://www.google.com.mx 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • 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.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Ten Commandments Of A Software Engineer Ten Commandments Of A Software Engineer Presentation Transcript

    • PHP UK CONFERENCE 2013Ten Commandments Of ASoftware EngineerSebastian Marek, Internal Systems Technical Architect
    • ✴ 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
    • http://www.flickr.com/photos/archeon/8107633765
    • Couple that work for me http://www.reverendfun.com/?date=20010207
    • Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
    • Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
    • “I.
    •   Thou
    •   shalt
    •   not
    •   disrupt
    •    the
    •   legacy
    •   system”
    • Problem:✴ obsolete technology✴ business critical✴ poorly documented✴ change risk✴ costly maintenance http://www.flickr.com/photos/tomswift/4253985734/
    • Solution: ✴ extraction ✴ refactoring ✴ blackbox ✴ well defined interfaceh"p://www.flickr.com/photos/youraccount/3939769126
    • “II.
    •   Thou
    •   shalt
    •   document
    •   early
    •    and
    •    while
    •   thy
    •   mind
    •   is
    •   fresh”
    • ✴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/
    • “III.
    •   Thou
    •   shalt
    •   speak
    •   up
    •   early
    •    and
    •   often”
    • 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/
    • Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
    • “IV.
    •   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.”
    • 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
    • “Make
    •   everything
    •   as
    •   simple
    •   as
    •   possible,
    •   but
    •   not
    •   simpler” h"p://commons.wikimedia.org/wiki/Image:Albert_Einstein_Head.jpg
    • “V.
    •   Thou
    •   shalt
    •   not
    •   re-invent
    •    the
    •   wheel”
    • ✴ repeatable operations ✴ in-house frameworks ✴ open-source frameworks ✴ training and support costsh"p://www.flickr.com/photos/raoulpop/2280399565/
    • Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
    • “VI.
    •   Thou
    •   shalt
    •   commit
    •   often
    •    and
    •   your
    •   messages
    •   shalt
    •   be
    •   informative”
    • ✴ right tool for the job✴ commit frequency✴ commit verbosity h"p://www.flickr.com/photos/27594459@N04/5941708682/
    • Meaningless commit messages
    • 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
    • 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
    • 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
    • Useless commit messages
    • Useless commit messagescommit 971704e40b00cbd5fde612ed5aeb96e174bc9d2aAuthor: Fixed Guy <fixedguy@email.net>Date: Tue Nov 23 16:30:16 2010 +0000 Fixed
    • 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
    • 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
    • Informative commit messages
    • 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
    • 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>
    • “VII.
    •   Thou
    •   shalt
    •   not
    •   kill
    •    (maintainability)”
    • ✴coding standards thateverybody follows✴ keep your code under control ✓ size ✓ complexity✴ remove dead code h"p://www.flickr.com/photos/brykmantra/76765412
    • “VIII.
    •   Thou
    •   shalt
    •   not
    •   repeat
    •    yourself”
    • ✴ copy/paste temptation ✴ clones mutation ✴ extract and reuse ASAP ✴tools that support clone detectionh"p://www.flickr.com/photos/via/6182784051/
    • Project cycle phases Project( ini+a+on(QA( Design( ( Implementa+on(
    • “IX.
    •   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.”
    • ✴ 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
    • Project cycle phases Project( Closure( ini+a+on(QA( Design( ( Implementa+on(
    • “X.
    •   Thou
    •   shalt
    •   recognize
    •   and
    •    retain
    •   your
    •   top
    •   talent”
    • ✴ 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/
    • 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
    • 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/
    • 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/
    • h"p://www.flickr.com/photos/the-­‐g-­‐uk/7221928760Q&A h"ps://joind.in/8050