• Save

Loading…

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

Like this presentation? Why not share!

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
1,360
On Slideshare
755
From Embeds
605
Number of Embeds
5

Actions

Shares
Downloads
0
Comments
0
Likes
1

Embeds 605

http://agileisrael2013.com 300
http://www.agilesparks.com 169
http://agileisrael2014.com 130
http://agilesparks.in 5
http://www.agilesparks.co.il 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Copyright © 2012 3P Vantage, Inc.Is Your Agile Team Busy ProducingLegacy Code?Gil BrozaThe 7 Elements of Technical AgilityTheHumanSideOfAgile.com3PVantage.comOnTheWayToAgile.com
  • 2. 2 Copyright © 2012 3P Vantage, Inc.The Four Dimensions of AgilityTechnical Agility:Executing value-adding development mechanics with agilityOur focus nowPlanning /ProcessBusiness Leadership / PeopleTechnical
  • 3. 3 Copyright © 2012 3P Vantage, Inc.All Dimensions Are Vital “Early and continuous delivery of working software”– This business promise must be backed by planning andtechnical mechanisms “Build projects around motivated individuals. Give themthe environment and support they need, and trust themto get the job done.”– This leadership premise can’t work when the technicalenvironment hurts or process gets scary (e.g. the demo)The effects of insufficient technical Agility areonly felt after the first few months of excitement
  • 4. 4 Copyright © 2012 3P Vantage, Inc.6 “Tells” of a Team Producing Legacy Code Demo-driven development “We don’t have time to clean the code or its design” Surprisingly high estimates for easy-looking features Coding, testing, fixing anything? “It’s not that simple.” “In an ideal world, the estimate would be twice as muchto do this story right.” The Definition of Done doesn’t cover developers
  • 5. 5 Copyright © 2012 3P Vantage, Inc.Attitudes Are Telling, TooThings take long,and that’s just the way it isIf it ain’t broken,don’t fix it!A valuable solution isa large solutionEveryone shouldfocus on completingtheir own part
  • 6. 6 Copyright © 2012 3P Vantage, Inc.The Long-Term Costs Progress slows down (Tracker) Variability in task duration becomes high (MarketWire) Motivation and engagement go down (Randy the architect) Over-reliance on experts/silos is risky and expensive Harder to maintain teamwork and collaborationYou cannot remain a leader.Your ability to innovate and respond will fall behind.
  • 7. 7 Copyright © 2012 3P Vantage, Inc.Technical Agility Falls Through the CracksIf you use Scrum, all you’re told is “self-organization andimprovement through feedback, data, and discovery”Who’s likely to drive technical Agility? The delivery team?– not usually Team leader or technical lead?– they usually need greater clout Development managers?– more likely– need support as far up as CTO
  • 8. 8 Copyright © 2012 3P Vantage, Inc.The 7 Elements ofTechnical Agility
  • 9. 9 Copyright © 2012 3P Vantage, Inc.1. Evolutionary DesignHave sizable work?1. Understand its purpose2. Lay it out (e.g. story mapping, wireframes)3. Identify an increment of behaviour and structure thatwould give value and useful information/feedback4. Build it, get feedback5. Adjust your plans based on that feedback and yourproject’s constraint tradeoff (time/scope/quality/cost)6. Repeat 3-5As opposed to dividing work by layer, component, expert
  • 10. 10 Copyright © 2012 3P Vantage, Inc.2: Guest Searches For ItemsOptional category. Search fortext in title, description andlocation. Results in scrollabletable. Assume >100K listings.1: Guest Posts Listing6 text fields + categoryfrom preconfigured list.Up to 4 images.3: Guest Opens ListingShow all fields as uneditabletext. Render email so it’sunspammable. Fit wideimages to 500px.Release 1: “Non-Registered Buy & Sell”STUFFPostSearchBasic homepageVIEW LISTINGBike for sale, as new!TitleBMX bike, kids 8-12DescriptionCloseCategory BicyclesLocation Yonge & SheppardPrice $35Phone (Withheld)Email joe@home.comSEARCH LISTINGCategoryText in listingSearchCloseTitle category price locTitle category price locTitle category price locTitle category price locTitle category price locCREATE LISTINGTitleDescriptionPricePhoneEmailLocationCategoryRemove Image Add ImageSubmit CancelAfter one imagehas been added105 5
  • 11. 11 Copyright © 2012 3P Vantage, Inc.SEARCH LISTINGCategoryText in listingSearchCloseTitle category price locTitle category price locTitle category price locTitle category price locTitle category price loc2.1: Guest Opens All-ListingViewShow all listings in scrollable table.1.1: Guest Posts Flat ListingJust the 6 text fields. Store in afile.Iteration #1: Flat Post & SearchSTUFFPostSearchBasic homepage3 2CREATE LISTINGTitleDescriptionPricePhoneEmailLocationCategoryRemove Image Add ImageSubmit CancelAfter one imagehas been added
  • 12. 12 Copyright © 2012 3P Vantage, Inc.2.2: Guest Searches For Text inListingsText box value used to search title,description and locationIteration #2: Flat Post-Search-OpenSTUFFPostSearchBasic homepageSEARCH LISTINGCategoryText in listingSearchCloseTitle category price locTitle category price locTitle category price locTitle category price locTitle category price loc323.1: Guest Opens ListingShow all text fields (no images orcategories yet); make email non-spammable.VIEW LISTINGBike for sale, as new!TitleBMX bike, kids 8-12DescriptionCloseCategory BicyclesLocation Yonge & SheppardPrice $35Phone (Withheld)Email joe@home.com
  • 13. 13 Copyright © 2012 3P Vantage, Inc.2.3: Guest Searches For Itemsusing CategoryNarrow down the text search to thechosen category (default: none).Iteration #3: Post With Images & CategoriesSTUFFPostSearchBasic homepageSEARCH LISTINGCategoryText in listingSearchCloseTitle category price locTitle category price locTitle category price locTitle category price locTitle category price loc11.2: Guest Posts CategorizedListing with ImagesAdd category dropdown,populated with fixed options.Up to 4 images. User can removeuploaded image. Save all imagesonly once listing is submitted.CREATE LISTINGTitleDescriptionPricePhoneEmailLocationCategoryRemove Image Add ImageSubmit CancelAfter one imagehas been added4
  • 14. 14 Copyright © 2012 3P Vantage, Inc.2.4: Guest Searches Among>100K ListingsRefactor to scalable DB. Optimizefor search. Post and Open need tobe reasonably quick.Iteration #4: Close Loop With Scalable DB243.2: Guest Opens CategorizedListing with ImagesShow images one below the other.Scale down wide images to max500 width. Also show category.VIEW LISTINGBike for sale!! As new!!TitleBMX bike for kids 8-12DescriptionCloseCategory BicyclesLocation Yonge & SheppardPrice $35Phone (Withheld)Email joe@home.com
  • 15. 15 Copyright © 2012 3P Vantage, Inc.2. Rapid Feedback “How does it behave?” “What have we broken?” “What works for sure?” “How easy is it to use?”“Stable knowable code that has built-in functional verification allows youto be confident that your change is still functionally correct and onlyaffected the part of the system you intended… less regressions, lesshotfixes, less new bugs... more features.”
  • 16. 16 Copyright © 2012 3P Vantage, Inc.3. Small, Safe Steps Break everything down smaller than you think You can refactor everything using safe behaviour-preserving transformations“Learning about safe and testable refactoring was the most interesting partfor me. I can really see myself doing that in the future, as changing an APIor some logic is always the riskiest process and can lead to the most bugs.”
  • 17. 17 Copyright © 2012 3P Vantage, Inc.Especially Good for EvolutionAre you looking at evolution rather than revolution?With evolution, keep the architecture, construction, use,behaviour and flow in lockstep. Small steps help!
  • 18. 18 Copyright © 2012 3P Vantage, Inc.4. Simplicity
  • 19. 19 Copyright © 2012 3P Vantage, Inc.Understand the ProblemOn both the delivery and definitionsides, get to the heart of theproblem you’re solving – and finda simple, sufficient solution.“We’ve started pairing often on areas withinteresting behaviours, and have noticed muchmore diverse tests emerging than if a singledeveloper had tackled the task.”
  • 20. 20 Copyright © 2012 3P Vantage, Inc.5. Clean Code The principles still hold: high cohesion/loose coupling,good OOD/OOP, reuse The standards have changed– Team progress, and ability to respond, are key– If a team is to quickly upgrade/change/fix code, programmersmust be able to read and understand it quickly“The focus on identifying and removing code smells is something we shouldbe training all of our developers on.”
  • 21. 21 Copyright © 2012 3P Vantage, Inc.Design Anti-Patternsfor (Employee employee : payroll) {// Consider only full-time employeesif (!employee.isTemp() && !employee.isPartTime())public class UserInfo…private String password;public boolean isPasswordValid()…public String scramblePassword()…switch (vehicle.getType()) {case SEDAN:return new Money(0);case HYBRID:return new Money(-100); …Deodorant CommentPrimitive ObsessionSwitch Statement
  • 22. 22 Copyright © 2012 3P Vantage, Inc.public boolean checkSSNForDupes() {//build cmd to go to DBEnvelope env = new Envelope();CmdStatus cmdStatus = new CmdStatus();PublicServiceAgent agt = session_.getAWFormsServiceAgent();AWCmdCheckSSN cmd = new AWCmdCheckSSN();//set stuff in cmdcmd.iServerID_ = uboEmployee_.getServerID();cmd.iPersonID_ = uboEmployee_.getPersonID();cmd.iMarketCountryID_ = iMarketCountryID_;cmd.sSSN_ = sSSN_;cmd.udsaPossibleDupe_ = new UDSPossibleDupe[0];//execute cmdenv.insert(cmd);agt.executeCmd(env, cmdStatus);if (cmdStatus.getCode().equals(Constant.CMDSUCCESS)) {return true;}else {return false;}}Low Tolerance for Method Length
  • 23. 23 Copyright © 2012 3P Vantage, Inc.6. Ownership vs. RentalTreat it as not asyour own a rental!
  • 24. 24 Copyright © 2012 3P Vantage, Inc.Stuff You Would Do With a RentalCar CodeEat or drink in it Introduce code smells and leave them thereDrive on back roads Build unsound codeAccidentally break a handle orknob, hope nobody finds outNotice that you introduced a serious bug,and not log itReport faults and minornuisances to the agencyLeave TODO comments in the codeRental property depreciates faster than owned property.Ownership is a mind-set, not a matter of process.How soon will you have to pay for today’s decisions?
  • 25. 25 Copyright © 2012 3P Vantage, Inc.7. Shared Responsibility Shared ownership (no more @author) Friends don’t let friends code alone Boy Scout rule Specializing generalists Break down the silos– Built because Urgent > Important“We worked together in refactoring one of the existing legacy classes.This was a big piece of complex code that did not have any unit test. Atthe end of the exercise, we were able to simplify the code dramaticallyand made the code easily testable.”
  • 26. 26 Copyright © 2012 3P Vantage, Inc.Getting ThereTechnology, skills, and process won’t suffice. You mustget started… and the deck is stacked against you: Inertia (there’s always something more urgent) Perceived barriers– Distributed / Large / C++ / Deep in Legacy Code / Siloed Whose problem is it, anyway? Developers feel powerless The costs are long-term and hard to see
  • 27. 27 Copyright © 2012 3P Vantage, Inc.But Once You Have It… Developers programming without fear Team development: more realistic, fewer surprises True partnership with the business Boost motivation through pride and ownership
  • 28. 28 Copyright © 2012 3P Vantage, Inc.Tomorrow: The Coding Part of ItMay 8-9, I’ll lead the XP/Agile Engineering workshop: Effective unit testing Safe refactoring (including refactoring of large messes) Simple design Clean codeTwo days of hands-on exercises and guided discovery.Three seats remain. Will I see you there?