Tools for Technical Agility


Published on

A presentation from AgilePalooza Twin Cities: Kurt Christensen has been programming professionally since 1995, working in a variety of different programming languages and technology platforms. Since 2003, Kurt has also worked with DevJam as an agile coach and teacher, helping teams both large and small in a variety of industries, ranging from large multinational corporations to tiny start-up companies.

  • Be the first to comment

No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Tools for Technical Agility

  1. 1. © 2013 DevJam - All rights reserved.Tools for Technical Agility
  2. 2. © 2010 DevJam - All rights reserved.Who is this guy?What is he talking about?Why do I care?
  3. 3. © 2010 DevJam - All rights reserved.Kurt ChristensenI actually write code!( development coachfor small teams, big corporations,and everything in betweenAvailable for purchase at:kurt.j.christensen@gmail.comTwitter: @projectileboy
  4. 4. The Agenda:Survey of toolsand technologiesto help you achievetechnical agility(and why you care)
  5. 5. The Agile Roadmap!
  6. 6. The Agile Roadmap?
  7. 7. © 2010 DevJam - All rights reserved.“In the South Seas there is a cargo cult of people. Duringthe war they saw airplanes land with lots of goodmaterials, and they want the same thing to happen now.So they‘ve arranged to imitate things like runways, to putfires along the sides of the runways, to make a woodenhut for a man to sit in, with two wooden pieces on hishead like headphones and bars of bamboo sticking outlike antennas - he’s the controller - and they wait for theairplanes to land. They‘re doing everything right. Theform is perfect. It looks exactly the way it looked before.But it doesn’t work.”- Richard Feynman, 1974 Caltech Commencement Address
  8. 8. © 2010 DevJam - All rights reserved.Agile – Engineering = “Cargo Cult” AgileIf we can’t build, test and deploy(and learn from what we’ve done)then process won’t save us!
  9. 9. © 2010 DevJam - All rights reserved.ExerciseTwo minutesIntroduce yourself to someone sitting near youShare one thing you absolutely know to be trueabout writing code, or testing code,or deploying code (and why)
  10. 10. © 2010 DevJam - All rights reserved.Limited life experience+Overgeneralization=Advice- Paul Buchheit, creator of GMail
  11. 11. © 2010 DevJam - All rights reserved.Imagine it’s four years fromnow, and you have to make achange to a system you builtfour years ago…
  12. 12. …would you want this?(with XML configuration files at every step!)
  13. 13. • Easy to understand• Easy to change (add/edit/remove)• Automated tests• Automated deployments• Environments in which to work and test…and so on. In a nutshell: simplicityVery few parts, very simple partsWhat would you want?
  14. 14. © 2013 DevJam - All rights reserved.“My whole life was basically trying tooptimize things…every time you save partsyou save on complexity and reliability, theamount of time it takes to understandsomething. And how good you can build itwithout errors and bugs and flaws.”- Steve Wozniak
  15. 15. © 2013 DevJam - All rights reserved.Typical Enterprise Tech Stack• HTML / CSS / Javascript• Java (Java) or .NET (C#)• Multiple, heavyweight frameworks• Relational database– Oracle, SQL Server, etc.• Enterprise service bus• Dedicated data center– In-house or managed
  16. 16. © 2013 DevJam - All rights reserved.Agile Enterprise Tech Stack• Responsive UI• Dynamic languages on hosted platforms• Small, simple frameworks• Document databases• Open APIs and third-party services• Cloud-based virtual servers
  17. 17. © 2010 DevJam - All rights reserved.So is this just aboutbright shiny objects??No.
  18. 18. The Technical Agility Roadmap…we’ll start with the principlesunderlying Extreme Programming:CommunicationSimplicityFeedbackCourageRespect
  19. 19. The Technical Agility Roadmap• Communication– Code (language), tests, tools, systems• Simplicity– Habitability: small, replaceable, easy-to-understand• Feedback– Metrics (complexity, performance, etc.), logging• Courage– Practice, and a supporting environment• Respect– Respect for customers, respect for executive sponsors, respect forsupport and ops, etc.
  20. 20. © 2013 DevJam - All rights reserved.Technology Stack• Java (Java, Groovy, Clojure, Scala, etc.)• .NET (C#, VB.NET, F#, etc.)• Rails (Ruby)…and so on (Django (Python), etc.)Many (most?) enterprise apps could beimplemented with smaller, simpler technologystacks
  21. 21. © 2013 DevJam - All rights reserved.But how do we get there?• Try piloting with a small, internal project• Context matters!– People: if everyone in the organization only knows Java,Groovy and Grails might be better than Ruby on Rails– Existing technology: if everything is on a JVM, consider alighter framework and language that runs on the JVM
  22. 22. © 2013 DevJam - All rights reserved.Language“I’ll begin with a shockingly controversialstatement: programming languages vary inpower.”- Paul Graham, “Beating the Averages”
  23. 23. © 2013 DevJam - All rights reserved.But how do we get there?• Start with the unit tests– Java  Groovy, JRuby, Clojure, etc.– .NET  F#, etc.– Controlled experimentation!• Other options:– Explore language features which you aren’tusing (e.g., C# lambdas) which provide value– Start with small, non-critical modules orapplications
  24. 24. © 2013 DevJam - All rights reserved.Version Control and Workflow• Centralized version control systems– Subversion, Perforce, ClearCase, etc.– Workflow for a team is largely dictated, but you stillmust determine workflow across multiple teams!• Distributed version control systems– Git, Mercurial, etc.– More powerful, more complicated– GitHub can add additional value
  25. 25. © 2013 DevJam - All rights reserved.But how do we get there?• For each team and across teams, you MUSTestablish and socialize the workflow– The more dysfunctional the culture, the more you’llneed formal branching and merging strategies• Don’t assume people know how to use yourversion control system properly!– Get training if needed• Teams trying a new version control system canfirst try using it on top of the existing VCS– e.g., git-svn
  26. 26. © 2013 DevJam - All rights reserved.Automated Testing• Unit testing and integration testing– Java: JUnit, TestNG, Mockito– .NET: MSUnit, Nunit, Moq– Javascript: QUnit, Jasmine, etc.• Behavior testing– Cucumber, etc.• UI testing– Selenium, T-Plan, Eggplant, QTP, etc.
  27. 27. © 2013 DevJam - All rights reserved.But how do we get there?• Start with defects– Learn the tool AND grow the culture!• Include tests as part of the automated build• Test-drive new functionality• Pair test-infected developers with QA testersto automate QA tests• Treat your tests like you treat your code• Culture! (“Show me the tests…”)
  28. 28. © 2013 DevJam - All rights reserved.Continuous IntegrationBuild Automation• Ant, Maven, Gradle, Rake, etc.Continuous Integration Servers• Jenkins, TeamCity, Anthill Pro, MSBuildContinuous Integration  Continuous Delivery
  29. 29. © 2013 DevJam - All rights reserved.But how do we get there?• Writing a build script is easy! (Keeping it undercontrol is harder…)• Setting up a CI server is easy! (Getting anyoneto care about its output is harder…)• Culture! (People need to care)
  30. 30. © 2013 DevJam - All rights reserved.Automated EnvironmentsOur automated build assumes we have anenvironment into which we can deploy. How dowe automate the creation of environments?• Chef (– Seems friendlier to developers• Puppet (– Seems friendlier to system administrators
  31. 31. © 2013 DevJam - All rights reserved.But how do we get there?• One approach: start with local developmentenvironments and work your way up towardsproduction• Alternate approach: go after the most painfulproblems (often QA environments)• Create a DevOps cross-functional tiger team togo after these issues
  32. 32. The root cause of manysoftware development problemsis a lack of automation
  33. 33. © 2010 DevJam - All rights reserved.Courage- Practice makes permanent !- Good habits help (refactoring, pairing, TDD)- Automation provides supportRespect- Respect for those paying- Respect for those who will maintain- Respect for our teammates
  34. 34. © 2013 DevJam - All rights reserved.Impossible?Q: How much traffic does craigslist get?
A: Morethan 50 billion page views per monthQ: How many employees does craigslist have,and where are its offices located?
A: 30-somecraigslist staff work at offices located in SanFrancisco, CA-
  35. 35. © 2010 DevJam - All rights reserved.Tools do not create culture(much of craigslist is written in Perl!)…but tools can act as a catalysttowards creating a better culture(and process is a tool!)
  36. 36. © 2013 DevJam - All rights reserved.Additional Tools• Optimizely (A/B testing)• Google Analytics (general analytics)• Chartio (reporting on top of Google Analytics (andmore))• Splunk (logging and monitoring)• New Relic (intelligent logging and monitoring)• Amazon Web Services (virtual services)• Heroku (virtual technology stack)• MongoHQ (virtual database)
  37. 37. © 2010 DevJam - All rights reserved.ExerciseTwo minutesIntroduce yourself to someone sitting near youShare your biggest technical constraint,and one tool or technique from this sessionthat you could use to address it
  38. 38. © 2013 DevJam - All rights reserved.Recommended Reading• Continuous Delivery, Humble & Farley• Continuous Integration, Duvall, Matyas & Glover• Refactoring, Martin Fowler• Working Effectively with Legacy Code, Michael Feathers• Extreme Programming Explained, 2nd Ed., Kent Beck• Test-Driven Development: By Example, Kent Beck• How Google Tests Software, Whittaker, Arbon & Carollo••• Seeking Wisdom, Peter Bevelin• Surely You’re Joking Mr. Feynman!, Feynman & Leighton
  39. 39. © 2013 DevJam - All rights reserved.Questions?