Slide 1

Slide 1 text

Software engineering practices of an agile developer how do you build Lemİ Orhan ERGİN Principal Software Engineer @ Sony @lemiorhan agilistanbul.com software @lemiorhan ?

Slide 2

Slide 2 text

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

Slide 3

Slide 3 text

but it sucks! software development is cool because we hardly find successful software

Slide 4

Slide 4 text

missing deadlines extra costs never used features unknown risks unmotivated employees bugs, failures, errors legacy systems incompetent developers micro managing managers huge technical debts

Slide 5

Slide 5 text

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”

Slide 6

Slide 6 text

only very few can make it by following non-traditional ways

Slide 7

Slide 7 text

how?

Slide 8

Slide 8 text

of reasons to fail a lot we have

Slide 9

Slide 9 text

company politics some of them are due to we are unable to do anything here

Slide 10

Slide 10 text

developing software in unnatural way but the reason of all the others is

Slide 11

Slide 11 text

The nature of software and 9 main rules

Slide 12

Slide 12 text

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.

Slide 13

Slide 13 text

In general the customers do not know what they really want 2

Slide 14

Slide 14 text

UNCERTAINITY exists in every step of development process 3

Slide 15

Slide 15 text

requirements always change 4 Start Point Target Point 2 1 3

Slide 16

Slide 16 text

Software development is not just 5 Programming

Slide 17

Slide 17 text

Software should always be maintained after go live 6

Slide 18

Slide 18 text

Software development is a social activity 7

Slide 19

Slide 19 text

BIG-Up-front detailed estimation & Design are UNNECESSARY 8

Slide 20

Slide 20 text

Today or later 9 You have to pay the technical debt

Slide 21

Slide 21 text

requirements design Implementation verification maIntenance requirements design Implementation development process of our dreams one step starts after another completes Maintenance

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

agility concept emerges for helping developers to let them develop in natural way

Slide 24

Slide 24 text

Agile development is not only about project planning Project planning is just a part of agile software development

Slide 25

Slide 25 text

Agile software development Agile planning and management Software engineering practices Customer satisfaction Teamwork Motivation this is the topic we are interested in

Slide 26

Slide 26 text

Let’s develop a project by using agile development practices

Slide 27

Slide 27 text

message to companies See your developers not as resources, but talents “ ”

Slide 28

Slide 28 text

Define your values and let everyone know Educate everyone up-front Define your team’s norms and values the manifesto

Slide 29

Slide 29 text

Build your team one team per product, not per project Cross functional teams swat team sit together Cultivate collaboration culture

Slide 30

Slide 30 text

Development that 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

Slide 31

Slide 31 text

Start the project and follow these basic practices Minimum viable product Emergent simple design short up-front design Agile Documenting

Slide 32

Slide 32 text

testing strategy you can never succeed without it TDD ATDD BDD Testing legacy systems A/B Testing chaos monkey MULTI LAYER TESTING design?

Slide 33

Slide 33 text

never release an unreviewEd code to production! NEVER!

Slide 34

Slide 34 text

reproduce the bugs with tests before fixing it or the fixed bugs may rise again!

Slide 35

Slide 35 text

get feedback as soon as possible, as much as possible code coverage continuous ıntegration continuous build code analysis 10 min build evergreen build status

Slide 36

Slide 36 text

continuous delivery being always ready to go-live snapshots daily Builds continuous delivery central package repository

Slide 37

Slide 37 text

release & deploy it should be smooth and error-prune short frequent releases continuous deployment fast bootup devops enterprise environments cloud compatible

Slide 38

Slide 38 text

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

Slide 39

Slide 39 text

No methodology is as effective as being passionate and disciplined “ ” AltuĞ AlTINTAŞ Lean-Kanban Consultant

Slide 40

Slide 40 text

extreme programming http://www.extremeprogramming.org/ Continuous Integration http://www.martinfowler.com/articles/continuousIntegration.html

Slide 41

Slide 41 text

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

Slide 42

Slide 42 text

Lemİ orhan ergİn [email protected] @lemiorhan @lemiorhan agilistanbul.com @lemiorhan LINKEDIN TWITTER SLIDESHARE BLOG Principal Software Engineer @ Sony Founder & Author @ agilistanbul.com flyingtomoon.com