let the elephants leave the room: tips for making development life leaner by lemi orhan ergin

45
Tips for Making Your Development Life Leaner Lemİ Orhan Ergİn Agile Software Craftsman let the leave the room elephants Lemİ Orhan Ergİn

Upload: bosnia-agile

Post on 16-Apr-2017

88 views

Category:

Technology


0 download

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

CONFERENCE SPONSORS

GOLD

SILVER

BRONZE

MEDIA PARTNERS

we are naive

optimistic by default assumes all goes well

of course we’ll succeed

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

legacy code

http://youhadonejob.org

usability

http://boeingboeing2.deviantart.com/art/Well-time-to-fly-another-airline-516735690Licensed under Creative Commons BY-NC 3.0

defects

http://forgifs.com/gallery/v/Funny/Unloading-cement-pipe-onto-tires.gif.html

processes

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

Preserving value with less work

LEAN is a MINDSET

Let’s find waste and eliminate

in software development

THE code ITSELF

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

developing the design

Source code is the design Jack W. Reeves

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

technical debt

debt is like being fatter

Anything that makes your product difficult to move on

legacy code

Code without tests is legacy code

Michael Feathersfrom the book “Working

Effectively with Legacy Code”

Sooner or later you will fall.

PAY YOUR DEBT

Stop debugging! Start TDD!

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

debugging

bug fixingmanual deployments

manual testingunmerged branches

big upfront designcomments

“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)

documentation

foreword

Documentation is not a way of communication

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

Easier to group Easier to detail Easier to read Easier to organize

Requirement Gathering

Split the project into epics & stories

Design domain model and concepts

Keep initial size estimations

release planning

Developers write documents A LOT

really ???

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

Lemİ orhan ergİn

@lemiorhanhttps://www.linkedin.com/in/lemiorhan

@lemiorhanhttps://twitter.com/lemiorhan

@lemiorhanhttp://www.slideshare.net/lemiorhan

agile software craftsman

lemiorhanergin.comOfficial site having personal information

www.acm-software.com