software development practices
GMO{ the art of developing software in a natural way }
Lemİ Orhan ERGİN
Principal Software Engineer @ Sony
@lemiorhan
‘LESS
Lemİ Orhan Ergİn
Principal Software Engineer in Sony
has worked in Tüsside, BYM, GittiGidiyor/eBay
and Sony as developer, team leader, technical
coordinator and scrum master
got CSM certificate from Jim Coplien
year as Scrum Master
sprints and 4 years as team member and
scrum master
experienced in agile transformation and
building agile culture in teams & organizations
2001
2013
2009
1
56
agile
@lemiorhan
projects?failedHave you ever had
We won’t make it, we need extra time
I know it’s impossible, but we’ve already promised
We have to cancel the project before going live
We are facing critical bugs in production
We have to re-write the project from scratch
No one knows when the project will be finished
It was obvious that the project was going to fail
Everything was going fine, but what the ...
“
”Project management / Team
It’s very expensive to add these features
One guy left and the project failed
People in development team is always changing
Technology and design of the project are too old
I fixed a bug and new ones appeared
No one has touched some modules for years
I cannot add new features while fixing bugs all day
We are doing same manual tests again and again
“
”Software Developer
11I have worked in
enterprise level
projects in my career
B2B ecommerce site for the mould industry
IBM based product management system
Product management system for Europe
Document management system for military
Marketing sites for European countries
Common toolbar for European countries
Backend services, components and APIs
Common data services for Europe
Common syndication services for Europe
Core data services for US and Canada
Vertical ecommerce module
Each one is
at least
6 months
projects
B2B ecommerce site for the mould industry
IBM based product management system
Product management system for Europe
Document management system for military
Marketing sites for European countries
Common toolbar for European countries
Backend services, components and APIs
Common data services for Europe
Common syndication services for Europe
Core data services for US and Canada
Vertical ecommerce module
6 of them
cancelled before go-live
closed after a while
will be closed soon
%55
are failing
Software projects
“50% of IT projects go into trash in Turkey”
Agile Turkey
mercer consulting
“When the real costs are added up, 80% of the
technology projects costs more than they return”
why?
of reasons
to faila lotwe have
company
politics
some of them
are due to
we are unable to do anything here
developing
software in
unnatural way
but the reason of
all the others is
agenda
The Nature of Software
Naturalness of Software: Agility
Agile Software Development Practices
The nature
of software
and 9 main rules
The ultimate goal is
customer satisfaction
1
Customers have rights to get
software developed with the
features they need in a fast way
of course, you might not satisfy your
customer at this level. that’s fine.
In general the customers
do not know
what they really want
2
UNCERTAINITY
exists in every step of
development process
3
requirements
always change
4
Start Point
Target Point
2
1
3
Software development
is not just
5
Programming
Software should
always be
maintained
after go live
6
Software development is a
social activity
7
BIG-Up-front detailed
estimation & Design are
UNNECESSARY
8
ıncreases total real cost9 compromising quality
agility
concept emerges for helping developers
to let them develop in natural way
agenda
The Nature of Software
Naturalness of Software: Agility
Agile Software Development Practices
agile?
what is
Agile means
Adapting to change
rapidly
and sending a feature or a fix to market rapidly
agile means
evolving design and
development
Agile development is not only
about project planning
Project planning is just a part of agile software development
Agile software development
Agile planning and management
Software development practices
Customer satisfaction
Teamwork
Motivation
this is the topic we are interested in
agenda
The Nature of Software
Naturalness of Software: Agility
Agile Software Development Practices
working on the correct design
with newest and best technologies
in a short time
We aim to complete the projects by
However we always face with issues related with
humans
Getting feedback rapidly
Agile ve lean prenciples focus on the following:
Speeding up feecback loops
Let’s develop a project
by using
agile development
practices
See your developers not as resources, but talents (No headcount calculation)
Work with people who loves to share knowledge and experiences (Collaborative & Volunteer)
Educate people about agile practices and the philosophy behind (Up-Front Education)
Build your team with passionate and disciplined developers (Passionate Developer)
“Don’t pick the right technology, pick the one that’s cheapest to change” by chris matts
Before the start
Developer
Business Analyst
Tester
Product Owner
Developer
Make teams with cross functional people (Cross functional teams)
Sit close to your team mates (Sitting CLOSE)
Define the minimum set of features that you can get feedback (Minimum Viable Product)
Focus on features valuable to the customer (Prioritization)
Avoid doing big fat up-front design (Short Up-Front Design)
Document enough, don’t go deep into details (Agile Documentation)
Let’s start the project
Business Analyst
Tester
Keep your code in a version control system (Version Control System)
Program in pairs (Pair Programming)
Review others’ code (Code/Peer Review)
Develop each feature in a new branch (Code Branching)
Follow clean code principles (Clean Code Principles)
Do code katas to improve your technical capabilities (Code Kata)
Use idiomatic and architectural patterns in addition to design patterns (Idiomatic Patterns)
Develop from customers’ point of view by BDD (Behaviour Driven Development)
Develop from developers’ point of view by TDD (Test Driven Development)
Software development and social coding
Version
Control
System
Developer
Business Analyst
Tester
Pull others’ commits and integrate with yours at least once a day (Continuous Integration)
Let the existing tests run automatically and get feedback about the failed ones (Continuous Build)
Detect untested areas in your code and improve the code coverage (Code Coverage)
Don’t afraid of deleting code, improve your design with the help of written tests (Refactoring)
Full feedback loop of continous integration should take at most 10 minutes (10 min build)
Continuous Integration
Messaging Services (emails, messages)
Version
Control
System
Continuous
Deployment
Developer
Business Analyst
Tester
Prepare a working copy of your software available in your CVS (SNAPSHOTs / daily builds)
Make the latest working copy of your software ready for deployment (Continuous delivery)
Continuous Delivery
Package Repository
Messaging Services (emails, messages)
Version
Control
System
Continuous
Deployment
Developer
Business Analyst
Tester
DEV TEST & QA STAGING PROD
Prepare an environment where developers can do experiments and test their code (DEV)
Have an environment where performance and load tests can be done (TEST/QUALITY ASSURANCE)
User acceptance tests should be done on an environment similar to production (STAGING/UAT/SIT)
Development Environments
Package Repository
Messaging Services (emails, messages)
Version
Control
System
Make releases frequently (SHORT RELEASES)
Deploy your applications with one click (Continuous DEPLOYMENT)
Shorten release and boot times of your software (Fast bootup)
Raise DevOps that knows software development and IT operations at the same time (DEVOPS)
Release Management & Deployments
DEV
TEST & QA
STAGING
PROD
Continuous
Deployment
Developer
Business Analyst
Tester
Clouds force you to follow the practices to some extent.
Software development on clouds
DevOpsDevOps DevOps DevOps
Version
Control
System
Developer
Business Analyst
Tester
You cannot talk about agility without eXtreme Programming practices.
And XP can only be achieved by pashioned programmers.“
”İsa Göksu
Agile Practice Lead
Photos used in the slidES
http://www.flickr.com/photos/emmanuelecontini/2558211856
http://www.flickr.com/photos/thecampbells/5103649471
http://www.flickr.com/photos/robbiemacphotos/7875854334
http://www.flickr.com/photos/w4nd3rl0st/7174403872
http://s590.photobucket.com/user/asmithj/media/CPC/girl_2_computer_arms_raised2.jpg.html
http://www.flickr.com/photos/usnavy/5488581781
http://www.flickr.com/photos/purplemattfish/3489639831
http://www.flickr.com/photos/thomashawk/7215052318
http://www.flickr.com/photos/nuwandalice/4764805046
http://www.flickr.com/photos/lauter-als-der-rest/6898114788
http://www.flickr.com/photos/31288116@N02/4008216690
http://www.flickr.com/photos/a2gemma/1448178195
http://www.flickr.com/photos/nuudls/3281779141
Lemİ orhan ergİn
lemiorhan@agilistanbul.com
@lemiorhan
@lemiorhan
agilistanbul.com
@lemiorhan
LINKEDINTWITTERSLIDESHAREBLOG
Principal Software Engineer @ Sony
Founder & Author @ agilistanbul.com
flyingtomoon.com
The slides were presented on 13th of June, 2013 at
Agile Talks which is a set of seminars organized
by Agile Turkey few times in a year in Turkey
The content of this presentation is originally in Turkish.
The author translated into English by purpose.

GMO'less Software Development Practices

  • 1.
    software development practices GMO{the art of developing software in a natural way } Lemİ Orhan ERGİN Principal Software Engineer @ Sony @lemiorhan ‘LESS
  • 2.
    Lemİ Orhan Ergİn PrincipalSoftware Engineer in Sony has worked in Tüsside, BYM, GittiGidiyor/eBay and Sony as developer, team leader, technical coordinator and scrum master got CSM certificate from Jim Coplien year as Scrum Master sprints and 4 years as team member and scrum master experienced in agile transformation and building agile culture in teams & organizations 2001 2013 2009 1 56 agile @lemiorhan
  • 3.
  • 4.
    We won’t makeit, we need extra time I know it’s impossible, but we’ve already promised We have to cancel the project before going live We are facing critical bugs in production We have to re-write the project from scratch No one knows when the project will be finished It was obvious that the project was going to fail Everything was going fine, but what the ... “ ”Project management / Team
  • 5.
    It’s very expensiveto add these features One guy left and the project failed People in development team is always changing Technology and design of the project are too old I fixed a bug and new ones appeared No one has touched some modules for years I cannot add new features while fixing bugs all day We are doing same manual tests again and again “ ”Software Developer
  • 6.
    11I have workedin enterprise level projects in my career
  • 7.
    B2B ecommerce sitefor the mould industry IBM based product management system Product management system for Europe Document management system for military Marketing sites for European countries Common toolbar for European countries Backend services, components and APIs Common data services for Europe Common syndication services for Europe Core data services for US and Canada Vertical ecommerce module Each one is at least 6 months projects
  • 8.
    B2B ecommerce sitefor the mould industry IBM based product management system Product management system for Europe Document management system for military Marketing sites for European countries Common toolbar for European countries Backend services, components and APIs Common data services for Europe Common syndication services for Europe Core data services for US and Canada Vertical ecommerce module 6 of them cancelled before go-live closed after a while will be closed soon %55
  • 9.
    are failing Software projects “50%of IT projects go into trash in Turkey” Agile Turkey mercer consulting “When the real costs are added up, 80% of the technology projects costs more than they return”
  • 10.
  • 11.
  • 12.
    company politics some of them aredue to we are unable to do anything here
  • 13.
    developing software in unnatural way butthe reason of all the others is
  • 14.
    agenda The Nature ofSoftware Naturalness of Software: Agility Agile Software Development Practices
  • 15.
  • 16.
    The ultimate goalis customer satisfaction 1 Customers have rights to get software developed with the features they need in a fast way of course, you might not satisfy your customer at this level. that’s fine.
  • 17.
    In general thecustomers do not know what they really want 2
  • 18.
    UNCERTAINITY exists in everystep of development process 3
  • 19.
  • 20.
    Software development is notjust 5 Programming
  • 21.
  • 22.
    Software development isa social activity 7
  • 23.
    BIG-Up-front detailed estimation &Design are UNNECESSARY 8
  • 24.
    ıncreases total realcost9 compromising quality
  • 25.
    agility concept emerges forhelping developers to let them develop in natural way
  • 26.
    agenda The Nature ofSoftware Naturalness of Software: Agility Agile Software Development Practices
  • 27.
  • 28.
    Agile means Adapting tochange rapidly and sending a feature or a fix to market rapidly
  • 29.
  • 30.
    Agile development isnot only about project planning Project planning is just a part of agile software development
  • 31.
    Agile software development Agileplanning and management Software development practices Customer satisfaction Teamwork Motivation this is the topic we are interested in
  • 32.
    agenda The Nature ofSoftware Naturalness of Software: Agility Agile Software Development Practices
  • 33.
    working on thecorrect design with newest and best technologies in a short time We aim to complete the projects by
  • 34.
    However we alwaysface with issues related with humans
  • 35.
    Getting feedback rapidly Agileve lean prenciples focus on the following: Speeding up feecback loops
  • 36.
    Let’s develop aproject by using agile development practices
  • 37.
    See your developersnot as resources, but talents (No headcount calculation) Work with people who loves to share knowledge and experiences (Collaborative & Volunteer) Educate people about agile practices and the philosophy behind (Up-Front Education) Build your team with passionate and disciplined developers (Passionate Developer) “Don’t pick the right technology, pick the one that’s cheapest to change” by chris matts Before the start Developer Business Analyst Tester Product Owner
  • 38.
    Developer Make teams withcross functional people (Cross functional teams) Sit close to your team mates (Sitting CLOSE) Define the minimum set of features that you can get feedback (Minimum Viable Product) Focus on features valuable to the customer (Prioritization) Avoid doing big fat up-front design (Short Up-Front Design) Document enough, don’t go deep into details (Agile Documentation) Let’s start the project Business Analyst Tester
  • 39.
    Keep your codein a version control system (Version Control System) Program in pairs (Pair Programming) Review others’ code (Code/Peer Review) Develop each feature in a new branch (Code Branching) Follow clean code principles (Clean Code Principles) Do code katas to improve your technical capabilities (Code Kata) Use idiomatic and architectural patterns in addition to design patterns (Idiomatic Patterns) Develop from customers’ point of view by BDD (Behaviour Driven Development) Develop from developers’ point of view by TDD (Test Driven Development) Software development and social coding Version Control System Developer Business Analyst Tester
  • 40.
    Pull others’ commitsand integrate with yours at least once a day (Continuous Integration) Let the existing tests run automatically and get feedback about the failed ones (Continuous Build) Detect untested areas in your code and improve the code coverage (Code Coverage) Don’t afraid of deleting code, improve your design with the help of written tests (Refactoring) Full feedback loop of continous integration should take at most 10 minutes (10 min build) Continuous Integration Messaging Services (emails, messages) Version Control System Continuous Deployment Developer Business Analyst Tester
  • 41.
    Prepare a workingcopy of your software available in your CVS (SNAPSHOTs / daily builds) Make the latest working copy of your software ready for deployment (Continuous delivery) Continuous Delivery Package Repository Messaging Services (emails, messages) Version Control System Continuous Deployment Developer Business Analyst Tester
  • 42.
    DEV TEST &QA STAGING PROD Prepare an environment where developers can do experiments and test their code (DEV) Have an environment where performance and load tests can be done (TEST/QUALITY ASSURANCE) User acceptance tests should be done on an environment similar to production (STAGING/UAT/SIT) Development Environments
  • 43.
    Package Repository Messaging Services(emails, messages) Version Control System Make releases frequently (SHORT RELEASES) Deploy your applications with one click (Continuous DEPLOYMENT) Shorten release and boot times of your software (Fast bootup) Raise DevOps that knows software development and IT operations at the same time (DEVOPS) Release Management & Deployments DEV TEST & QA STAGING PROD Continuous Deployment Developer Business Analyst Tester
  • 44.
    Clouds force youto follow the practices to some extent. Software development on clouds DevOpsDevOps DevOps DevOps Version Control System Developer Business Analyst Tester
  • 45.
    You cannot talkabout agility without eXtreme Programming practices. And XP can only be achieved by pashioned programmers.“ ”İsa Göksu Agile Practice Lead
  • 46.
    Photos used inthe slidES http://www.flickr.com/photos/emmanuelecontini/2558211856 http://www.flickr.com/photos/thecampbells/5103649471 http://www.flickr.com/photos/robbiemacphotos/7875854334 http://www.flickr.com/photos/w4nd3rl0st/7174403872 http://s590.photobucket.com/user/asmithj/media/CPC/girl_2_computer_arms_raised2.jpg.html http://www.flickr.com/photos/usnavy/5488581781 http://www.flickr.com/photos/purplemattfish/3489639831 http://www.flickr.com/photos/thomashawk/7215052318 http://www.flickr.com/photos/nuwandalice/4764805046 http://www.flickr.com/photos/lauter-als-der-rest/6898114788 http://www.flickr.com/photos/31288116@N02/4008216690 http://www.flickr.com/photos/a2gemma/1448178195 http://www.flickr.com/photos/nuudls/3281779141
  • 47.
    Lemİ orhan ergİn lemiorhan@agilistanbul.com @lemiorhan @lemiorhan agilistanbul.com @lemiorhan LINKEDINTWITTERSLIDESHAREBLOG PrincipalSoftware Engineer @ Sony Founder & Author @ agilistanbul.com flyingtomoon.com The slides were presented on 13th of June, 2013 at Agile Talks which is a set of seminars organized by Agile Turkey few times in a year in Turkey The content of this presentation is originally in Turkish. The author translated into English by purpose.