lemi orhan ergin - code your agility: tips for boosting technical agility in your organization

47
CODE YOUR AGILITY Tips for Boosting Technical Agility in Your Organization LEMI ORHAN ERGIN Master Software Craftsman, ACM /lemiorhan /lemiorhan

Upload: agile-lietuva

Post on 16-Apr-2017

542 views

Category:

Leadership & Management


1 download

TRANSCRIPT

Page 1: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

CODE YOUR AGILITYTips for Boosting Technical Agility in Your Organization

LEMI ORHAN ERGIN Master Software Craftsman, ACM /lemiorhan /lemiorhan

Page 2: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Developing software since 2001 Community Lead of Agile Turkey Founder of Software Craftsmanship Turkey Developer, Architect, Trainer, Coach, Leader Sony & eBay Alumni Managing Partner at ACM

LEMI ORHAN ERGIN Master Software Craftsman, ACM /lemiorhan /lemiorhan

/lemiorhan

lemiorhanergin.com

@lemiorhan

Page 3: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

AGILTYconcept emerges for helping developers to let them build productive processes and

high quality software

Page 4: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Customer satisfaction Employee motivation Team collaboration Technical AGILTY Product management Business involvement Project management Process efficiency feedback mechanisms decision making servant leadership continuous improvement sufficient Documentation talent acquisition Automated flows status transparency

is more than you expectAGILTY

Page 5: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Is technical agility about knowing technologies?

Page 6: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

python

java

android

go

phpgroovy

webservicesjquery lucene

grailsnewrelic

mongodb

couchbasehibernate

memcache

html5laravel

bootstrap

xmldjango

ratpack

mysql

ajaxoauth

seo

zend

spring

perl

c++elasticsearch

solr

rabbitmq

activemq mulejson

c#hadoop

alfresco

css

apache

git

svn

jruby

scala

javascript

postgres

ehcache

redis

riak bashios

expressjs

socketio

jms

jmx

nodejs

ruby

primefaces

hazelcast

jsf

playpl/sql

dart

wordpress

behat

angularjs

akkacassandra

c

cucumber junit

erlangclosure

Page 7: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Technical agility is about how well you use them

Page 8: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

pair programming

simple design

collaboration culturecode branching

short upfront design

central package repository

daily snapshots

behavior driven development

a/b testing

version control systems

solid principles

cloud compatibity

enterprise environments

branching modelsfeature freeze

collective ownership

educate upfront

frequent releases

unit testing

kaizen

code coverage

continuous builds

code standards

best practicesagile documentation

automatic security testing

static code analysis

refactoringcontinuous integration

testing strategies

minimum viable product

evolutionary design

tdd

devops culture

iterative development

bbs

cross functional teams

clean code principles

continuous deployment

fast bootupsdesign patterns

10 minutes builds

continuous delivery

evergreen build status

acceptance testingcode review

coderetreat

mind-mapping

lean startup

Page 9: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

TECHNICAL AGILITY Is ALL about development

CULTURE

Page 10: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Let’s develop a project with succeeded practicesin an agile culture

Page 11: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

commit to your manifestodefine how you build your software and what you believe

Page 12: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization
Page 13: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

find your foremanbe apprentice of a craftsman and master your professionalism

Page 14: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

he is a true believer he is a software craftsman he reminds you the principles he makes sure everything done right he checks test coverages he reviews all codebases he looks for low quality outputs he detects technical improvements he proposes training topics he does mentorship he convinces people he rejects unreasonable demands he checks works with standards he advices for continuous delivery he uses and advocates alm processes he identifies dependencies

FORMAN

Page 15: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

be proficient with toolstools are your most reliable friends in your daily work

Page 16: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

CI Server

IDE/Editor

Source Code Version System

Console

Build Tool

Code Analysis Tool

Vagrant / Docker

Page 17: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

feel responsible of your workyou are what you build

Page 18: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

BE RESPONSIBLE OFdesign architecture quality testing performance maintenance operations practicesOF YOUR WORK

Page 19: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

share what you knowyour knowledge is not valuable if you don’t share with someone

Page 20: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

brown

bagsessions

Everyone has things to teach Everyone should be a speaker Everyone should participate No limitations on topics No need to be experts

After organizing 100+ meetups, I realized thatBBS might be the most

effective catalyst of developer motivation

Page 21: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

expertise tdd and testingmajority of problems occur due to lack of expertise in desing

Page 22: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

I am

Scared!When I change something, some other features might stop working!

Page 23: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

“I spend days for manual testing!”

Page 24: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

WE’RE producing Zombie software

Page 25: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

SOFTWARES HAVE TO BREATH TO LIVE

Page 26: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

3 RULES OF WRITING A LIVING SOFTWARE

Page 27: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Continuous Refactoring Continuous Testing

Evolutionary Design

3 RULES OF WRITING A LIVING SOFTWARE

Page 28: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Continuous Refactoring Continuous Testing

Evolutionary Design

3 RULES OF WRITING A LIVING SOFTWARE

TDD

Page 29: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

I cannot ACHIEVE TDD

WHY?

Page 30: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

IS HARDSOFTWAREDESIGNING

Page 31: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

YOU NEVER RESERVE TIME TO WRITE TESTS

you always have time for tests you either spend it for fixing bugs

or writing automated tests

Page 32: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

THE ROADMAPFOLLOWINGYOU ARE NOT

Page 33: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

LEARNESTABLISHPERFORM

THE ROADMAP

Page 34: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

LEARNESTABLISHPERFORM

THE ROADMAP

Page 35: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles

THE ROADMAPLEARN

ESTABLISHPERFORM

Page 36: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles

Continuous Integration server Source code versioning system Notification mechanism Code coverage monitoring

THE ROADMAPLEARN

ESTABLISHPERFORM

Page 37: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles

Continuous Integration server Source code versioning system Notification mechanism Code coverage monitoring

Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD

THE ROADMAPLEARN

ESTABLISHPERFORM

Page 38: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles

Continuous Integration server Source code versioning system Notification mechanism Code coverage monitoring

Practice TDD via katas Develop via TDD Acceptance testing via TDD Verify by behaviours via BDD

THE ROADMAPLEARN

ESTABLISHPERFORM

Page 39: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

organize code retreatspracticing is the best way to improve our craft

Page 40: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

6 continents 137 cities 20 timezones 2000+ developers 31 hours of coding

Global Day of Code Retreat

November 15, 2014

coderetreat.org Coderetreat Community Network

35 people attended the day in Istanbul

Page 41: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

build new habitsimproving quality of your software is a daily behavior

Page 42: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

checkin others’ code with yours review CI build status review sonarqube reports review commits graph review bug reports review technical debt in backlog

Page 43: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

define roadmap for craftsmanship

it’s not easy to identify what should we do to improve our craft

Page 44: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Apprentice, Youngling, Padawan, Jedi Knight, Jedi Master, Jedi Council,Grand Master, Yoda

from apprentice to journeyman

Page 45: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

never release an unreviewed code

to production

it is so easy to fall into traps if you rely on your eyes only

Page 46: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

ENJOYremember whatever you do do not forget to

Page 47: Lemi Orhan Ergin - Code Your Agility: Tips for Boosting Technical Agility in Your Organization

Lemİ orhan ergİnagile software craftsman

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

@lemiorhanhttps://twitter.com/lemiorhan

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

lemiorhanergin.comOfficial site having personal information

www.acm-software.com