let the elephants leave the room: tips for making development life leaner by lemi orhan ergin
TRANSCRIPT
Tips for Making Your Development Life
Leaner
Lemİ Orhan ErgİnAgile Software Craftsman
let the
leave the roomelephants
elephants
Lemİ Orhan Ergİn
let the
leave the roomelephants
Developing since 2001 Developer, Architect
Coach, Trainer, Consultant Managing Partner at ACM
Sony & eBay Alumni
lemiorhan lemiorhanergin.com
lemiorhan
Lemİ Orhan ErgİnAgile Software Craftsman
Founder of SC Turkey Core Member of Agile Turkey
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://boeingboeing2.deviantart.com/art/Well-time-to-fly-another-airline-516735690Licensed under Creative Commons BY-NC 3.0
defects
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
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
FOCUS ON QUALITY
Design Patterns Refactoring Techniques OOP/FP/RP Principles Clean Code Principles Automated testing Design by tests (TDD) Code review techniques Pair programming culture
KEEP YOUR REPO TINY
Slit your code into multiple repos Focus on continuous delivery Keep your commit graph clean Do not overdose branching Delete code Prefer modular design
legacy code
Code without tests is legacy code
Michael Feathersfrom the book “Working
Effectively with Legacy Code”
PAY YOUR DEBT
Keep track of technical debt in a backlog Do not complete unless it is refactored Document tricks and workarounds Get refactored tasks in every Sprint
“We zombify people by using wrong practices”Niels Pflaeging
Management Exorcistfrom his talk at Agile Turkey Summit 2014
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 Slow CI builds Manual release steps Work alone Only author knows the code Unsynchronized branches Hesitation to commit the changes Test last development
Long-lasting defects 99% done tasks Rework at the end Slow CI builds Manual release steps Work alone Only author knows the code Unsynchronized branches Hesitation to commit the changes Test last development
Calculate defect resolution times
think differently
success Define definition of done and obey
Refactor continuously10 minute CI builds Automatic release stepsProgram in peers and as the whole teamCode is reviewed by the teamCheckin codebase frequentlyCommit early, commit often, perfect laterDesign by Tests (TDD)
It’s sad, but have to admit
No one reads our documentation Even we do not read what we write Information becomes obsolete too fast Reading analysis is too booooring!
readable to read
Documentation should be as visual as it can be.
It should make you feel like reading comic strips.
Alper Tongafrom his talk about “Documentation in Agile
Transformation” at PMI-TR Summit’14http://www.slideshare.net/scrumturkey/pmi-tr-summit-2014-alper-tonga
Split the project into epics & stories
Design domain model and concepts
Keep initial size estimations
release planning
Commit messages Branch names Commit graph Production code Test code Flow diagrams API documentation Release notes Code review comments
Developers write documents
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
challenge your paradigms
Visualize the flows and observe Detect waste and the root causes
Take action to improve Inspect and Adapt