Sunday, October 4, 2015

Code Your Agility - Tips for Boosting Technical Agility in Your Organization

Code Your Agility - Tips for Boosting Technical Agility in Your Organization



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

Code Your Agility - Tips for Boosting Technical Agility in Your Organization

  1. 1. e, :», _.. — 3 ; , CODE YOUR AGILITY iips for Boosfing Technical Agility in Your Organization LEMI ORHAN ERGIN “€= ."/ ‘7;§. ?i’, Z:? ‘§“§’. :"‘m‘?2;h’? ,‘§“‘
  2. 2. 14!»- ‘xx’ coma vou'n AGILITY lips for Bccsfing Technical Agility in Your Organization LEMI ORHAN ERGIN MES’/ ‘7;i. ?i’, Z2;°‘6’§’. :"; .‘?2;h’? ,i“‘
  3. 3. Muster Software Craftsman, ACM I13/lemiorhan D/ lemiorhon Developing software since 2001 Community Lead of Agile Turkey Founder of Software craftsmanship Turkey Developer, Architect, Trainer, Consultant, Coach, Leader Sony & eBay Alumni Managing Partner at ACM H / lemiorhan G) lemiorhanergin. com I @lemiorhan
  4. 4. AGILTY concept emerges for helping people to let them build productive processes and high quality software
  5. 5. AGILTY is more than you expect CUSTOMER SATISFAC EMPLOYEE MOTIVAT TEAM COLLABORATION TECHNICAL AOILTY PRODUCT MANAGEMENT BUSINESS INVOLVEMENT PROJECT MANAGEMENT PROCESS EFFICIENCY FEEDBACK MECHANISMS DECISION MAKING SERVANT LEADERSHIP CONTINUOUS IMPROVEMENT SUFFICIENT DOCUMENTATION TALENT ACOUISITION AUTOMATED FLOWS STATUS TRANSPARENCY
  6. 6. I Is technical agility about? knowing technologies .
  7. 7. activemq Perl php mule mgsql socketio json riak nodejs mongodb bash 9"°°"9 ios 9“ may oauth ajax apache stala mm E android pllsql newrelic Elrails cucumber ratpack junit webservices halekast _ mane _ sea jmx ehcache memcathe ]t| ll¢l'[. | elasticsearch hadoop bootstrap Pfimefates flfuchbase . C# II” htmls , java hibernate Wt l| '“b! -I - F alfresco I3|'3V9I Ia Imq . angularjs L 55 akka bf’: "9"" Python expressjs e a . I3V35¢"IPt cassandra rub“ 9° solr jms as t|0S| I|'¢ wordpress ‘ml svn s rin postgres django P 9 erlang
  8. 8. Technical agility is about how well you use them
  9. 9. collaboration culture educate upliront continuous deployment minimum viable product Pest P"a¢t"°5 cross functional teams agile documentation design patterns collective ownership fast beetups static code anamsis behavior driven development simple design evergreen build status short upfront design mud ‘°mPatIbit9 fre uent releases mind-mapping automatic securitg esting central package repositorg . code standards enterprise environments Versm" control systems . devops culture “"9 5"3P5I'°t5 b h‘ d I air ro rammin ram mg m e S PtestIInggtrategiegs lea" starfup in minutes builds 50"" P"I“‘IPI°5 am t°‘t"'9 continuous builds evolutionarg design coderetreat ‘t t t’ . bbs continuous integratitIH“ Zdmg r°fa‘t°""9 code review kaizen
  10. 10. TIEI[; I- Billie Fm: 5. J ‘TI '9 9} r‘ _‘ R I
  11. 11. LET'S DEVELOP A PROJECT WITH SUCCEEDED PRACTICES IN AN ! ?‘. GII. E CULTURE
  12. 12. j j define how you build your software and what you believe COI'I'II'| ‘|IT TO YOUR I'| 'IaI'IIFeSTO
  13. 13. As competent motivated oisorpiineo. passiorate and innovative software development professionals If‘ Sony we aim to ouiio fully-functional robust stable flexible extensible wellcrafted and nignouaiity sortware in reasonable deadlines Through this work we use staie or the art practices and technologies and focus on ine following values 1 The code we develop is welldesigred readable understandable clean weIl—tested and always ready to change 2 The analysis we prepare is understandable fuIly—covered detailed but clean and ]ust—enough 3 The people continuously learn. improve skills. follow best practices. share tneir knowledge with otners and proactively inspect & adapt We know that fullilling these values are not easy But we will achieve oy following the pnnciples oelow - Teams own the code. not individuals [Collective Ownership] - Use companyrteam standards for coding and analysis [Stardards] - Define your team‘s definition of dune tor tasks stories iterations and releases [Definition of Bone] - Do not release code unless it is reviewed or pair programmed [Release Procedure] - Pair program to build better to learn better to coach better [Pair Frogramming] - Review others code not only checking for possible bugs or issues. but also for learning how the software works [Code Review] . Reproduce bugs with automated tests before fixing them [Bug Fix Procedure] - Testrcode coverage is monitored treouently and aimed to be increased constantly [Test Coverage] - Never develop OS IDE. tool. environment. server or developer specific code [Build as Open Source] - Follow best practices even if that makes us build slower than usual [Best Practices] - Test in many aspects such as unit integration. functional pertormance regression acceptance [Mu| ti Dimension Testing] - Tests are your code Do not complete your work unless all unit tests are wnlten [Unit Testing] - Design build and verify code by using TDD and EDD Writing testable code is the main prerequisite for writing tests ['l'DDI BDD] - Follow clean code principles Focus on writing readable production and test code [Clean Code Principles] - Learn development tools such as your ecitorsioiz console ouiic tool. code analyzer. Vagrant and sit witti advanced reatures [Craftsmanship] - Follow best practices ll'l release and version management [Release 5 Version Management] - Monitor the metrics of your code with code analysis lools [Code Analysis] - Automate tests as much as possible (always search ways to automate as much as possible) | Automatization] - Keep track of quality of the applications with the help of Continuous integration Always keep the builds qreen [Evergreen Builds] - Shorten the required eftoros and times for application bootups deployments builds manual tests and bug-fix periods [Increase Agility] - Practice mindiully and use code katas. coding exercises and quizes to improve your coding skills [Practice to Improve] - Don't be religiouslconservative about any technology We can use any technology if it perfectly fits our needs [Openmindness] - Pay technical debt or your code as early as possible Keep the list of oeois to work on in tne future rreciinicai Debt] . auiio reusable components expose functionalitiies as services and iet other platforms and applications use it [Reusability 5. Extensibility] - Have frequent short releases to keep the risk of each release minimum and to respond to customer fast [Short Releases] - Design the architecture of your applications cloud compatible [Cloud Compatib ity] - Excessively use branches and flow models to develop features. implement fixes and experiment for the next releases [Development Flow Models] - Prepare tust-enough out detailed and well-prepared documentatlons Prefer diagrams and tables instead of pharagraphs [Agile Documentation] - Keep docurnentatior-5 up-to-date. and delete or archive the irrelevant ones [Efficient Documentation] - Review the documents that are prepared for you and provide feedback to make it better [Document Review] - At the time you initially write. your code sucks’ Always refactor the old code and old design suggest technical improvements to the team [Reiactoring] - Share your knowledge via media or trainings to learn by teaching [Knowledge Sharing] . if you have any impediments that slows you down never wait more that 1 day Ask for help [Collaboration] - As teams proaclivety share your knowledge take responsibilities of your actions and manage your team and your platforms [Empowered Teams]
  14. 14. @ every company should have a mentor leader for the profession FII'ID YOUR Foneman
  15. 15. ‘I l ‘i l : lIl: lilltlll 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 defines standards he advices for continuous delivery he uses and advocates agile processes he identifies dependencies
  16. 16. ® tools are your most reliable friends in your daily work Be PROFICIEIIT WITH TOOLS
  17. 17. Console ~/ ; Code Ana| ysisToo| ‘ ‘Sou Code Versio ‘ stem CI Server l Vagrant/ Docker . ... ... ... ... ... ... ... ... ... -"F; ii ® I’. ‘. «
  18. 18. ® you are what you build FEEL RESPOIISIBLE OF YOUR WORK 3%
  19. 19. ’,1 l’ 1:? . RESPONSlBl. E 0F r‘ . §.'. ".. -- -.1 . ' . "“ l. l.‘_. l.[J "‘}: .. JJ . "$1: _ . ‘ , : ll . . .2 f“ _'¢ " / ’ 3 ‘air 5' ‘gnu (4“4-I. ‘ ll, i.. l,lJ‘u. .. , ‘- ""3.. .-. .""’ KI. ‘ - f3ll¢~. lll. a3 « ' ‘ ‘rr['«: - . Ir‘ ", '_-~""*". "'l*l T V. _I''' ' ~ : r'l= .r»3'l: r»~= ~:. ;l - _e o A - ,
  20. 20. ® your knowledge is not valuable if you don’t share with someone SHBRE WHBT YOU I(I'| OW 9®@
  21. 21. BROWN BAG SESSIONS 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 that BBS might be the most effective motivator for developers
  22. 22. 9 at majority of problems occur due to lack of expertise in desing EXPERTISE TDD @®@®
  23. 23. when I change something, some other features might stop l_‘L'0|'I(II‘Ig!
  24. 24. ”: =:, ..‘ I“ ‘ 2*? “-= E A’ . _. " “| SPEND DAYS FOR_MNUAL TESTING! ” oi‘?
  25. 25. WE'RE PRODUCING ZOMBIE SUFTIIIIARE
  26. 26. .4‘ , ,Y*~ , j&a-. . .4-oi-tn SUFTWARES HAVE 0 ‘, ‘-i; T:; S “W 4 o 9" ''‘*‘-«w3u-r‘‘'' ’ I J ‘ ,
  27. 27. 3 RULES OF WRITING A LIVING SOFTWARE
  28. 28. 3 RULES OF WRITING A LIVING SOFTWARE Continuous Refactoring Continuous Testing Evolutionary Design 3 :3» ‘$819 @712 G5» 3
  29. 29. 3 RULES OF WRITING A LIVING SOFTWARE Continuous R toring Continuo esting Evolutionarg Design 3 xi? » *é8l°/ Qty My 3
  30. 30. I CANNOT ACHIEVE TDD WHY?
  31. 31. DESIGNING SOFTWARE IS HARD y/ H V‘ ‘, /o‘_o“ 9‘ / <ii/ (_8I°/ II7Ij /
  32. 32. YOU NEVER RESERVE TIME TO WRITE TESTS you always have time for tests you either spend it For fixing bugs or writing automate tes s 3 xii 680 Qty Q39 3
  33. 33. YOU ARE NOT FOLLOWING THE ROADMAP you start writing code without doing being re by doing prerequis‘ 3 Q3 Q8?» Qty xi‘? 3
  34. 34. THE ROADMAP LEARN ESTABLISH PERFORM /7f‘ / / ’}, txtm/ I ‘‘IfjI/ l /
  35. 35. THE ROADMAP LEARN ESTABLISH PERFORM 3 “E3 (83 Q9 Q3 3
  36. 36. »? .<e: >Qtyti= 'y» III 13 D D E] El unit testing frameworks Mocking frameworks Automated testing types Designing software Befactoring best practices clean code principles
  37. 37. THE ROADMAP LEARN ESTABLISH PERFORM 'Ci3C8l3Qt3Q= i33 IZIIZIEIIZI Unit testing frameworks Mocking frantewcrtvzs Automated testing types fiesigning ssitware Etetactoréng best‘ practices Clean code primségsies continuous Integration sewer Source code versioning system Notification mechanism code coverage monitoring
  38. 38. THE ROADMAP ‘[3 Unit testing frameworks F7 Mocking frameworks I-. .) E: Automated testing types ; Designing software Befactoring best practices if Clean code principles 1]} Continuous Integration server 5,‘; Source code versioning system L} Notification mechanism 1‘; code coverage monitoring Practlce TDD vla katas CI D Acceptance testing via TDD P E R R M D Develop vla TDD I3 '”-“13C<’i3Qt3Q= i33
  39. 39. *§~‘8!3QtyQ= iy* S E. ’ U I El in El in in in I E” unit testing frameworks Mocking frameworks Automated testing types Designing software ltefactoring best practices clean code principles continuous Integration server Source code versioning system llotitication mechanism code coverage monitoring Practice TDD via katas Develop via TDD Acceptance testing via TDD Verity by behaviours via BDD
  40. 40. (3 practicing is the best way to improve our craft ORGEIIIZE CODE RETREETS EOOO
  41. 41. 35 people attended the day in Istanbul 5°°“““e“iS November is 2014 I 137 cities 20timezones Global Day of 2000+ developers 31 hours of coding °°de'et'eat-°t9 Coderetreat Community Network > Q-‘iy Qty Q-t3 3 @
  42. 42. it) improving quality of your software is a daily behavior BUILD I'IEW HBBITS EQDOOO
  43. 43. checkln others’ code with yours review CI build status review sonarqube reports review commits graph j review bug reports review technical debt in backlog *3 ‘$3 /3 Q3
  44. 44. it’s not easy to identify what should we do to improve our craft oesine noabmae Fob CRaFTSmafiSHIP
  45. 45. 2% Apprlrlttcn Ynungllng Pd-mn l E M , I2’. 'l£l E . .., , F, ., *‘, '.’ A. lllM_l_'. .|A Apprentice, Youngling, Padawan, Jedi Knight, Jedi Master, Jedi Council, Grand Master, Yoda from apprentice to journeyman Cve. -ma biuq . ... , . .. ... .a. .. . .n. ... . . ..: . . ..i. u.. .m. ... .i . ... . . ... ... .mi-r-y s. ... . i. ... .w. ... e aw. .. . ... ... .. D-mun mu 5 new man -an». - hyu-mi: um I am: min - mo macmv-v-in no-nu nmu mu m- new Dell: am. .. . ... s.. w.. m.. .. 5.. .» 3.. ... .“ Hauku ‘sh. .. . ... s.. ... ... . program manlgers w. .. VI . n nevi" . >-um. ‘s. ... . vmnlvuwu x. ..-. .a . . . 30- . ... .s menu. ..» mi. ma: .. ..p. .. w. .. [M some men. .. '5». .. . ..u. ..u. ». lnamna . . . an» . ... .. yu. ... ... .. mm mm: .= ... p-as were on 3.. ... . we was tsr-ave mm. .. Ieu-we . . . 3.. . ms Vlsenhiicvi with woe gametes . ... m.a . ... .. ... ... ... ... ... ... js. ... ... .,. .». . . ... ... ... » . ... ... ... ... .,. s.. ... .. M . ... ... ... ... .,. .,. ,.. .,. w.. ... .. j. ... ... ... .,. ... .. . m., ... ... .. . ... ... ... ... ... ... ..c. wnia. - ooolevvnou me. ‘. =.. ... . may 9.. .. .9 shun M. findings .9. . ... ulkl mum am. .. an . .. ... ..». ... ,. . =.. ... . . . my . ... . Hg . . . ... . . . 5.. vsw . ... ... ... . Add . ... .. ... «.. ... .. . W. .. . ... ... a.. . pmfi . A. .. moo . ... ... .. . s. ... ... n.. .. . ... s. ... . . ... . wlh . .. program . .. 9.. . M. .. 5 i. ... ... .. . ... ... ... .. . .i. ... ... ... .. ,.. ... ... ... ..~y-u. ... . "om. .. . . . ... ... ... .. . ... .. ... .i mndi . . . ... ... .. ,.. ... ... ... ... .. ... i.. ... .. want D’? 5.. m. ... ... .. ... ... ..¢. .. .: llaw . ... ... i. 's. ... . . ... ..y. ... ».. .. ... ... .. . 3.. . . ... .. . n.. ... ... .« um. . we. ... ... . WBWIDON sn. .. yo. .. . .,. ... ... . . . you’ New n. ... .. ma. .. cm W. .. i. ... . i. ».. ... ... ., . .c "so. .. . . u. .. 5 . ».. i.. ... ... 59.. ... . 2.. . . ... mg land: 's. ... . mm. .. pail: .. ... . . ... ... .. may . . , ... . may 5.. . Dsm W. ie. .. Ana IM s. ... ... ... .. ,. ,.. .. ... a.. Win Expeviemz 5- led! .i. .g. ..s. .3 Ipptiulinvu IHEI you r. -m. i.. {.¢ gm '5». .. y. u.zxp¢«. u.w . . yaw we 7 V _a-. - -pa». .. DVI i. a.. ... .i nuni-cur. -mum-4 I '5». .. i. ... . mi. ..» wow-M ml sw- A. ... .. . .. m.. . . ... ... ..m. 's. ... . your . ... e.. ..= . . . y. .. mag use . .. 5M5 . .a ms . ..i. ... .. . . . ... .. . . . . ... ... .. cm: .. ... a M . ... M. .. . demo Lisa , ... . IDE . ... ... ... menu lornmwnnk. 's. ... . y. ... ... .p. ..m. ... ..4 . ..5.. ... ... ... ... . . ... ... ... .. . . , ... .. btoq . i.¢i n. .. 5 . .s. ..a. .. ... m.. .m . . .3. 's. ... . . ... ..y. ... . Ieuvmd mo. M. .. . .es. ... ... . i. .. «<7. wm. s. ... ..o. a. Irulysis wsulls uiyuw W. .. . ... . . mp. ... ... .o~ . .-. ... ... ... ... p. ... .s 's. ... . wvm y. ..». i. ... ... .. .o~ WW5 vreserlnlon Ilnmr Wnrx on u. .. ..g. ... ... .. ... ... .. 's. ... . . ... .., ... .». leaned . . . so. .. ... . . m.. ... ..>« W. ixxle nmplas Pmpada . . . ... .. . .~. ... ... .. ... predate . i . ... sum. M. ... ... . i. .,. ... ... ... 13.. .. . ... . . ... m.. ... .. 9.. .». pmpasau . . , ... tum Nlve mw pumBorIShd<a4:Miw4siI1 ‘sh. .. . ... . mm . .. program . .. 9.. . i. .. Vl i. .. . ... .. ... , . ... . . . . ... . WIHI 's. ... . W. .. .p. ,.. ... . . . , ... . mag o. ... m .0 man . ... . 's. ... .. y. .. . ... ... ... ... .. . . , ... .- mg ' am. .. m w Iochr-uloqias . =.. ... ... . . .. ... .. . ... ... ., i. .. aw. .. .. .. . ... .. ens lav «Och Comvma 3 cwrveva (ourvu ‘m. m. i. .. . ... ... .a aoi . ».. i.= ... . liom . ... swan Hnv . .». .n. ... ... . at your i. ... -. on . my hum liv . mm. .. 33.. ... . um um with IM . o.. ... ..i. .. mu. .. IN: .u. ..g. a. man an i. .. unmm4I. | Jodi mm 5 ioumlui a. §ou7.. .m IN in 5.. ... . Min yui. VD um-. ..a nl am’. .. nu ameT1nlaK»orira mu F. .. 5 . ... ... ... ..i been . ... .. mg i. .. ’s. ... . mi you W . ... ... a . . Jn- min; .. ... ... ... ... .. luv .1.. . council 5.. . vsw onrlfiuln "Am . ... . . ... ... u.. . .5 your . ... ... .:. .. W. .. . m.. ... ... M. .. w. .. sewn: ‘s. ... . , m.. .,. ... ... .. ,, ... wag a. . we murrbur l i. ... .a. ..i. ... c.. ... ... mm. ..“ s. ... . . ... . MIR . .. M. .. m. ... ,.. . 3. . .. :.. . member .2 . .. ..: ... a. . ..-. .m. -. '. :.. ... =.. ... . m» . ..c. ... x coma-ne 2n ma: -«am "snare yam examme m yaw we . ... ,.. ,.. ... ... ... .. . ... .a. ... . . ... ... ... ... ... ... ... ... ... ... ... .m. js. ... ... ... ... ... .,. ,.. ... m.. .. ... .,. ... . . ... .., ... .,. .. js. ... ... . . ... ... .W. ... .., ... i. .. . ... ... ... . pa . m. ... ... . . . y. .. . ... m IM 2.: Views let 5 m. arm _s. ... . yml . .,. ... ... .. . . , ... - bag GM‘ Be arm. .. ... .. . .,. .. .s. ... ... ... or audio: _s. ... . . ... s m. .. . me. .. ...9.. w. .. vi s. ... i.. ... ... ... i.. ... .. i. ... .g. . . ... ... ... ... ... .s _s. ... . . ... .., ... ».. e. ... .a . . 3n~ M. .. . ... ... ... e.. W man . ... .». .. u. .. . ..x. ._ M an xuvnmaspnzxur w - mi w~v-mm _s~= -n inn win on wosmvi wzm won: an m. ... .,. .». .. ¢.. ... ... s. ... .. . «.. ... w. fumed . . . sac mm: .. ... ... ... m ». . am samples Mm sow wrilsnr a Sludimemwtsiru s. ..-. .. .i. . MIR . ... wi>9'I'“ was-m Pmoou .9. . .m. ... .m. ... ... ... ... . . . mo mac: M. .. max. .. on ‘w. .. . ... -. . ... ... . DNNJI . ... .. ... mam . . pm. .. nnchloq Be . mm. .. . . ..om. .m. nu. lust anllnnoo 5.. ... . . ... . .4. . .. program . ... .9«
  46. 46. put code review in the middle of your practice map I'| EVER RELEBSE an unnevieweo cone TO PRODUCTIOII EOOOOOE
  47. 47. REMEMBER WHATEVER YOU DG E D NOT FORGET TO ; =5 .1 ‘.5 : v“'-. I ,1; , - : i RTE-. . V
  48. 48. REMEMBER WHATEVER VUU DU E D NUT FORGET TO LEMi ORHAN ERBiN AGILE SOFTWARE CRAFISMAN WWW. aaaaaaaaaa FE. CO m
  49. 49. Images made by Gratisography. com, Ryan McGuire http: //www. gratisography. com CC Zero http: //ereatlvecommons. org/ publIcdomain/ zero/1.0 Icons made by F| atIcon http: //www. f1aticon. com/ authors/ freepik cc av 3.0 hnp: //crealivecnmmorIs. org/ licenses/ by/3.0 Refeia, P2256665 https: //www. flickr. c0m/ photos/ rfa/3311158996 CC BV 2.0 Imps: //creativecammons. or9/licenses/ by/2.0 CREDITS

No comments:

Post a Comment