Slide 1

Slide 1 text

software development practices GMO { the art of developing software in a natural way } Lemİ Orhan ERGİN Principal Software Engineer @ Sony @lemiorhan ‘LESS

Slide 2

Slide 2 text

Lemİ Orhan Ergİn Principal Software Engineer in Sony has worked in Tüsside, BYM, GittiGidiyor/eBay and Sony as developer, team leader, technical coordinator and scrum master got CSM certificate from Jim Coplien year as Scrum Master sprints and 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 @lemiorhan

Slide 3

Slide 3 text

projects? failed Have you ever had

Slide 4

Slide 4 text

We won’t make it, we need extra time I know it’s impossible, but we’ve already promised We have to cancel the project before going live We are facing critical bugs in production We have to re-write the project from scratch No one knows when the project will be finished It was obvious that the project was going to fail Everything was going fine, but what the ... “ ” Project management / Team

Slide 5

Slide 5 text

It’s very expensive to add these features One guy left and the project failed People in development team is always changing Technology and design of the project are too old I fixed a bug and new ones appeared No one has touched some modules for years I cannot add new features while fixing bugs all day We are doing same manual tests again and again “ ” Software Developer

Slide 6

Slide 6 text

11 I have worked in enterprise level projects in my career

Slide 7

Slide 7 text

B2B ecommerce site for the mould industry IBM based product management system Product management system for Europe Document management system for military Marketing sites for European countries Common toolbar for European countries Backend services, components and APIs Common data services for Europe Common syndication services for Europe Core data services for US and Canada Vertical ecommerce module Each one is at least 6 months projects

Slide 8

Slide 8 text

B2B ecommerce site for the mould industry IBM based product management system Product management system for Europe Document management system for military Marketing sites for European countries Common toolbar for European countries Backend services, components and APIs Common data services for Europe Common syndication services for Europe Core data services for US and Canada Vertical ecommerce module 6 of them cancelled before go-live closed after a while will be closed soon %55

Slide 9

Slide 9 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 10

Slide 10 text

why?

Slide 11

Slide 11 text

of reasons to fail a lot we have

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

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

Slide 14

Slide 14 text

agenda The Nature of Software Naturalness of Software: Agility Agile Software Development Practices

Slide 15

Slide 15 text

The nature of software and 9 main rules

Slide 16

Slide 16 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 17

Slide 17 text

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

Slide 18

Slide 18 text

UNCERTAINITY exists in every step of development process 3

Slide 19

Slide 19 text

requirements always change 4 Start Point Target Point 2 1 3

Slide 20

Slide 20 text

Software development is not just 5 Programming

Slide 21

Slide 21 text

Software should always be maintained after go live 6

Slide 22

Slide 22 text

Software development is a social activity 7

Slide 23

Slide 23 text

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

Slide 24

Slide 24 text

ıncreases total real cost 9 compromising quality

Slide 25

Slide 25 text

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

Slide 26

Slide 26 text

agenda The Nature of Software Naturalness of Software: Agility Agile Software Development Practices

Slide 27

Slide 27 text

agile? what is

Slide 28

Slide 28 text

Agile means Adapting to change rapidly and sending a feature or a fix to market rapidly

Slide 29

Slide 29 text

agile means evolving design and development

Slide 30

Slide 30 text

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

Slide 31

Slide 31 text

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

Slide 32

Slide 32 text

agenda The Nature of Software Naturalness of Software: Agility Agile Software Development Practices

Slide 33

Slide 33 text

working on the correct design with newest and best technologies in a short time We aim to complete the projects by

Slide 34

Slide 34 text

However we always face with issues related with humans

Slide 35

Slide 35 text

Getting feedback rapidly Agile ve lean prenciples focus on the following: Speeding up feecback loops

Slide 36

Slide 36 text

Let’s develop a project by using agile development practices

Slide 37

Slide 37 text

See your developers not as resources, but talents (No headcount calculation) Work with people who loves to share knowledge and experiences (Collaborative & Volunteer) Educate people about agile practices and the philosophy behind (Up-Front Education) Build your team with passionate and disciplined developers (Passionate Developer) “Don’t pick the right technology, pick the one that’s cheapest to change” by chris matts Before the start Developer Business Analyst Tester Product Owner

Slide 38

Slide 38 text

Developer Make teams with cross functional people (Cross functional teams) Sit close to your team mates (Sitting CLOSE) Define the minimum set of features that you can get feedback (Minimum Viable Product) Focus on features valuable to the customer (Prioritization) Avoid doing big fat up-front design (Short Up-Front Design) Document enough, don’t go deep into details (Agile Documentation) Let’s start the project Business Analyst Tester

Slide 39

Slide 39 text

Keep your code in a version control system (Version Control System) Program in pairs (Pair Programming) Review others’ code (Code/Peer Review) Develop each feature in a new branch (Code Branching) Follow clean code principles (Clean Code Principles) Do code katas to improve your technical capabilities (Code Kata) Use idiomatic and architectural patterns in addition to design patterns (Idiomatic Patterns) Develop from customers’ point of view by BDD (Behaviour Driven Development) Develop from developers’ point of view by TDD (Test Driven Development) Software development and social coding Version Control System Developer Business Analyst Tester

Slide 40

Slide 40 text

Pull others’ commits and integrate with yours at least once a day (Continuous Integration) Let the existing tests run automatically and get feedback about the failed ones (Continuous Build) Detect untested areas in your code and improve the code coverage (Code Coverage) Don’t afraid of deleting code, improve your design with the help of written tests (Refactoring) Full feedback loop of continous integration should take at most 10 minutes (10 min build) Continuous Integration Messaging Services (emails, messages) Version Control System Continuous Deployment Developer Business Analyst Tester

Slide 41

Slide 41 text

Prepare a working copy of your software available in your CVS (SNAPSHOTs / daily builds) Make the latest working copy of your software ready for deployment (Continuous delivery) Continuous Delivery Package Repository Messaging Services (emails, messages) Version Control System Continuous Deployment Developer Business Analyst Tester

Slide 42

Slide 42 text

DEV TEST & QA STAGING PROD Prepare an environment where developers can do experiments and test their code (DEV) Have an environment where performance and load tests can be done (TEST/QUALITY ASSURANCE) User acceptance tests should be done on an environment similar to production (STAGING/UAT/SIT) Development Environments

Slide 43

Slide 43 text

Package Repository Messaging Services (emails, messages) Version Control System Make releases frequently (SHORT RELEASES) Deploy your applications with one click (Continuous DEPLOYMENT) Shorten release and boot times of your software (Fast bootup) Raise DevOps that knows software development and IT operations at the same time (DEVOPS) Release Management & Deployments DEV TEST & QA STAGING PROD Continuous Deployment Developer Business Analyst Tester

Slide 44

Slide 44 text

Clouds force you to follow the practices to some extent. Software development on clouds DevOps DevOps DevOps DevOps Version Control System Developer Business Analyst Tester

Slide 45

Slide 45 text

You cannot talk about agility without eXtreme Programming practices. And XP can only be achieved by pashioned programmers. “ ” İsa Göksu Agile Practice Lead

Slide 46

Slide 46 text

Photos used in the slidES http://www.flickr.com/photos/emmanuelecontini/2558211856 http://www.flickr.com/photos/thecampbells/5103649471 http://www.flickr.com/photos/robbiemacphotos/7875854334 http://www.flickr.com/photos/w4nd3rl0st/7174403872 http://s590.photobucket.com/user/asmithj/media/CPC/girl_2_computer_arms_raised2.jpg.html http://www.flickr.com/photos/usnavy/5488581781 http://www.flickr.com/photos/purplemattfish/3489639831 http://www.flickr.com/photos/thomashawk/7215052318 http://www.flickr.com/photos/nuwandalice/4764805046 http://www.flickr.com/photos/lauter-als-der-rest/6898114788 http://www.flickr.com/photos/31288116@N02/4008216690 http://www.flickr.com/photos/a2gemma/1448178195 http://www.flickr.com/photos/nuudls/3281779141

Slide 47

Slide 47 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 The slides were presented on 13th of June, 2013 at Agile Talks which is a set of seminars organized by Agile Turkey few times in a year in Turkey The content of this presentation is originally in Turkish. The author translated into English by purpose.