Software engineering practices
of an agile developer
how do you build
Lemİ Orhan ERGİN
Principal Software Engineer @ Sony
@lemiorhanagilistanbul.com
software
@lemiorhan
?
Lemİ Orhan Ergİn
Principal Software Engineer at Sony
has worked in Tüsside, BYM, GittiGidiyor/eBay
and Sony as lead developer, technical leader,
technical coordinator and scrum master
got CSM certificate from Jim Coplien
year as Scrum Master
sprints in 4 years as team member and
scrum master
experienced in agile transformation and
building agile culture in teams & organizations
2001
2013
2009
1
56
agile
CSM, PSM1
0.5M total number of views of his presentations
but it sucks!
software development is cool
because we hardly find
successful software
missing deadlines
extra costs
never used features
unknown risks
unmotivated employees
bugs, failures, errors
legacy systems
incompetent developers
micro managing managers
huge technical debts
are failing
Software projects
“50% of IT projects go into trash in Turkey”
Agile Turkey
mercer consulting
“When the real costs are added up, 80% of the
technology projects costs more than they return”
only very few
can make it
by following non-traditional ways
how?
of reasons
to faila lotwe have
company
politics
some of them
are due to
we are unable to do anything here
developing
software in
unnatural way
but the reason of
all the others is
The nature
of software
and 9 main rules
The ultimate goal is
customer satisfaction
1
Customers have rights to get
software developed with the
features they need in a fast way
of course, you might not satisfy your
customer at this level. that’s fine.
In general the customers
do not know
what they really want
2
UNCERTAINITY
exists in every step of
development process
3
requirements
always change
4
Start Point
Target Point
2
1
3
Software development
is not just
5
Programming
Software should
always be
maintained
after go live
6
Software development is a
social activity
7
BIG-Up-front detailed
estimation & Design are
UNNECESSARY
8
Today or later
9
You have to pay
the technical debt
requirements
design
Implementation
verification
maIntenance
requirements design Implementation
development process of our dreams
one step starts after another completes
Maintenance
THE REALITY IN SOFTWARE DEVELOPMENT
requirements
requirements
requirements
requirements
DESIGN
DESIGN
DESIGN
DESIGN
DESIGN
IMPLEMENTATION
IMPLEMENTATION
IMPLEMENTATION
IMPLEMENTATION
VERIFICATION
VERIFICATION
VERIFICATION
VERIFICATION
VERIFICATION
VERIFICATION
MAINTENANCE
MAINTENANCE
MAINTENANCE
MAINTENANCE
MAINTENANCE
IGN
agility
concept emerges for helping developers
to let them develop in natural way
Agile development is not only
about project planning
Project planning is just a part of agile software development
Agile software development
Agile planning and management
Software engineering practices
Customer satisfaction
Teamwork
Motivation
this is the topic we are
interested in
Let’s develop a project
by using
agile development
practices
message to companies
See your developers not as resources, but talents
“ ”
Define your valuesand let everyone know
Educate
everyone
up-front
Define your
team’s norms
and values
the manifesto
Build your teamone team per product, not per project
Cross
functional
teams
swat team
sit together
Cultivate
collaboration
culture
Start the projectand follow these basic practices
Minimum
viable
product
Emergent
simple
design
short
up-front
design
Agile
Documenting
Developmentthat will never be the same again
use git
code
branching
code / Peer
review
Pair
Programming
Clean code
principles
collective
ownership
build as if
it’s open
source
refactoring
testing strategyyou can never succeed without it
TDD
ATDD
BDD
Testing
legacy
systems
A/B
Testing
chaos
monkey
MULTI LAYER
TESTING
design?
never release an unreviewEd code to production!
NEVER!
reproduce the bugs with tests before fixing it
or the fixed bugs may rise again!
get feedbackas soon as possible, as much as possible
code
coverage
continuous
ıntegration
continuous
build
code
analysis
10 min build
evergreen
build status
continuous deliverybeing always ready to go-live
snapshots
daily Builds
continuous
delivery
central
package
repository
release & deployit should be smooth and error-prune
short
frequent
releases
continuous
deployment
fast
bootup
devops
enterprise
environments
cloud
compatible
and adabt to change in any circumstances
Building robust, stable, flexible,
extensible, high quality software
with teams having highly-competent,
motivated people
in a fast and efficient way
No methodology is as effective as
being passionate and disciplined“
”AltuĞ AlTINTAŞ
Lean-Kanban Consultant
extreme programming
http://www.extremeprogramming.org/
Continuous Integration
http://www.martinfowler.com/articles/continuousIntegration.html
http://www.flickr.com/photos/aaronvandike/3221087856
http://www.flickr.com/photos/frozenhaddock/3948223272
http://www.flickr.com/photos/penguincakes/2930270559
http://www.flickr.com/photos/44898314@N06/8310699806
http://www.flickr.com/photos/jymloke/4476177332
http://www.flickr.com/photos/bowmanitis/8634625952
http://www.flickr.com/photos/sarah_rara/382542210
http://www.flickr.com/photos/hansoete/4965196
http://www.flickr.com/photos/x-ray_delta_one/3812795111
http://www.flickr.com/photos/vikhoa/8823977016
http://www.flickr.com/photos/cattardbezzina/4106668524
http://www.flickr.com/photos/dalboz17/4126689055
http://www.flickr.com/photos/vstrash/2847241785
http://www.flickr.com/photos/aloha75/7299416028
http://www.flickr.com/photos/83905817@N08/7676576180
http://www.flickr.com/photos/dexflu/5330502784
http://www.10wallpaper.com/down/
Leafcutter_ants_carrying_leaves_Braulio_Carrillo_National_Park_1600x1200_wallpaper.html
http://www.flickr.com/photos/nicksee/5152087020
http://www.flickr.com/photos/mnsc/2768391365
Lemİ orhan ergİn
lemiorhan@agilistanbul.com
@lemiorhan
@lemiorhan
agilistanbul.com
@lemiorhan
LINKEDINTWITTERSLIDESHAREBLOG
Principal Software Engineer @ Sony
Founder & Author @ agilistanbul.com
flyingtomoon.com

How Do You Build Software? Software Engineering Practices of an Agile Developer