Slide 1

Slide 1 text

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...

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

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

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

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

Slide 6

Slide 6 text

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

Slide 7

Slide 7 text

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

Slide 8

Slide 8 text

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

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

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...

Slide 15

Slide 15 text

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)

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

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

Slide 19

Slide 19 text

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

Slide 20

Slide 20 text

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.

Slide 21

Slide 21 text

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.

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

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

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

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

Slide 27

Slide 27 text

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.

Slide 28

Slide 28 text

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.

Slide 29

Slide 29 text

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

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

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

Slide 33

Slide 33 text

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

Slide 34

Slide 34 text

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

Slide 35

Slide 35 text

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

Slide 36

Slide 36 text

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.

Slide 37

Slide 37 text

How To Become An Ethical Software Professional @ May 2012

Slide 38

Slide 38 text

How To Become An Ethical Software Professional @ May 2012

Slide 39

Slide 39 text

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

Slide 40

Slide 40 text

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

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

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

Slide 43

Slide 43 text

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

Slide 44

Slide 44 text

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

Slide 45

Slide 45 text

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

Slide 46

Slide 46 text

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

Slide 47

Slide 47 text

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

Slide 48

Slide 48 text

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

Slide 49

Slide 49 text

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

Slide 50

Slide 50 text

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

Slide 51

Slide 51 text

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

Slide 52

Slide 52 text

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

Slide 53

Slide 53 text

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

Slide 54

Slide 54 text

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

Slide 55

Slide 55 text

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

Slide 56

Slide 56 text

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

Slide 57

Slide 57 text

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

Slide 58

Slide 58 text

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.

Slide 59

Slide 59 text

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.

Slide 60

Slide 60 text

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

Slide 61

Slide 61 text

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

Slide 62

Slide 62 text

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

Slide 63

Slide 63 text

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

Slide 64

Slide 64 text

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

Slide 65

Slide 65 text

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

Slide 66

Slide 66 text

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

Slide 67

Slide 67 text

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

Slide 68

Slide 68 text

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

Slide 69

Slide 69 text

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

Slide 70

Slide 70 text

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

Slide 71

Slide 71 text

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