Agile Overview – August 2014

Agile Overview August 12-14 Supplemental Notes & References

 

Supplemental Workshop Data

 

Agile practices supportive of each of the 12 principles of agile manifesto:

Principle 1 – Our highest priority is to satisfy the customer through early and continuous delivery of valuable software.

Supporting Practices:

  • Have sprints of fixed length
  • Get regular customer feedback via demos, surveys, analytics
  • Do UAT testing (preference for automated UATs)

 

Principle 2 – Welcome changing requirements, even late in development.  Agile processes harness change for the customer’s competitive advantage.

Supporting Practices:

  • Short 1 week sprints
  • Daily customer discussion
  • Regular (weekly) backlog grooming

 

Principle 3 – Deliver working software frequently, from a couple of weeks to a couple of months, with a preference to the shorter timescale.

Supporting Practices:

  • Well defined sprints (small stories with acceptance criteria, consensus on sprint goal and stretch goal)
  • Deploy software to production (or representative production environment) at the end of the sprint
  • Employ feature toggles to be able to release software and selectively enable / test new features
  • Test your release process throughout a project

 

Principle 4 – Business people and developers must work together daily throughout the project.

Supporting Practices:

  • Have regular scrum prioritization / planning meetings (each sprint)
  • Ask questions (questions are asked both ways – team to customer and vice versa)
  • Co-locate team members
  • Setup a team room (virtual team room for distributed teams)
  • All team members sit or work together daily

 

Principle 5 – Build projects around motivated individuals.  Give them the environment and support they need, and trust them to get the job done.

Supporting Practices:

  • Hire the right people (this means you need to ensure you know who the “right” people are for your organization and/or team – this is a good thing to discuss as a team and/or involve the team in the hiring/interview process)
  • Provide recognition to team and individuals
  • Celebrate small wins (celebrating frequent small wins provides greater motivation than waiting to celebrate a big win that is harder to achieve)
  • Think about “growing a garden” as a metaphor for the support that leadership should provide to a self-managing team – growing a garden metaphor comes from Jurgen Apello in “Management 3.0″

 

Principle 6 – The most efficient and effective method of conveying information to and within a development team is face-to-face conversation.

Supporting Practices:

  • Have face to face meetings

 

Principle 7 – Working software is the primary measure of progress.

Supporting Practices:

  • Track metrics for the quality of software delivered
  • Track metrics for the business value of software delivered

 

Principle 8 – Agile processes promote sustainable development.  The sponsors, developers, and users should be able to maintain a constant pace indefinitely.

Supporting Practices:

  • Set reasonable and realistic goals for sprints and teams
  • Respect goals that are established
  • Goals are set with all team members involved (no secret goals without consulting the whole team)

 

Principle 9 – Continuous attention to technical excellence and good design enhances agility.

Supporting Practices:

  • Promote Collective Code Ownership (measure commits across the codebase, you should see multiple people making changes to each portion of the codebase)
  • Promote Clean Code (measure the complexity of code using tools like SonarCube)
  • Adopt and promote a collection of standards and design patterns
  • Use Test Driven Development
  • Setup Continuous Integration (build code, run test, send feedback to team, team is highly responsive to feedback from continuous integration)

 

Principle 10 – Simplicity–the art of maximizing the amount of work not done–is essential.

Supporting Practices:

  • Hold regular backlog grooming sessions
  • Plan incrementally, flush out the details of stories at the last responsible moment before implementing them

 

Principle 11 – The best architectures, requirements, and designs emerge from self-organizing teams.

Supporting Practices:

  • Hold team retrospectives
  • Establish bi-directional trust between team and customer (whole-team approach)

 

Principle 12 – At regular intervals, the team reflects on how to become more effective, then tunes and adjusts its behavior accordingly.

Supporting Practices:

  • Hold team retrospectives
  • Gather metrics about process to make decisions based on quantitative data and be able to assess the impact of changes made

20140814-Practices1  20140814-Practices3

 

Complexity & Cynefin Framework

Recall the signs / symptoms we discuss that were indicative and/or supportive of a system falling into chaos:

  • No / limited / poor communication
  • Having a weak or non-existent shared vision
  • Having frequent staff changes
  • Having a team which is not sized correctly for the work that is to be done
  • Not having the correct skills / tools to complete the work at hand
  • Not having the ability to develop or evolve new skills to support the work at hand

20140814-CharacteristicsOfChaos

 

Agile Team Retrospectives

An agile retrospective consists of 5 stages

  • 1 – Set the stage – check for safety
  • 2 – Gather data – collect facts & root causes
  • 3 – Generate insights – ideas based on the facts
  • 4 – Decide what to do – establish team consensus
  • 5 – Close the retrospective – re-affirm outcome, check for safety

20140814-RetrospectiveStages

 

Iterative agile process sketch

20140814-ProcessSketch

There are lots of other depictions of agile process out there – here’s a Google Search link if you are looking for other depictions of agile dev processes: https://www.google.com/search?site=&tbm=isch&source=hp&biw=1163&bih=842&q=agile+process&oq=agile+process&gs_l=img.3..0l10.2568.5145.0.5474.13.9.0.2.2.1.208.939.0j5j1.6.0….0…1ac.1.51.img..6.7.737.ak26oDKzaMA&gws_rd=ssl#q=scrum%20agile&revid=680974205&tbm=isch&imgdii=_

 

Outcome of the GetKanban game (bragging rights)

20140814-GetKanbanScore

Recall the unique outcome of our GetKanban game – the team that took the most time to play and was continuously grooming their backlog to focus on the stories of the highest value that required the least effort won the game.

Workshop Learning Goals

  • Learn about User Acceptance Testing – Achieved
  • How do I ask good questions to understand requirements – Achieved
  • How to improve the Sprint Process – Achieved
  • How to apply agile process to large Enterprise projects with fixed milestones – Covered Briefly – check out references below on The Scaled Agile Framework
  • Learn techniques to help with production fires – Achieved
  • How to refine the understanding of agile and learn the methods to promote which I don’t use today – Achieved
  • How to keep things simple so we can deliver the best results – Achieved
  • What’s in the Sprint Cycle, how to conduct standups, what is the process flow, how to manage people (people are not resources), how to accommodate changes within sprints – All Achieved
  • Under the agile process and determine how to best apply the principles to my group in order to produce software that delivers better business value – Achieved
  • Transforming agile concepts for development projects, agile best practices, collaboration – using agile, deliverables using agile – All Achieved
  • Handle change of requirements, planning sprints for releases, testing, how to accommodate new people with a lack of knowledge – All Achieved
  • Sprint with Big Picture + Business Requirement Consideration – Achieved (but also check out the references on the Scaled Agile Framework for an idea on how to scale agile to support Big projects)
  • How to maintain focus on the big picture while developing iteratively, how to create clear defined requirements for a short sprint, how to integrate quality design into development – All Achieved
  • How to adjust sprint schedule after spotting missed “requirements” for current stories – Achieved
  • Learn how to be a good business partner to agile software development team (learn roles) – Achieved

20140814-LearningGoals

 

Recommended Follow Up Actions Based on Activities in the Workshop

  • Use the “Pocket Sized Principles” exercise (the exercise where you summarized each agile principle in 3 words or less) to have a discussion / refresher on your team about what the agile manifesto means for your team – facilitation notes / guide for Pocket Sized Principles is available online at: http://tastycupcakes.org/2010/01/pocket-sized-principles/
  • Show the 7-lines expert video to your team and then ask your team what elements of the video are applicable to the team and what could be done to overcome them (this would be a good retrospective activity / discussion) – the URL to the video is: https://www.youtube.com/watch?v=BKorP55Aqvg
  • Work with your team to create a sketch / visual depiction of your agile process (similar to what we did in class) – this would serve to refresh and/or remind team members of the team’s established / preferred way of working
  • Modify your configuration of JIRA so that the length of JIRA items is limited (perhaps as small as 500-600 characters) – this is intended to allow JIRA to emulate some of the best practices for writing user stories including keeping user stories small (recall originally there were written on 3” x 5” note cards)
  • Form an internal agile practitioner group that provides a forum for team members to come together monthly discuss challenges, share ideas / suggestions and provide support / advocacy to those adopting agile – adopting agile can be challenging as change is required, support and encouragement from others can help with change
  • Attend a meeting of a St. Louis agile user group – information about 3 user groups related to agile and lean is included below

 

Topics & Mentions during the workshop

  • The Scaled Agile Framework – framework to scale agile development across multiple teams working together to form what is called a release train – www.scaledagileframework.com
  • Strange Loop – a St. Louis software development conference held in the fall each year which focuses on emerging programming languages – devs attend from all over the world – https://thestrangeloop.com
  • Bob Martin – One of the original signatories of the Agile Manifesto who is best known for being a very strong advocate for Clean Code – check him out on Twitter at – https://twitter.com/unclebobmartin
  • Little Bits – Cool programming / electronic kits that teach kids about Programming and electronics – help get your kids interested in Engineering and high-tech career – You can get them on Amazon – link to the Little Bits website: http://littlebits.cc/
  • Teach Kids Programming – a not-for-profit movement that teaches elementary school aged kids how to program using Test Driven Development – created by Llewellyn Falco – http://teachingkidsprogramming.org/
  • Agile Games – a community and annual conference held in Boston, MA to discuss ideas to teach about agile and lean software development using games, and also how to use games to improve teamwork, collaboration and innovation on self-managing teams – www.agilegamesnewengland.com
  • #NOESTIMATES – an interesting hashtag to follow on Twitter which talks about alternatives and pros/cons to not assigning Story Points to user stories and rather measuring cycle time / flow and using such data to build a forecast delivery model for a team vs. a traditional release plan – https://twitter.com/search?q=%23noestimates
  • Agile Product Ownership in a Nutshell – 15 minute video shown at the end of class that summarized the contents of the class and was used to setup our Agile Bingo activity – https://www.youtube.com/watch?v=502ILHjX9EE

 

St. Louis Community Groups & Events Related to Agile (free and open to all)

  • Lean Kanban St. Louis – Monthly Meetings and activities regarding Lean and Kanban topics – many times the group ends up discussing agile values and principles as well since they are closely related to Lean & Kanban – http://www.meetup.com/Lean-Kanban-St-Louis/

 

Recommended / Mentioned Books

  • Training from the Back of the Room – Sharon Bowman – talks about techniques to promote greater class / workshop engagement (you experienced many of them in the workshop)
  • Agile Testing – Lisa Crispin & Janet Gregory – talks about how testing changes to enable teams to frequently deliver software, also introduces the idea of the test pyramid that we talked about during one of the workshop breaks
  • Management 3.0 – Jurgen Appelo – presents ideas on the role of leadership and management to support agile teams.
  • Agile Retrospectives: Making Good Teams Great – Diana Larsen & Esther Derby – if you are looking to start your collection of agile books, start with this one as it talks about fundamental ways to help teams improve
  • Joy INC – Richard Sheridan – talks about how to create a corporate culture based on joy which results in improved employee engagement, retention, and innovation.