The document discusses professional software development practices and ethics. It begins by showing code for hacking into a system using SSH and resetting the root password. It then discusses disabling grid nodes in a system. The rest of the document discusses the experience and background of Lemi Orhan Ergin, a senior software engineer, including his education and work history. It also provides an agenda for a presentation on how to become an ethical software developer, covering topics like waterfall development, Agile development, software craftsmanship practices, ethics in software engineering, and ethics in development.
2. Lemİ Orhan Ergİn https://twitter.com/#!/lemiorhan
http://www.linkedin.com/in/lemiorhan
@ Marmara University, Faculty of engineering
B.Sc. Marmara University, CSE, 1997 – 2002
M.Sc. Marmara University, CSE, 2002 – 2005
@ Bilgisayarla yönetim ve mühendislik
Software Engineer
@ SONY EUROPE
Expert Software Engineer, Technical Coordinator
Lead DEVELOper, Scrum Master
@ GittiGidiyor, eBay
Senior Software Engineer
How To Become An Ethical Software Professional @ May 2012
3. 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
How To Become An Ethical Software Professional @ May 2012
4. SOFTWARES ARE BORN TO FAIL
How To Become An Ethical Software Professional @ May 2012
5. 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
How To Become An Ethical Software Professional @ May 2012
6. 60 BILLION DOLLARS
Annual cost to
USA economy of
poor quality
software
Equals to US millitary spending in Iraq and Afghanistan wars
How To Become An Ethical Software Professional @ May 2012
7. 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
The basic problem is
LOW QUALITY SOFTWARE
How To Become An Ethical Software Professional @ May 2012
8. (1982)
CIA Gives the Soviets Gas The CIA sabotaged the software so
that it would pass Soviet inspection
CIA operatives allegedly planted a bug but fail in operation
in a Canadian computer system
purchased by the Soviets COST: Millions of dollars
Significant damage to Soviet economy
Control software produced intense pressure in the Trans-Siberian gas pipeline
Resulted in the largest man-made non-nuclear explosion in Earth’s history
How To Become An Ethical Software Professional @ May 2012
9. 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
How To Become An Ethical Software Professional @ May 2012
10. 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
How To Become An Ethical Software Professional @ May 2012
11. 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
How To Become An Ethical Software Professional @ May 2012
12. 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
How To Become An Ethical Software Professional @ May 2012
13. Half day off in İMKB (2012)
How To Become An Ethical Software Professional @ May 2012
14. Can you develop bug free code? NO WAY!
Like no one is perfect, no code can be bug free!
However...
code should have high quality standards
How To Become An Ethical Software Professional @ May 2012
15. "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)
How To Become An Ethical Software Professional @ May 2012
16. Good software is developed by good developers
High quality software
can only be developed by
Professional
SOFTWARE
DEVELOPERS How To Become An Ethical Software Professional @ May 2012
18. The Horizon of Predictability
Uncertainty is part of every innovative and
creative development process
How To Become An Ethical Software Professional @ May 2012
19. Waterfall
Aproach
How To Become An Ethical Software Professional @ May 2012
20. 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.
How To Become An Ethical Software Professional @ May 2012
21. 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.
How To Become An Ethical Software Professional @ May 2012
22. Original Paper of Waterfall Model
MANAGING THE DEVELOPMENT OF
LARGE SOFTWARE SYSTEMS
Dr. Winston W. Royce, 1970
The implementation is risky and invites failure
How To Become An Ethical Software Professional @ May 2012
24. 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
The Agile Paradigm emraces change, unpredictability and unforseen
complexity as inescapable constants in all product development
How To Become An Ethical Software Professional @ May 2012
26. The Agile Manifesto
Individuals and interactions OVER PROCESS AND TOOLS
WORKING SOFTWARE OVER COMPREHENSIVE DOCUMENTATION
CUSTOMER COLLABORATION OVER CONTRACT NEGOTIATION
RESPONDING TO CHANGE OVER FOLLOWING A PLAN
www.agilemanifesto.org
How To Become An Ethical Software Professional @ May 2012
27. 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.
How To Become An Ethical Software Professional @ May 2012
28. 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.
How To Become An Ethical Software Professional @ May 2012
29. 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
How To Become An Ethical Software Professional @ May 2012
30. 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
How To Become An Ethical Software Professional @ May 2012
31. People ınvolved are
replaceable resources
Agile Teams are small (7 ± 2)
EMPOWERED
Cross-functional & Self-Organizing
How To Become An Ethical Software Professional @ May 2012
32. KAIZEN
INSPECT AND ADAPT
Continuous ımprovement
How To Become An Ethical Software Professional @ May 2012
33. Focus on End-User and Customer
Source: Standish Group Study Report
We tend to build the wrong things
How To Become An Ethical Software Professional @ May 2012
34. Communication Temperature
Increasing communication temperature
is an important goal of the Agile approach
How To Become An Ethical Software Professional @ May 2012
35. Why Agile?
How To Become An Ethical Software Professional @ May 2012
36. 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.
How To Become An Ethical Software Professional @ May 2012
37. How To Become An Ethical Software Professional @ May 2012
38. How To Become An Ethical Software Professional @ May 2012
39. Control is ultimately illusory ON
TOM DEMARKO
Software development projects
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.
People who
show up every
day eager to
improve their
craft will
ultimately
succeed
How To Become An Ethical Software Professional @ May 2012
40. Software Craftsmanship
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.
How To Become An Ethical Software Professional @ May 2012
41. Software craftsmanshıp Manifesto
Individuals and PROCESS Community of
OVER OVER
interactions AND TOOLS professıonals
WORKING COMPREHENSIVE WELL crafted
OVER OVER
SOFTWARE DOCUMENTATION software
CUSTOMER CONTRACT Productıve
OVER OVER
COLLABORATION NEGOTIATION partnershıp
RESPONDING FOLLOWING Stadıly
OVER OVER
TO CHANGE A PLAN addıng value
manıfesto.softwarecraftsmanshıp.org
How To Become An Ethical Software Professional @ May 2012
47. Code Hosting
BitBucket
Unfuddle
In-House
GitHub
How To Become An Ethical Software Professional @ May 2012
48. Code Buılder
maven ıvy
ant
Gradle
How To Become An Ethical Software Professional @ May 2012
49. “The secret of
testing is writing
testable code”
Miško Hevery
Agile Coach at Google
where he is responsible for coaching Googlers
to maintain the high level of automated testing culture
http://misko.hevery.com/
How To Become An Ethical Software Professional @ May 2012
50. TEST DRIVEN DEVELOPMENT
ADD Test – run test and faıl – wrıte code – run automated test and pass – refactor code – repeat
How To Become An Ethical Software Professional @ May 2012
51. Unıt
INTEGratıon
functıonal Junıt
testıng
cucumber
acceptance mockıto
powermock
regressıon gmock
sellenıum
uat jmeter
Performance
MANUAL
How To Become An Ethical Software Professional @ May 2012
52. It's not Unless
worth you have
writing CONTINUOUS
tests INTEGRATION
How To Become An Ethical Software Professional @ May 2012
53. Continuous ıntegratıon
Atlassıan bamboo
Cruıse control
Jetbraıns teamcıty
anthıllpro
Hudson/jenkıns
How To Become An Ethical Software Professional @ May 2012
54. Enterprise Environments
Notification Services (email, messaging)
Developer
Developer SVC CI Super User Super User Super User
Developer
DEV TQA STG PRD
How To Become An Ethical Software Professional @ May 2012
55. 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
How To Become An Ethical Software Professional @ May 2012
57. Versıons of Code of ethıcs
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
How To Become An Ethical Software Professional @ May 2012
58. 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.
How To Become An Ethical Software Professional @ May 2012
59. 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.
How To Become An Ethical Software Professional @ May 2012
60. Client and employer
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.
How To Become An Ethical Software Professional @ May 2012
61. Software engineers shall ensure that their
product
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.
How To Become An Ethical Software Professional @ May 2012
62. judgement
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.
How To Become An Ethical Software Professional @ May 2012
63. management
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.
How To Become An Ethical Software Professional @ May 2012
64. professıon
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.
How To Become An Ethical Software Professional @ May 2012
65. colleagues
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.
How To Become An Ethical Software Professional @ May 2012
66. Software engineers shall participate in lifelong learning
regarding the practice of their profession and shall
self
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.
How To Become An Ethical Software Professional @ May 2012
68. 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
How To Become An Ethical Software Professional @ May 2012
69. 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
How To Become An Ethical Software Professional @ May 2012
70. Emaıl:
lemiorhan@gmaıl.com
Twitter:
https://twitter.com/#!/lemiorhan
Lemi orhan ergin
lergin@ebay.com
Linkedin:
http://www.linkedin.com/in/lemiorhan
Blog:
http://www.flyingtomoon.com
My Office, Barbaros
Mah. Çiğdem Sk.
No: 1/14, 34746
How To Become An Ethical Software Professional @ May 2012
Ataşehir / İstanbul
71. Thank you
Very much
How To Become An Ethical Software Professional @ May 2012