Date post: | 22-Jan-2018 |
Category: |
Software |
Upload: | lemi-orhan-ergin |
View: | 354 times |
Download: | 0 times |
Lean Thinking forSoftware Developers
LEMi ORHAN ERGiNagile software craftsman @ iyzico
WASTE DRIVENDEVELOPMENT
FIGHTING WITH
manager
developer
the product guy
developer
@lemiorhan
/lemiorhan lemiorhanergin.com @lemiorhan
LEMi ORHAN ERGiNagile software craftsman @ iyzico
ex-Sony, ex-eBay
founder of Turkish Software Craftsmanship Community
DEVELOPMENT
we are naive
optimistic by default assumes all goes well
of course we’ll succeed
LEMi ORHAN ERGiN
and over-confidentsuper 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 Developersby Connie Guglielmo
http://boeingboeing2.deviantart.com/art/Well-time-to-fly-another-airline-516735690Licensed 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 doProcesses 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
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESCOMMIT MESSAGES & GRAPH HAVING SILOSpackage organization
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
debuggingbug fixing
manual deployments
manual testingunmerged branches
big upfront designcomments
LOGGINGframework addiction
highly coupled designbıg RELEASESHAVING SILOSpackage organization
COMMIT MESSAGES & GRAPH
“We zombify people by using wrong practices”Niels PflaegingManagement Exorcist
from his talk at Agile Turkey Summit 2014
follow the BOY SCOUT RULE
CURE Pay technical debtneed 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 debtneed a CULTURAL SHIFTTeach 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 debtneed 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 timessucce
ss Define definition of done and obeyRefactor continuouslyKeep feature branches shortAutomatic release stepsProgram in peers and as the whole teamNever release unreviewed code to prodCheckin codebase frequentlyLearn 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 ERGiNagile software craftsman @ iyzico
Feedback: bit.ly/lemiorhan
thank you all!