Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

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

581 views

Published on

Agile Tour Kaunas 2015
http://agileturas.lt/kaunas

Published in: Leadership & Management
  • Be the first to comment

  • Be the first to like this

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

  1. 1. CODE YOUR AGILITYTips for Boosting Technical Agility in Your Organization LEMI ORHAN ERGIN Master Software Craftsman, ACM /lemiorhan /lemiorhan
  2. 2. 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
  3. 3. AGILTYconcept emerges for helping developers to let them build productive processes and high quality software
  4. 4. 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 expect AGILTY
  5. 5. Is technical agility about knowing technologies?
  6. 6. python java android go php groovy webservices jquery lucene grailsnewrelic mongodb couchbase hibernate memcache html5 laravel bootstrap xml django ratpack mysql ajaxoauth seo zend spring perl c++ elasticsearch solr rabbitmq activemq mule json c#hadoop alfresco css apache git svn jruby scala javascript postgres ehcache redis riak bash ios expressjs socketio jms jmx nodejs ruby primefaces hazelcast jsf play pl/sql dart wordpress behat angularjs akka cassandra c cucumber junit erlang closure
  7. 7. Technical agility is about how well you use them
  8. 8. pair programming simple design collaboration culture code 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 models feature freeze collective ownership educate upfront frequent releases unit testing kaizen code coverage continuous builds code standards best practices agile documentation automatic security testing static code analysis refactoring continuous integration testing strategies minimum viable product evolutionary design tdd devops culture iterative development bbs cross functional teams clean code principles continuous deployment fast bootups design patterns 10 minutes builds continuous delivery evergreen build status acceptance testingcode review coderetreat mind-mapping lean startup
  9. 9. TECHNICAL AGILITY Is ALL about development CULTURE
  10. 10. Let’s develop a project with succeeded practices in an agile culture
  11. 11. commit to your manifesto define how you build your software and what you believe
  12. 12. find your foreman be apprentice of a craftsman and master your professionalism
  13. 13. heisatruebeliever heisasoftwarecraftsman heremindsyoutheprinciples hemakessureeverythingdoneright hecheckstestcoverages hereviewsallcodebases helooksforlowqualityoutputs hedetectstechnicalimprovements heproposestrainingtopics hedoesmentorship heconvincespeople herejectsunreasonabledemands hechecksworkswithstandards headvicesforcontinuousdelivery heusesandadvocatesalmprocesses heidentifiesdependencies FORMAN
  14. 14. be proficient with tools tools are your most reliable friends in your daily work
  15. 15. CI Server IDE/Editor Source Code Version System Console Build Tool Code Analysis Tool Vagrant / Docker
  16. 16. feel responsible of your work you are what you build
  17. 17. BE RESPONSIBLE OF design architecture quality testing performance maintenance operations practices OF YOUR WORK
  18. 18. share what you know your knowledge is not valuable if you don’t share with someone
  19. 19. 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
  20. 20. expertise tdd and testing majority of problems occur due to lack of expertise in desing
  21. 21. I am Scared!When I change something, some other features might stop working!
  22. 22. “I spend days for manual testing!”
  23. 23. WE’RE producing Zombie software
  24. 24. SOFTWARES HAVE TO BREATH TO LIVE
  25. 25. 3 RULES OF WRITING A LIVING SOFTWARE
  26. 26. Continuous Refactoring Continuous Testing Evolutionary Design 3 RULES OF WRITING A LIVING SOFTWARE
  27. 27. Continuous Refactoring Continuous Testing Evolutionary Design 3 RULES OF WRITING A LIVING SOFTWARE TDD
  28. 28. I cannot ACHIEVE TDD WHY?
  29. 29. IS HARD SOFTWARE DESIGNING
  30. 30. YOU NEVER RESERVE TIME TO WRITE TESTS you always have time for tests you either spend it for fixing bugs or writing automated tests
  31. 31. THE ROADMAP FOLLOWING YOU ARE NOT
  32. 32. LEARN ESTABLISH PERFORM THE ROADMAP
  33. 33. LEARN ESTABLISH PERFORM THE ROADMAP
  34. 34. Unit testing frameworks Mocking frameworks Automated testing types Designing software Refactoring best practices Clean code principles THE ROADMAP LEARN ESTABLISH PERFORM
  35. 35. 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 ROADMAP LEARN ESTABLISH PERFORM
  36. 36. 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 ROADMAP LEARN ESTABLISH PERFORM
  37. 37. 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 ROADMAP LEARN ESTABLISH PERFORM
  38. 38. organize code retreats practicing is the best way to improve our craft
  39. 39. 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
  40. 40. build new habits improving quality of your software is a daily behavior
  41. 41. checkinothers’codewithyours reviewCIbuildstatus reviewsonarqubereports reviewcommitsgraph reviewbugreports reviewtechnicaldebtinbacklog
  42. 42. define roadmap for craftsmanship it’s not easy to identify what should we do to improve our craft
  43. 43. Apprentice,Youngling,Padawan,JediKnight,JediMaster,JediCouncil,GrandMaster,Yoda from apprentice to journeyman
  44. 44. never release an unreviewed code to production it is so easy to fall into traps if you rely on your eyes only
  45. 45. ENJOYremember whatever you do do not forget to
  46. 46. Lemİ orhan ergİn agile software craftsman /lemiorhan https://www.linkedin.com/in/lemiorhan @lemiorhan https://twitter.com/lemiorhan /lemiorhan http://www.slideshare.net/lemiorhan lemiorhanergin.com Official site having personal information www.acm-software.com

×