Top Banner
Waste Driven Development Lean Thinking for Software Developers LEMi ORHAN ERGiN agile software craftsman @ iyzico Fighting with
40

Waste Driven Development - Agile Coaching Serbia Meetup

Jan 22, 2018

Download

Software

Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Waste Driven Development - Agile Coaching Serbia Meetup

Waste DrivenDevelopment

Lean Thinking forSoftware Developers

LEMi ORHAN ERGiNagile software craftsman @ iyzico

Fighting with

Page 2: Waste Driven Development - Agile Coaching Serbia Meetup

LEMi ORHAN ERGiNagile software craftsman @ iyzico

/lemiorhan lemiorhanergin.com @lemiorhan

agile practice lead at iyzico Sony, eBay/GittiGidiyor & ACM

founder of Software Craftsmanship Turkey ex product owner of Agile Turkey Summit

organized 200+ meetups and 3 conferences

Waste Driven

Page 3: Waste Driven Development - Agile Coaching Serbia Meetup

we are naive

optimistic by default assumes all goes well

of course we’ll succeed

Page 4: Waste Driven Development - Agile Coaching Serbia Meetup

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

Page 5: Waste Driven Development - Agile Coaching Serbia Meetup

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

Page 6: Waste Driven Development - Agile Coaching Serbia Meetup

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

Page 7: Waste Driven Development - Agile Coaching Serbia Meetup

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.

Page 8: Waste Driven Development - Agile Coaching Serbia Meetup

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.

Page 9: Waste Driven Development - Agile Coaching Serbia Meetup

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

Page 10: Waste Driven Development - Agile Coaching Serbia Meetup

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

Page 11: Waste Driven Development - Agile Coaching Serbia Meetup

their problems to be understood and solvedCustomers really care

Page 12: Waste Driven Development - Agile Coaching Serbia Meetup

think like a Customer

our job should be maximizing the values

we can deliver

Page 13: Waste Driven Development - Agile Coaching Serbia Meetup

LEAN is a MINDSET

Page 14: Waste Driven Development - Agile Coaching Serbia Meetup

Maximizing value for the end customer

by removing waste

LEAN is a MINDSET

Page 15: Waste Driven Development - Agile Coaching Serbia Meetup

value Any action or process that a customer would be willing to pay for

Page 16: Waste Driven Development - Agile Coaching Serbia Meetup

doesn’t add value to the product makes you slow down decrease productivity makes us open to do mistakes increase comlexity

WASTE

Page 17: Waste Driven Development - Agile Coaching Serbia Meetup

Let’s find waste and eliminate

in software development

Page 18: Waste Driven Development - Agile Coaching Serbia Meetup

THE code ITSELF IS WASTE

Page 19: Waste Driven Development - Agile Coaching Serbia Meetup

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”

Page 20: Waste Driven Development - Agile Coaching Serbia Meetup

valueless developments

The very first value of software is

to tolerate and facilitate on-going changes

Robert C. Martin

Page 21: Waste Driven Development - Agile Coaching Serbia Meetup

Working topics on the left does not mean we are good at using the topics on the right

Page 22: Waste Driven Development - Agile Coaching Serbia Meetup

debuggingbug fixing

manual deployments

manual testingunmerged branches

big upfront designcomments

LOGGINGframework addiction

highly coupled designbıg RELEASESno security concerns HAVING SILOSpackage organization

Page 23: Waste Driven Development - Agile Coaching Serbia Meetup

FOCUS ON DESIGN & QUALITY

Design Patterns Refactoring Techniques OOP/FP/RP Principles Clean Code Principles Automated testing Acceptance testing Test Driven Design (TDD) Code review techniques Pair programming culture

Page 24: Waste Driven Development - Agile Coaching Serbia Meetup

KEEP YOUR REPO TINY

Slit your code into multiple modules / plugins Keep your commit graph clean Never allow long-living branches Do not hesitate to delete code Refactor code via SOLID principles Keep independent parts in separate repos Maintain modules in a single mono repo

Page 25: Waste Driven Development - Agile Coaching Serbia Meetup

“We zombify people by using wrong practices”Niels Pflaeging

Management Exorcistfrom his talk at Agile Turkey Summit 2014

Page 26: Waste Driven Development - Agile Coaching Serbia Meetup

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

Page 27: Waste Driven Development - Agile Coaching Serbia Meetup

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 Hesitation to commit the changes Manual testing again and again

Page 28: Waste Driven Development - Agile Coaching Serbia Meetup

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 Hesitation to commit the changes Manual testing again and againDesign by Tests (TDD)

Calculate defect resolution times

think differently

success Define definition of done and obey

Refactor continuouslyKeep feature branches shortAutomatic release stepsProgram in peers and as the whole teamNever release unreviewed code to prodCheckin codebase frequentlyCommit early, commit often, perfect later

Page 29: Waste Driven Development - Agile Coaching Serbia Meetup

define standardseveryone should have same understanding and base

Analysis Testing

Architecture Release & Deployment

Bug Fixing Database Structure

Error Handling

Logging Quality Metrics Web Services / API Coding / Naming Code Review Commit Messages Messaging

Page 30: Waste Driven Development - Agile Coaching Serbia Meetup

version everythingcontinuous delivery starts with efficient use of SCMs

Source code Deployment scripts

Application configuration Auto generated codes

Automated tests

Static content (like images) Rewrite rules Server configurations Database schema changes Dependency configurations

Page 31: Waste Driven Development - Agile Coaching Serbia Meetup

automize everythingremove waste, push to extremes, slow down to go fast

Running unit tests Building / packaging

Code analysis Deployments

Functional testing Releases

Cache cleanup

Performance monitoring Regression testing Rollbacks Scaling Integration of all commits Notifying warning or errors Reporting

Page 32: Waste Driven Development - Agile Coaching Serbia Meetup

radical transparencyopenness, honesty, collaboration and improvement requires

Release dates Critical defects in production

Status of the project SLAs (Service Level Agreements)

Bugs in new features Agreed standards Definition of Done

Names of on-call support people Quality metrics of the software Velocity of the team Lead and cycle times Business value delivered Moods of team members Vacation dates of people

Page 33: Waste Driven Development - Agile Coaching Serbia Meetup

documentation IS WASTE

Page 34: Waste Driven Development - Agile Coaching Serbia Meetup

foreword

Documentation is not a way of communication

Page 35: Waste Driven Development - Agile Coaching Serbia Meetup

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!

Page 36: Waste Driven Development - Agile Coaching Serbia Meetup

really ???

Developers write documents A LOT

Page 37: Waste Driven Development - Agile Coaching Serbia Meetup

Commit messages Branch names Commit graph Log messages

Production code Test code

Release notes Code review comments

Developers write documents

Configurations Message flows User guides Module designs Standards and guidelines Support knowledge base Flow diagrams API documentation

Page 38: Waste Driven Development - Agile Coaching Serbia Meetup

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

Page 39: Waste Driven Development - Agile Coaching Serbia Meetup

challenge your paradigms

Visualize the flows and observe Detect waste and the root causes

Take action to improve Inspect and Adapt

Page 40: Waste Driven Development - Agile Coaching Serbia Meetup

LEMi ORHAN ERGiNagile software craftsman @ iyzico

/lemiorhan lemiorhanergin.com @lemiorhan