$30 off During Our Annual Pro Sale. View Details »

Professional Software Development, Practices and Ethics

Professional Software Development, Practices and Ethics

This is the slides of my talk in Marmara University Faculty of Engineering to undergraduate students. It is mainly about professionalism in software development, agile, scrum, test driven development, practices and ethics

Lemi Orhan Ergin

March 18, 2012
Tweet

More Decks by Lemi Orhan Ergin

Other Decks in Programming

Transcript

  1. LEMİ ORHAN ERGİN
    LEMİ ORHAN ERGİN
    PROFESSIONAL SOFTWARE DEVELOPMENT,
    PRACTICES AND ETHICS
    Seni or So ftw ar e E ngin eer @
    Seni or So ftw ar e E ngin eer @ Gi tti gid iy or / eBa y
    Gi tti gid iy or / eBa y
    nmap run completed -- 1 IP address (1 host up)
    scanneds
    % sshnuke 10.2.2.2 -rootpw-"Z1ON0101"
    Connecting to 10.2.2.2:ssh ... successful.
    Attempting to exploit SSHv1 CRC32 ... successful.
    Reseting root password to "Z1ON0101".
    System open: Access Level (9)
    % ssh 10.2.2.2 -l root
    [email protected]'s password:
    RTF-CONTROL> disable grid nodes 21 - 48
    Warning: Disabling nodes 21-48 will disconnect
    sector 11 (27 nodes)
    ARE YOU SURE ? (y/n)
    Grid Node 21 offline...
    Grid Node 22 offline...
    Grid Node 23 offline...
    Grid Node 24 offline...
    Grid Node 25 offline...
    Grid Node 26 offline...
    Grid Node 27 offline...
    Grid Node 28 offline...
    Grid Node 29 offline...
    Grid Node 30 offline...
    Grid Node 31 offline...
    Grid Node 32 offline...
    Grid Node 33 offline...
    Grid Node 34 offline...
    Grid Node 35 offline...
    Grid Node 36 offline...
    Grid Node 37 offline...
    Grid Node 38 offline...

    View Slide

  2. How To Become An Ethical Software Professional @ May 2012
    Expert Software Engineer, Technical Coordinator
    Lead DEVELOper, Scrum Master
    Senior Software Engineer
    https://twitter.com/#!/lemiorhan
    http://www.linkedin.com/in/lemiorhan
    B.Sc. Marmara University, CSE, 1997 – 2002
    M.Sc. Marmara University, CSE, 2002 – 2005
    Lemİ Orhan Ergİn
    @ GittiGidiyor, eBay
    @ SONY EUROPE
    @ Bilgisayarla yönetim ve mühendislik
    @ Marmara University, Faculty of engineering
    Software Engineer

    View Slide

  3. How To Become An Ethical Software Professional @ May 2012
    AUTHORS EXPERIENCE

    Developing software since 2002

    Technical lead on development teams since 2005

    Certified Scrum Master since 2009 (trained by Jim Coplien)

    Played scrum master role for more than 1 year

    Participated Scrum teams for more than 50 sprints

    View Slide

  4. How To Become An Ethical Software Professional @ May 2012
    SOFTWARES ARE BORN TO FAIL

    View Slide

  5. How To Become An Ethical Software Professional @ May 2012
    PROJECTS ARE FAILING!
    SATISH GROUP INVESTIGATES
    If building engineers built buildings with
    the same care as software engineers build
    systems, the first woodpecker to come
    along would be the end of civilization as
    we know it.
    “Top 10 Reasons Why Systems Projects Fail”
    Dr. Paul Dorsey

    View Slide

  6. How To Become An Ethical Software Professional @ May 2012
    60
    BILLION DOLLARS
    Equals to US millitary spending in Iraq and Afghanistan wars
    Annual cost to
    USA economy of
    poor quality
    software

    View Slide

  7. How To Become An Ethical Software Professional @ May 2012
    The basic problem is
    LOW QUALITY SOFTWARE
    WHAT'S THE PROBLEM WITH SOFTWARE?

    Lack of User Involvement

    Lack of Transparency

    Long or Unrealistic Time Scales

    Poor or No Requirements

    Bad Scope Management

    Poor Development Quality

    Poor Testing & Quality Assurance

    Inaduequate Development Methodology

    Poor Technical Knowledge and Experience
    7th November 1940. Tacoma Narrows suspension bridge,
    in Puget Sound, Washington, USA
    http://www.answers.com/topic/galloping-gertie-large-image#ixzz1q2uRmnLK

    View Slide

  8. How To Become An Ethical Software Professional @ May 2012
    CIA Gives the Soviets Gas
    COST: Millions of dollars
    Significant damage to Soviet economy
    (1982)
    Control software produced intense pressure in the Trans-Siberian gas pipeline
    Resulted in the largest man-made non-nuclear explosion in Earth’s history
    CIA operatives allegedly planted a bug
    in a Canadian computer system
    purchased by the Soviets
    The CIA sabotaged the software so
    that it would pass Soviet inspection
    but fail in operation

    View Slide

  9. How To Become An Ethical Software Professional @ May 2012
    World War III… Almost (1983)
    Cost

    Almost all of humanity
    Disaster

    Soviet early warning system indicated the U.S. had launched 5 ICBMs

    The human operator thankfully interpreted this as an error
    Cause

    A bug in the software failed to filter out false missile detections caused
    by sunlight reflecting off cloud-tops

    View Slide

  10. How To Become An Ethical Software Professional @ May 2012
    Wall Street Crash (1987)
    Cost
    $500,000,000,000 in one day
    Disaster
    “Black Monday”, October 19, 1987
    Dow Jones lost 22.6% of its value
    S&P 500 dropped 20.4%
    Cause
    Trading programs generated a flood of sell
    orders, overwhelming the market
    Systems crashed and left investors
    effectively blind

    View Slide

  11. How To Become An Ethical Software Professional @ May 2012
    Mars Polar Lander… err, Crasher (1998)
    Cost : $125,000,000
    Disaster : After a 286-day journey from Earth, the Mars Climate Orbiter fell too far
    into Mars’s atmosphere, causing it to crash
    Cause : The software that controlled the Orbiter thrusters used imperial units (pounds
    of force), rather than metric units (Newtons) as specified by NASA

    View Slide

  12. How To Become An Ethical Software Professional @ May 2012
    Sony lost 70 million user's details (2011)
    Cost :
    Reputation & Approx. 3.2 billion of dollars LOST,
    Re-branding PSN to SEN
    Disaster:
    PlayStation Network hacked and 70 million
    credentials, billing and user information may have
    been stolen
    Hacked TWICE! in a row
    Cause:
    External intrusion by a security breach

    View Slide

  13. How To Become An Ethical Software Professional @ May 2012
    Half day off in İMKB (2012)

    View Slide

  14. How To Become An Ethical Software Professional @ May 2012
    Can you develop bug free code? NO WAY!
    Like no one is perfect, no code can be bug free!
    code should have high quality standards
    However...

    View Slide

  15. How To Become An Ethical Software Professional @ May 2012
    "The worst outcome is not failure — it’s mediocrity.
    Failure lets you move on, mediocrity stalls you and keeps you from
    reaching your potential. Pursue something so important that even if
    you fail, the world is better off with you having tried."
    Drew Houston (founder/CEO of Dropbox)

    View Slide

  16. How To Become An Ethical Software Professional @ May 2012
    Good software is developed by good developers
    High quality software
    can only be developed by
    Professional
    SOFTWARE
    DEVELOPERS

    View Slide

  17. How To Become An Ethical Software Professional @ May 2012
    waterfall
    Agile development
    software craftsmanshıp
    practıces to know
    ethıcs ın software engıneerıng
    ethıcs ın development
    AGENDA

    View Slide

  18. How To Become An Ethical Software Professional @ May 2012
    The Horizon of Predictability
    Uncertainty is part of every innovative and
    creative development process

    View Slide

  19. How To Become An Ethical Software Professional @ May 2012
    Waterfall
    Aproach

    View Slide

  20. How To Become An Ethical Software Professional @ May 2012
    Features of a Waterfall Model

    Easy to follow

    For any size project

    Every stage has to be done separately at
    the right time so you cannot jump stages.

    Documentation is produced at every
    stage allowing people to understand
    what has been done.

    Testing is done at every stage.

    View Slide

  21. How To Become An Ethical Software Professional @ May 2012
    Realities of Waterfall Model

    If requirements may change, the Waterfall model cannot
    work.

    It is impossible to make one stage of the projects life cycle
    perfect.

    Difficult to estimate time and cost for each stage of the
    development process.

    Constant testing of the design is needed.

    View Slide

  22. How To Become An Ethical Software Professional @ May 2012
    Original Paper of Waterfall Model
    MANAGING THE DEVELOPMENT OF
    LARGE SOFTWARE SYSTEMS
    Dr. Winston W. Royce, 1970
    The implementation is risky and invites failure

    View Slide

  23. How To Become An Ethical Software Professional @ May 2012
    SIMPLICITY of Waterfall Model

    View Slide

  24. How To Become An Ethical Software Professional @ May 2012
    The Agile Paradigm emraces change, unpredictability and unforseen
    complexity as inescapable constants in all product development
    Traditional
    Customer knows what he wants
    Engineer knows how to build it
    Nothing changes along the way
    Agile
    Customer discovers what he wants
    Engineer discovers how to build it
    Things change along the way

    View Slide

  25. How To Become An Ethical Software Professional @ May 2012
    waterfall
    Agile development
    software craftsmanshıp
    practıces to know
    ethıcs ın software engıneerıng
    ethıcs ın development
    AGENDA

    View Slide

  26. How To Become An Ethical Software Professional @ May 2012
    The Agile Manifesto
    www.agilemanifesto.org
    Individuals and interactions PROCESS AND TOOLS
    WORKING SOFTWARE COMPREHENSIVE DOCUMENTATION
    CUSTOMER COLLABORATION CONTRACT NEGOTIATION
    RESPONDING TO CHANGE FOLLOWING A PLAN
    OVER
    OVER
    OVER
    OVER

    View Slide

  27. How To Become An Ethical Software Professional @ May 2012
    Agile Principles - I

    Our highest priority is to satisfy the customer through early and continuous
    delivery of valuable software

    Welcome changing requirements, even late in development. Agile processes harness
    change for the customer's competitive advantage.

    Deliver working software frequently, from a couple of weeks to a couple of months,
    with a preference to the shorter timescale.

    Business people and developers must work together daily throughout the project.

    Build projects around motivated individuals. Give them the environment and support
    they need, and trust them to get the job done.

    The most efficient and effective method of conveying information to and within a
    development team is face-to-face conversation.

    View Slide

  28. How To Become An Ethical Software Professional @ May 2012
    Agile Principles - II

    Working software is the primary measure of progress.

    Agile processes promote sustainable development. The sponsors, developers, and
    users should be able to maintain a constant pace indefinitely.

    Continuous attention to technical excellence and good design enhances agility.

    Simplicity -the art of maximizing the amount of work not done- is essential.

    The best architectures, requirements, and designs emerge from self-organizing
    teams.

    At regular intervals, the team reflects on how to become more effective, then
    tunes and adjusts its behavior accordingly.

    View Slide

  29. How To Become An Ethical Software Professional @ May 2012
    The Agile Practices Family

    Extreme Programming (XP)

    Crystal

    Dynamic Systems Development Method (DSDM)

    Test Driven Development (TDD)

    Feature Driven Development (FDD)

    Essential Unified Process

    Scrum

    Kanban

    Lean

    View Slide

  30. How To Become An Ethical Software Professional @ May 2012
    Time-boxed Activities
    Task are broken down into
    small increments (2-4 weeks),
    in which the team works through
    a full development lifecycle
    Minimizes the overall project risk
    Planning is easier with frequent release
    Allows project to adapt to changes quickly

    View Slide

  31. How To Become An Ethical Software Professional @ May 2012
    People ınvolved are
    People ınvolved are
    replaceable resources
    replaceable resources
    Agile Teams are small (7 ± 2)
    Agile Teams are small (7 ± 2)
    EMPOWERED
    EMPOWERED
    Cross-functional & Self-Organizing
    Cross-functional & Self-Organizing

    View Slide

  32. How To Become An Ethical Software Professional @ May 2012
    KAIZEN
    INSPECT AND ADAPT
    Continuous ımprovement

    View Slide

  33. How To Become An Ethical Software Professional @ May 2012
    Focus on End-User and Customer
    We tend to build the wrong things
    Source: Standish Group Study Report

    View Slide

  34. How To Become An Ethical Software Professional @ May 2012
    Communication Temperature
    Increasing communication temperature
    is an important goal of the Agile approach

    View Slide

  35. How To Become An Ethical Software Professional @ May 2012
    Why Agile?

    View Slide

  36. How To Become An Ethical Software Professional @ May 2012
    Agile Software Development
    Agile is an iterative and adaptive approach
    to software development,
    performed in a highly collaborative manner
    by self-organizing teams,
    with just enough ceremony that produces high quality software
    in a cost effective and timely manner,
    which meets the changing needs of its stakeholders.

    View Slide

  37. How To Become An Ethical Software Professional @ May 2012

    View Slide

  38. How To Become An Ethical Software Professional @ May 2012

    View Slide

  39. How To Become An Ethical Software Professional @ May 2012
    If you want to move your project forward, the only reliable way to do that is to
    cultivate a deep sense of software craftsmanship and professionalism around it.
    Control is ultimately illusory ON
    Software development projects
    People who
    show up every
    day eager to
    improve their
    craft will
    ultimately
    succeed
    TOM DEMARKO

    View Slide

  40. How To Become An Ethical Software Professional @ May 2012
    IT is an DISCIPLINE in software development that emphasizes the
    coding skills of the software developers themselves. It is a
    response by software developers to the perceived ills of the
    mainstream software industry, including the prioritization of
    financial concerns over code quality.
    Software Craftsmanship

    View Slide

  41. How To Become An Ethical Software Professional @ May 2012
    Software craftsmanshıp Manifesto
    manıfesto.softwarecraftsmanshıp.org
    Individuals and
    interactions
    Community of
    professıonals
    WORKING
    SOFTWARE
    WELL crafted
    software
    CUSTOMER
    COLLABORATION
    Productıve
    partnershıp
    RESPONDING
    TO CHANGE
    Stadıly
    addıng value
    OVER
    OVER
    OVER
    OVER
    PROCESS
    AND TOOLS
    COMPREHENSIVE
    DOCUMENTATION
    CONTRACT
    NEGOTIATION
    FOLLOWING
    A PLAN
    OVER
    OVER
    OVER
    OVER

    View Slide

  42. How To Become An Ethical Software Professional @ May 2012
    waterfall
    Agile development
    software craftsmanshıp
    practıces to know
    ethıcs ın software engıneerıng
    ethıcs ın development
    AGENDA

    View Slide

  43. How To Become An Ethical Software Professional @ May 2012
    PROGRAMMING LANGUAGE
    SCALA
    PHP
    RUBY
    JAVA
    GROOVY
    clojure
    PHYTON
    C
    C++

    View Slide

  44. How To Become An Ethical Software Professional @ May 2012
    IDE
    Intellıj ıdea
    eclıpse
    netbeans
    rubymıne

    View Slide

  45. How To Become An Ethical Software Professional @ May 2012
    VERSION Control Systems
    CVS
    StartTeam
    Subversion
    Git
    Mercurial
    IBM TeamConcert
    Bazaar

    View Slide

  46. How To Become An Ethical Software Professional @ May 2012
    Branchıng model

    View Slide

  47. How To Become An Ethical Software Professional @ May 2012
    Code Hosting
    BitBucket
    GitHub
    Unfuddle
    In-House

    View Slide

  48. How To Become An Ethical Software Professional @ May 2012
    Code Buılder
    Gradle
    maven
    ıvy
    ant

    View Slide

  49. How To Become An Ethical Software Professional @ May 2012
    Agile Coach at Google
    where he is responsible for coaching Googlers
    to maintain the high level of automated testing culture
    http://misko.hevery.com/
    “The secret of
    testing is writing
    testable code”
    Miško Hevery

    View Slide

  50. How To Become An Ethical Software Professional @ May 2012
    TEST DRIVEN DEVELOPMENT
    ADD Test – run test and faıl – wrıte code – run automated test and pass – refactor code – repeat

    View Slide

  51. How To Become An Ethical Software Professional @ May 2012
    testıng
    Unıt
    INTEGratıon
    functıonal
    acceptance
    regressıon
    uat
    Performance
    Junıt
    cucumber
    mockıto
    powermock
    gmock
    sellenıum
    jmeter
    MANUAL

    View Slide

  52. How To Become An Ethical Software Professional @ May 2012
    It's not
    worth
    writing
    tests
    Unless
    you have
    CONTINUOUS
    INTEGRATION

    View Slide

  53. How To Become An Ethical Software Professional @ May 2012
    Continuous ıntegratıon
    Jetbraıns teamcıty
    Atlassıan bamboo
    Hudson/jenkıns
    anthıllpro
    Cruıse control

    View Slide

  54. How To Become An Ethical Software Professional @ May 2012
    Enterprise Environments
    Developer
    Developer
    Developer
    SVC CI
    Notification Services (email, messaging)
    DEV TQA STG PRD
    Super User Super User Super User

    View Slide

  55. How To Become An Ethical Software Professional @ May 2012
    PRACTICES
    Coding standards and guidelines
    Database standars and guidelines
    technology standards
    Pair programing and code reviews
    Code coverage monitoring
    OS-IDE-Tool free coding
    Test Driven Development (TDD)
    Multi level testing (Unit, Integration, Functional, Performance, Manual)
    Enterprice architecture (Development, TestQA, Staging, Production)
    Clean code & software craftsmanship principles

    View Slide

  56. How To Become An Ethical Software Professional @ May 2012
    waterfall
    Agile development
    software craftsmanshıp
    practıces to know
    ethıcs ın software engıneerıng
    ethıcs ın software development
    AGENDA

    View Slide

  57. How To Become An Ethical Software Professional @ May 2012
    ACM Code of Ethics and Professional Conduct
    http://www.acm.org/constitution/code.html
    Bitish Computer Society Code of Conduct
    http://www1.bcs.org.uk/DocsRepository/03200/3224/default.htm
    IEEE-CS/ACM Software Engineering Code of Ethics
    And Professional Practice
    http://www.computer.org/tab/seprof/code.htm
    Versıons of Code of ethıcs

    View Slide

  58. How To Become An Ethical Software Professional @ May 2012
    Joint IEEE-CS/ACM Code of Ethics and
    Professional Practice

    Built on 8 principles
     Public Interest
     Client and Employer
     Product
     Judgement
     Management
     Profession
     Colleagues
     Self

    The principle of Public Interest is central to the code.

    View Slide

  59. How To Become An Ethical Software Professional @ May 2012
    Public Interest
    Software engineers shall act consistently with the
    public interest.
     Approve software only if they have a well-founded belief
    that it is safe, meets standards, passes tests and does not
    diminsh quality of life, privacy or harm the environment.
     Disclose any actual or potential danger to the user.
     Be fair and avoid deception in all statements concerning
    software.

    View Slide

  60. How To Become An Ethical Software Professional @ May 2012
    Software engineers shall act in a manner that is in
    the best interests of their client and employer,
    consistent with the public interest.
     Be honest about any limitation of their experience and
    education.
     Keep private any confidential information consistent with the
    public interest and the law.
     Not knowingly use software that is obtained or retained either
    illegally or unethically.
    Client and employer

    View Slide

  61. How To Become An Ethical Software Professional @ May 2012
    Software engineers shall ensure that their
    products and related modifications meet the
    highest professional standards possible.
     Strive for high quality, acceptable cost, and a reasonable
    schedule, ensuring significant tradeoffs are clear.
     Ensure adequate testing, debugging, and review of
    software and related documents on which they work.
     Treat all forms of software maintenance with the same
    professionalism as new development.
    product

    View Slide

  62. How To Become An Ethical Software Professional @ May 2012
    Software engineers shall maintain integrity and
    independence in their professional judgment.
     Not engage in deceptive financial practices.
     Disclose to all concerned parties those conflicts
    of interest that cannot reasonably be avoided or
    escaped.
    judgement

    View Slide

  63. How To Become An Ethical Software Professional @ May 2012
    Software engineering managers and leaders shall
    subscribe to and promote an ethical approach to
    the management of software development and
    maintenance.
     Ensure that software engineers are informed of
    standards before being held to them.
     Offer fair and just remuneration.
     Not punish anyone for expressing ethical concerns
    about a project.
    management

    View Slide

  64. How To Become An Ethical Software Professional @ May 2012
    Software engineers shall advance the integrity
    and reputation of the profession consistent with
    the public interest.
     Promote public knowledge of software engineering.
     Be accurate in stating the characteristics of software on
    which they work.
     Take responsibility for detecting, correcting, and
    reporting errors in software and associated documents
    on which they work.
    professıon

    View Slide

  65. How To Become An Ethical Software Professional @ May 2012
    Software engineers shall be fair to and
    supportive of their colleagues.
     Credit fully the work of others and refrain from taking
    undue credit.
     Give a fair hearing to the opinions, concerns, or
    complaints of a colleague.
     In situations outside of their own areas of competence,
    call upon the opinions of other professionals who have
    competence in that area.
    colleagues

    View Slide

  66. How To Become An Ethical Software Professional @ May 2012
    Software engineers shall participate in lifelong learning
    regarding the practice of their profession and shall
    promote an ethical approach to the practice of the
    profession.
     Further their knowledge
     Improve their ability to create safe, reliable, and useful
    quality software
     Improve their ability to produce accurate, informative, and
    well-written documentation.
    self

    View Slide

  67. How To Become An Ethical Software Professional @ May 2012
    waterfall
    Agile development
    software craftsmanshıp
    practıces to know
    ethıcs ın software engıneerıng
    ethıcs ın software development
    AGENDA

    View Slide

  68. How To Become An Ethical Software Professional @ May 2012
    Ethıcs In Software development
    BE THRUSTable, Open & honest
    don't blame others
    don't try to be software god
    share your knowledge
    Use the fırst rule of cooperatıon: help others fırst!
    Learn and obey copyright lıcenses (GLP, CC, MPL, etc.)
    resolve patent conflıcts
    Be careful on copy & paste
    Do not steal code
    Reference to the orıgınal author
    do not change references to the orıginal author

    View Slide

  69. How To Become An Ethical Software Professional @ May 2012
    Ethıcs In Software development
    Do not use cracked software
    Do not snıff network to catch credentıals
    Do not sell commercial code without permission
    Do not write backdoors or bugs on purpose
    Always encrypt passwords and credıt card data
    Do not sell or share users' data
    Report any bugs, any issues noticed
    Do not close a task until it is really done

    View Slide

  70. How To Become An Ethical Software Professional @ May 2012
    Emaıl:
    lemiorhan@gmaıl.com
    Twitter:
    https://twitter.com/#!/lemiorhan
    Linkedin:
    http://www.linkedin.com/in/lemiorhan
    Blog:
    http://www.flyingtomoon.com
    Lemi orhan ergin
    [email protected]
    My Office, Barbaros
    Mah. Çiğdem Sk.
    No: 1/14, 34746
    Ataşehir / İstanbul

    View Slide

  71. How To Become An Ethical Software Professional @ May 2012
    Thank you
    Very much

    View Slide