Lean Thinking for
Software Developers
LEMi ORHAN ERGiN
agile software craftsman @ iyzico
WASTE DRIVEN
DEVELOPMENT
FIGHTING WITH
manager
developer
the product guy
developer
@lemiorhan
/lemiorhan
lemiorhanergin.com
@lemiorhan
LEMi ORHAN ERGiN
agile software craftsman @ iyzico
ex-Sony, ex-eBay
founder of Turkish Software 

Craftsmanship Community
we are naive
optimistic by default
assumes all goes well
of course we’ll succeed
and over-confident
super heroes
smartest guy on planet
write perfect code
design the best
do it right for the first time
understand customer needs
manage people & projects
build elegant solutions
http://imgur.com/a/Smr5d
Are you scared of
touching your source code?
Welcome to the club!
Legacy code consumes your life energy,
sucks your blood, forces you hack your
code to survive. Therefore we call it
zombie software, not legacy anymore
legacy code
http://youhadonejob.org
Less than 0.01 percent
That’s how many consumer mobile apps will
be considered a financial success by their
creators at the end of 2018, according to
new research from Gartner Inc.
http://www.forbes.com/sites/connieguglielmo/2014/01/13/
mobile-apps-may-not-pave-the-way-to-developer-riches-sales-
average-less-than-1250-a-day
Mobile Apps Won't Lead To Riches For Most Developers
by Connie Guglielmo
http://boeingboeing2.deviantart.com/art/Well-time-to-fly-another-airline-516735690
Licensed under Creative Commons BY-NC 3.0
We have time to fix bugs,
but no time for writing better
We don’t refactor and write tests
because we don’t have enough time.
But we have time for debugging,
hacking code and fixing bugs.
http://forgifs.com/gallery/v/Funny/Unloading-cement-pipe-onto-tires.gif.html
Processes do not
build products,
but people do
Processes help people improve the
way they build products, increase
motivation and cultivate an
healthy environment. In the end,
the efficiency of processes are
important, but people are crucial.
build the wrong thing
build the thing wrong
poor quality
bugs and defects
slow and unproductive
endless dependencies
redundant tasks
drowned in waste
error error error error error
error error error error error
error error error error error
error error error error error
error error error error error
error error error error error
error error error error error
error error error error error
the languages we code
the technologies we use
the refactorings we need
the dependencies we have
the processes we follow
the feelings we have
Customers don’t care
their problems to be
understood and solvedCustomers really care
think like a
Customer
our job should be
maximizing the values
we can deliver
LEAN is a MINDSET
Maximizing value
for the end customer
by removing waste
LEAN is a MINDSET
value Any action or process that a
customer would be willing to pay for
doesn’t add value to the product
makes you slow down
decrease productivity
makes us open to do mistakes
increase complexity
WASTE
Let’s
find waste
and eliminate
in software development
searching for the missing single quote?
more code more defects
Industry average is about
15 - 50 errors per 1000 lines 

of delivered code.
Steve McConnell
from of the book “Code Complete”
valueless developments
The very first value
of software is
to tolerate and facilitate
on-going changes
Robert C. Martin
we are surrounded with waste
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
COMMIT MESSAGES & GRAPH HAVING SILOSpackage organization
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debugging
bug fixing
manual deployments
manual testing
unmerged branches
big upfront design
comments
LOGGING
framework addiction
highly coupled design
bıg RELEASES
HAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
“We zombify people by using wrong practices”
Niels Pflaeging
Management Exorcist
from his talk at Agile Turkey Summit 2014
follow the BOY SCOUT RULE
CUREPay technical debt
need a CULTURAL SHIFT
follow the BOY SCOUT RULE
Pay technical debt
need a CULTURAL SHIFT
Define technical debts regularly and put to backlog
Fix bugs and do refactorings at every sprint
100 percent feature development kills your project
Batman & Robin might save your life
follow the BOY SCOUT RULE
Pay technical debt
need a CULTURAL SHIFT
Teach your values and principles to the team
Slow down to go fast
It's your profession, do it well!
follow the BOY SCOUT RULE
Pay technical debt
need a CULTURAL SHIFT
it defines a culture and a discipline
it is based on code review, refactoring and kaizen
it improves collective ownership and triggers collaboration
it is an antidote for dissolving silos.
it is a strategy for continuously eliminating waste
Develop and refactor
Evolutionary design
Fully automated testing
Make codebase clean
Frequent short releases
Reproduce in test and fix
Get feedback and release
Develop and refactor
Evolutionary design
Fully automated testing
Make codebase clean
Frequent short releases
Reproduce in test and fix
Get feedback and release
Develop and bug fix
Big upfront design
Manual testing
Add comments to codebase
Big releases
Fix and test
Release and get feedback
waste driven development
Long-lasting defects
99% done tasks
Rework at the end
Missing continuous integration
Manual release steps
Working alone
Only author knows the code
Unsynchronized branches
Feeling like a newbie while using a SCM
Manual testing again and again
Long-lasting defects
99% done tasks
Rework at the end
Missing continuous integration
Manual release steps
Working alone
Only author knows the code
Unsynchronized branches
Feeling like a newbie while using a SCM
Manual testing again and againAutomated tests in all levels
Calculate defect resolution times
success
Define definition of done and obey
Refactor continuously
Keep feature branches short
Automatic release steps
Program in peers and as the whole team
Never release unreviewed code to prod
Checkin codebase frequently
Learn Git (or any other you use) perfectly
think differently
LET PEOPLE THINK differently
Brainstorming Sessions about
standards, architecture and technical debt
Grand Retrospectives
LET PEOPLE do differently
TDD Radori Sessions Coding Dojos Code Retreats
AND DESIGNthink differently
AND DESIGNthink differently
never
ending
story
Estimations
Management practices
Performance appraisals
Status Tracking
Time Tracking
Control of working hours
Working at office
Overtimes
Meetings
Dress codes
Clean desk policy
Tools and OS
Turnovers
Motivation
Micro management
Office space
LEMi ORHAN ERGiN
agile software craftsman @ iyzico
Feedback: bit.ly/lemiorhan
thank you all!

Fighting with Waste Driven Development - XP Days Ukraine 2017

  • 1.
    Lean Thinking for SoftwareDevelopers LEMi ORHAN ERGiN agile software craftsman @ iyzico WASTE DRIVEN DEVELOPMENT FIGHTING WITH manager developer the product guy developer @lemiorhan
  • 2.
    /lemiorhan lemiorhanergin.com @lemiorhan LEMi ORHAN ERGiN agilesoftware craftsman @ iyzico ex-Sony, ex-eBay founder of Turkish Software 
 Craftsmanship Community
  • 3.
    we are naive optimisticby default assumes all goes well of course we’ll succeed
  • 4.
    and over-confident super heroes smartestguy on planet write perfect code design the best do it right for the first time understand customer needs manage people & projects build elegant solutions
  • 5.
    http://imgur.com/a/Smr5d Are you scaredof touching your source code? Welcome to the club! Legacy code consumes your life energy, sucks your blood, forces you hack your code to survive. Therefore we call it zombie software, not legacy anymore legacy code
  • 6.
    http://youhadonejob.org Less than 0.01percent That’s how many consumer mobile apps will be considered a financial success by their creators at the end of 2018, according to new research from Gartner Inc. http://www.forbes.com/sites/connieguglielmo/2014/01/13/ mobile-apps-may-not-pave-the-way-to-developer-riches-sales- average-less-than-1250-a-day Mobile Apps Won't Lead To Riches For Most Developers by Connie Guglielmo
  • 7.
    http://boeingboeing2.deviantart.com/art/Well-time-to-fly-another-airline-516735690 Licensed under CreativeCommons BY-NC 3.0 We have time to fix bugs, but no time for writing better We don’t refactor and write tests because we don’t have enough time. But we have time for debugging, hacking code and fixing bugs.
  • 8.
    http://forgifs.com/gallery/v/Funny/Unloading-cement-pipe-onto-tires.gif.html Processes do not buildproducts, but people do Processes help people improve the way they build products, increase motivation and cultivate an healthy environment. In the end, the efficiency of processes are important, but people are crucial.
  • 9.
    build the wrongthing build the thing wrong poor quality bugs and defects slow and unproductive endless dependencies redundant tasks drowned in waste error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error error
  • 10.
    the languages wecode the technologies we use the refactorings we need the dependencies we have the processes we follow the feelings we have Customers don’t care
  • 11.
    their problems tobe understood and solvedCustomers really care
  • 12.
    think like a Customer ourjob should be maximizing the values we can deliver
  • 13.
    LEAN is aMINDSET
  • 14.
    Maximizing value for theend customer by removing waste LEAN is a MINDSET
  • 15.
    value Any actionor process that a customer would be willing to pay for
  • 16.
    doesn’t add valueto the product makes you slow down decrease productivity makes us open to do mistakes increase complexity WASTE
  • 17.
  • 18.
    searching for themissing single quote?
  • 19.
    more code moredefects Industry average is about 15 - 50 errors per 1000 lines 
 of delivered code. Steve McConnell from of the book “Code Complete”
  • 20.
    valueless developments The veryfirst value of software is to tolerate and facilitate on-going changes Robert C. Martin
  • 21.
  • 22.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES COMMIT MESSAGES & GRAPH HAVING SILOSpackage organization
  • 23.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 24.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 25.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 26.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 27.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 28.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 29.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 30.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 31.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 32.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 33.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 34.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 35.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 36.
    debugging bug fixing manual deployments manualtesting unmerged branches big upfront design comments LOGGING framework addiction highly coupled design bıg RELEASES HAVING SILOSpackage organization COMMIT MESSAGES & GRAPH
  • 37.
    “We zombify peopleby using wrong practices” Niels Pflaeging Management Exorcist from his talk at Agile Turkey Summit 2014
  • 38.
    follow the BOYSCOUT RULE CUREPay technical debt need a CULTURAL SHIFT
  • 39.
    follow the BOYSCOUT RULE Pay technical debt need a CULTURAL SHIFT Define technical debts regularly and put to backlog Fix bugs and do refactorings at every sprint 100 percent feature development kills your project Batman & Robin might save your life
  • 40.
    follow the BOYSCOUT RULE Pay technical debt need a CULTURAL SHIFT Teach your values and principles to the team Slow down to go fast It's your profession, do it well!
  • 41.
    follow the BOYSCOUT RULE Pay technical debt need a CULTURAL SHIFT it defines a culture and a discipline it is based on code review, refactoring and kaizen it improves collective ownership and triggers collaboration it is an antidote for dissolving silos. it is a strategy for continuously eliminating waste
  • 42.
    Develop and refactor Evolutionarydesign Fully automated testing Make codebase clean Frequent short releases Reproduce in test and fix Get feedback and release Develop and refactor Evolutionary design Fully automated testing Make codebase clean Frequent short releases Reproduce in test and fix Get feedback and release Develop and bug fix Big upfront design Manual testing Add comments to codebase Big releases Fix and test Release and get feedback
  • 43.
    waste driven development Long-lastingdefects 99% done tasks Rework at the end Missing continuous integration Manual release steps Working alone Only author knows the code Unsynchronized branches Feeling like a newbie while using a SCM Manual testing again and again
  • 44.
    Long-lasting defects 99% donetasks Rework at the end Missing continuous integration Manual release steps Working alone Only author knows the code Unsynchronized branches Feeling like a newbie while using a SCM Manual testing again and againAutomated tests in all levels Calculate defect resolution times success Define definition of done and obey Refactor continuously Keep feature branches short Automatic release steps Program in peers and as the whole team Never release unreviewed code to prod Checkin codebase frequently Learn Git (or any other you use) perfectly think differently
  • 45.
    LET PEOPLE THINKdifferently Brainstorming Sessions about standards, architecture and technical debt Grand Retrospectives
  • 46.
    LET PEOPLE dodifferently TDD Radori Sessions Coding Dojos Code Retreats
  • 47.
  • 48.
  • 49.
    never ending story Estimations Management practices Performance appraisals StatusTracking Time Tracking Control of working hours Working at office Overtimes Meetings Dress codes Clean desk policy Tools and OS Turnovers Motivation Micro management Office space
  • 50.
    LEMi ORHAN ERGiN agilesoftware craftsman @ iyzico Feedback: bit.ly/lemiorhan thank you all!