Upgrade to PRO for Only $50/Year—Limited-Time Offer! 🔥

Professional Software Development, Practices an...

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...
  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
  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
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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...
  13. 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)
  14. 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
  15. 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
  16. How To Become An Ethical Software Professional @ May 2012

    The Horizon of Predictability Uncertainty is part of every innovative and creative development process
  17. 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.
  18. 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.
  19. 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
  20. 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
  21. 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
  22. 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
  23. 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.
  24. 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.
  25. 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
  26. 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
  27. 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
  28. How To Become An Ethical Software Professional @ May 2012

    KAIZEN INSPECT AND ADAPT Continuous ımprovement
  29. 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
  30. How To Become An Ethical Software Professional @ May 2012

    Communication Temperature Increasing communication temperature is an important goal of the Agile approach
  31. 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.
  32. 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
  33. 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
  34. 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
  35. 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
  36. How To Become An Ethical Software Professional @ May 2012

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

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

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

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

    Code Buılder Gradle maven ıvy ant
  41. 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
  42. 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
  43. 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
  44. How To Become An Ethical Software Professional @ May 2012

    It's not worth writing tests Unless you have CONTINUOUS INTEGRATION
  45. 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
  46. 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
  47. 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
  48. 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
  49. 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
  50. 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.
  51. 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.
  52. 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
  53. 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
  54. 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
  55. 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
  56. 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
  57. 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
  58. 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
  59. 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
  60. 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
  61. 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
  62. 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