Thursday, September 18, 2014

Agile Fatigue

Agile is an excellent development methodology, responsive to business changes with quick turnaround and highly visible results. The concept is in widespread use, particularly in software development, but having implemented Agile almost from the inception of eXtreme Programming I've seen issues arise related to people being on Agile teams for extended periods of time. These can be mitigated or even avoided entirely if you know what to look for. I call the problem 'Agile fatigue'.
Burnout is the most prevalent symptom of Agile fatigue. The pace of an Agile project is unrelenting. Unlike Waterfall and associated development methodologies there are very few built-in times for team members to catch their collective breath and celebrate milestones. To help combat burnout, try a few of these techniques:
  • Set your own team goals, publicize them, and celebrate when you achieve them
  • Move people among teams whenever possible to change the scenery, so to speak
  • Report and celebrate small victories (see Tanya's excellent tips on ways to do this)
  • Set a periodic 'down' iteration/sprint where everyone can work on something they'd like to do (or rotate that ability amongst the team members). You'll get some interesting research, something to look forward to for the team members, and a break while still working.
Meandering happens when people start on tasks/user stories but don't finish them. They might even agree to the goals for the day and end up working on some interesting bug that was far down the priority list. Sometimes this is related to burnout, sometimes you see it when the project manager or ScrumMaster is away for a while, sometimes people just are bored and distracted. The best solution is to have a hard and fast rule about taking on more than a certain number of user stories (usually 1, not more than 2) unless one of the assigned stories has been officially been blocked. To enforce the rule, the project manager/ScrumMaster will have to unassign the offending user stories (past the limit) as soon as they're picked up to get people back on track.

Stagnation materializes when people get so caught up in the short burst nature of the sprint user stories that they don't improve their skills or acquire new ones (hard skills and/or soft skills). Watch for stagnation carefully, since it can be a little hard to spot. Periodically assign user stories that stretch a team member's skills, even if there's someone else on the team who already has the skills. Create some 'administrative' user stories to send people off to pick up a new skill that *might* be needed in upcoming user stories (people like to use their new skills and your project might get a nice shot in the arm). Finally, periodically ask in wrap-up meetings or daily meetings what new technologies, techniques, or processes the team members think might have a place in the project or be worth a try/evaluation.

The daily stand-up turns into a grind. This may take a little more work on the part of the project manager/ScrumMaster. First, be sure you're keeping the meeting to the shortest time possible - it's 'stand-up' for a reason. If it's over 15 minutes something is wrong. The agenda is quite fixed - what did you finish, what do you plan, what are your blockers, so don't veer off the agenda (set separate meetings if needed so it doesn't get confusing). If two people need to discuss a strategy or a blocker, send them off to do it after the meeting (don't use the whole team's time). If someone runs too long every day talk to them in private and get them to make their part shorter. You may want to schedule something just a little longer once a week if you have a team that wants to deal with process issues, etc., more often than once an iteration, but get the stand-up part of the meeting done first to avoid any confusion about the format. Most importantly, make the meeting fun whenever you can. Bring something to eat, start with a joke, look again at Tanya's post about small victories.

Finally, you might encounter a secret move back to waterfall. When this happens, everyone keeps working within the general agile structure and the team often doesn't realize what's going on. Symptoms include user stories that drag from sprint to sprint, user stories that are too big or broken down inappropriately, lack of or improper use of epics, and QA/Test organizations falling behind because they are handed too much functionality all at once. Don't let the team con you into waiting 'until the next big function' because it's 'too much trouble/delay/work' to fix the problem immediately. The whole team - and the whole project - will continue to suffer until the issue is fixed. You may have to deal with denial (after all, the team isn't moving this direction with intent, they're moving back to a methodology that's comfortable to them) and you'll certainly have to put up with a bit of whining, but steady the course and it will work out. (And be sure to celebrate when things are back on track!)

Want more? Check out the Project Management blog on IvyBay





Share/Save/Bookmark

Sunday, March 23, 2014

I was recently asked 3 questions about working with remote software development teams, the questions were specifically about quality issues


1) Why customers get poor-quality software while working with remote software development teams?
Being successful with remote teams requires a level of maturity that many organizations lack. Often there are no documented standards, no processes, no vision, and so on… This leads to delays, quality issues and general frustration with the remote team. Generally the problem is not the remote team, it’s the customer.

2) According to your experience, if you could distinguish three key reasons of poor software quality, what would they be?
  • Product requirements that are unclear and/or poorly documented.
  • A weak product owner or a product owner that will not work off hours to remain in contact with the remote team.
  • Not taking into account cultural differences, both location and company cultures can have a big impact on team dynamics.
3) Could you give customers a practical piece of advice, what they should pay their attention to in order to avoid low software quality?
Always check for understanding when reviewing the product backlog. Since your product owner can’t be there with the team you have to fill the void with documentation, mockups, and conference calls. Spend the extra time to prepare these artifacts one sprint ahead of development and review them with the remote team leads. Get your stories clear ahead of the sprint and a lot of trouble goes away. Insist on frequent demonstrations and good software process. Be very sure the team is on the same page.

Share/Save/Bookmark

Monday, May 31, 2010

Out of Iteration Software Bugs

I did a presentation last week at an Agile event and during the Q and A session one of the questions was about “out of iteration bugs”. Specifically how are they handled? Good question, not all the bugs found in a software project will come from QA activities. It is inevitable that the users are going to find something with the software that needs to be fixed and or changed. What to do?

In most cases the issue is treated like any other backlog item to be prioritized and addressed in an iteration. Depending on the severity / priority rating of the issue, the product owner can weigh the cost of fixing the bug now or having the Agile team complete a different user story. It’s just a matter of cost/benefit tradeoff of where the Agile team’s resources are spent.

Support


Share/Save/Bookmark

Monday, May 3, 2010

To Squawk or not to Squawk

The daily standup meeting is one of the core concepts of Scrum. In the meeting the team members talk about just three things:

  • What I did yesterday
  • What am I doing today
  • What are my impediments

And that’s it…   However, the teams that I see can’t keep it that simple, there is always some banter ( a good sign of team happiness ) and extended discussion on what is going on that may derail the team or another team member.  If the discussion goes on for more than a few minutes we table the discussion for right after the standup.  While it’s important to keep the standup moving its more important not to squash communication.

Who should participate? Anyone who is involved or interested in the project.  Who should actually talk?  Only the folks directly involved in working on the backlog.  The other participants should keep their thoughts to themselves until they get a chance to talk to the Scrum Master away from the team. 

Now I’m going to break the rule, one last thing at the end of the standup I want to know if there are any announcements.  This is a time for individuals that are close to the project but not working on the Product backlog to give the team any information that is valuable for the team.  Usually I limit who can give announcements to a very few trusted individuals.

Daily Stand-ups.. keep them simple fast and open to the team.


Share/Save/Bookmark

Monday, March 1, 2010

Agile and Team Motivation - Goals

I recently started a series based on an Esther Derby Amplify discussion about how to demotivate a team. Esther mentioned in her discussion that unclear and changing goals are a big demotivator for a software development team. Besides agreeing whole heartedly my first thought when reading her discussion is how a good Agile implementation combats these demotivators. Let’s see how Agile methodologies thwart some of these potential demotivators for software development teams.

But first, a high level review of some key Scrum concepts; The Prioritized Product Backlog, the Sprint Backlog, and the Sprint Planning Session.

The Product Owner prioritizes the Product Backlog to identify the highest priority / value product features to be delivered by the Agile software development team.  By viewing the Product Road Map and the Product Backlog the Agile software development team can get a fairly clear idea about the project’s long term goals. 

image

Scrum and Goal Stability / Clarity

  • The Product Road map is created by the product owner to provide a long term view of the product vision.

  • The Product Backlog provides a view of the desired functionality expressed as user stories. The Product Owner prioritizes the user stories to place the highest value user stories to the top of the Product Backlog.

  • The Sprint Planning Session and the Sprint Backlog; The Scrum team conducts a Sprint Planning Session in which the Scrum team selects from the Product Backlog a set of user stories and then commits to complete the selected user stories in the next Sprint.

    • It’s important to note that once the Sprint commitment is agreed upon by the Scrum team, the contents of the Sprint cannot be changed by someone outside the Scrum team.

  • Every day the Scrum Master conducts a Standup meeting with the Agile software team to review progress against the Sprint commitment. Using burn down charts the team can see if they will complete the user stories and meet the commitment (goal) of the Agile team.

  • Once the Sprint completes, the Agile team demonstrates the completed code to the product owner to validate that the Agile software development team delivered what was expected by the Product Owner.

    In the Scrum / Agile environment, the team can see all aspects of the project, from the macro level Road Map to the micro level of the individual task. The Scrum team members set their own commitments on what they can deliver and are responsible to deliver on their commitment. It’s reassuring for the software development team to know they won’t be thrashed with constant change. It’s also very satisfying for an Agile software development team to deliver functionality on time, demonstrate it, and have the product owner validate that the developed user stories are what was expected.


    Share/Save/Bookmark

    Sunday, February 14, 2010

    Agile and Team Motivation

    Esther Derby makes some good points here about how to demotivate a team.  What struck me about her points is that they are exactly opposite to how a good Agile software development team works.
    Esther wrote “What demotivates people? Bureaucracy, unclear goals, constantly shifting goals, micromanagement, punishment for delivering accurate by unwelcome status (to name a few).”
    How does an Agile team differ from this?  I’ll start a whole series of articles to review these demotivators and how Agile teams avoid and address these issues.
    Share/Save/Bookmark

    Friday, October 16, 2009

    Use Cases in an Agile Project

    Use cases in an agile project? You bet, use cases are perfect to augment user stories as use cases can give more context to the person reading them. Use cases can also be used by the product owner to check for user story gaps in the product back log. Writing use cases often spawns alternative use case flows as new functionality is uncovered. As these alternative flows are written by the product owner new user stories should be written so that the functionality discovered in the use cases can be added to the product backlog.

    However, the timing of when use cases are written is important. Let’s say your product backlog has 50 user stories, you would not write use cases for every user story. Only the high priority user stories are candidates for use cases. Writing use cases for low priority user stories in your product backlog just adds waste and overhead to your project.
    Share/Save/Bookmark

    Sunday, September 13, 2009

    Innovation Presentation

    I saw this presentation on LinkedIn today and wanted to share.


    Share/Save/Bookmark

    Monday, March 30, 2009

    Failing Fast is a Good Thing

    One of the benefits of switching to agile project management methodologies is the opportunity to fail fast. As a point of comparison, think about how waterfall projects work. The business requirements are assembled into a software specification. The software development team reviews the specification, creates the design and builds the software product. (I know this is an oversimplification) Some months later the software development team proudly shows the customer the software application in all its glory.

    History has shown that this moment is often a moment that is less happy than expected. Some part of the software specification was not delivered as the customer wanted, or it was delivered as the customer wanted, but it’s really the wrong thing. Bottom-line, the software project or a part of the software project failed late. Ouch… It’s going to be expensive to fix…

    Agile methodologies by the way they work encourage failures very early in the project. With agile project management methodologies, there are frequent software product demonstrations to the product owner. Typically at the end of each sprint / iteration the software development team demonstrates the software build to the customer. Here’s the chance to let the product owner catch parts of the software project that are off course and make corrections as needed. It is much easier and cheaper to make a change on three weeks worth of software development after a sprint than six months worth of software development at the end of a waterfall project.

    Show your software to the product owner, let them find problems and fix them. It’s better to have a software project fail fast resulting in small changes than fail late
    and have a big mess.

    Share/Save/Bookmark

    Saturday, March 14, 2009

    User Story Format Thoughts

    Recently I posted about a common user story format. I’m starting to see more and more discussion about this user story format and how some feel that it is too constrained. One proposal was to swap the value and actor sections. I’m trying to figure out an example of how to write this, hence my problem with this format. It does not seem natural and I really don’t see the value.

    One of the great concepts of Agile is to inspect and adapt. While right now I don’t see value in changing the standard user story format, it does not mean that there won’t be a day when someone proposes a better way or writing user stories. When that day comes, I’ll inspect the new format and perhaps adapt.

    Share/Save/Bookmark

    Sunday, March 1, 2009

    Communicating Agile

    Here’s a surefire way to fail with your Agile implementation. Ignore the other parts of the business that are used to dealing with schedule driven projects. It’s not enough to get the project team onboard with Agile, you need to spread the word and sell Agility to as many people as you can.

    Go on “Agile Tours” and give multiple presentations about your Agile Team and how you are working to reduce waste and speed the delivery of working code. Of course short presentation won’t be enough to cover Agile Methodologies in much detail, but do talk about the benefits of customer interaction, process inspection, use stories, communication, UAT and so on.

    Take the time to build the trust that what you are doing is correct and is the right thing for the business. Plus in today’s economy you are focusing valuable resources on the highest priority items and will deliver results sooner, who won't want to hear about that?

    Share/Save/Bookmark

    Sunday, February 15, 2009

    Agile Thinking – Enhance Personal Productivity

    It’s a tough world right now, most organizations are being asked to get more done with less. In an earlier post I talked about MoSCoW ratings as a way to prioritize user stories. MoSCoW ratings can be used to prioritize many things. Prioritizing tasks with MoSCoW ratings in a to-do is list is just one way of using Agile thinking to boost personal productivity.

    When I am overwhelmed I use MoSCoW to prioritize personal tasks.


    M - MUST do this task. In this context MUST is similar to Steven Covey’s Important / Urgent Quadrant. Schedule time to handle this task now.

    S - SHOULD do this task. The world won’t end if it is not done today. But it’s a task that if it does not get done could lead to problems. This task should remain in your personal task backlog (to do list).

    C - COULD do this task. This task is neither urgent nor important now. This task could remain in your personal task backlog (to do list) or be delegated.

    W - WON'T do this task. Doing this task won’t move the project forward or provide any value. Delete this task.

    We can’t add more hours in the day but we can spend the time we do have on the right things By looking applying MoSCoW ratings to tasks and responsibilities, you can make sure you are focused on the right priorities and remove waste by not spending time on needless tasks.
    Share/Save/Bookmark

    Wednesday, February 4, 2009

    User Acceptance Tests - Test for Success and Build Confidence in Your Agile Team

    Getting users stories from your product owner is one of many ways software requirements are conveyed to the agile team. However there is one key companion to the user story, the user acceptance test. The user acceptance test closes the cycle by providing the criteria the product owner will use the test the user story. The agile team can use both the user story and user acceptance test together to ensure they understand requirements from the product owner.

    Just as when writing user stories, sometimes the product owners need help with writing user acceptance tests. It’s common to have a QA engineer assist in the process of writing user acceptance tests. I recommend using a QA engineer to make sure the software tests are clear of ambiguity.

    At the end of the sprint, the agile team demonstrates the completed user stories to the product owner and validates success by executing the user acceptance tests. This software product demonstration confirms to the product owner that the software meets the requirements specified via user stories.

    Running a software product demonstration and passing all the user acceptance tests is a big confidence builder for the team and the product owner.


    User Story + User Acceptance Test = Clearer understanding of what the product owner wants and how the agile team can test for success.
    Share/Save/Bookmark

    Sunday, January 25, 2009

    User Stories and And…

    In an earlier post I talked about the three elements of a good user story, who, what, and why. The word “and” does not belong in one of these elements. If you are not familiar with the three elements of a user story, read this post “User Stories and the 3 things that make them complete” before proceeding.

    Check out this user story, can you spot the potential problem?

    Daytime and nighttime customers want to add products to a shopping cart and checkout so they can select and purchase products.

    The example is an awkward and big user story that covers a lot of functionality. The “what” section covers multiple pieces of functionality, the word “and” is your indication that the story is too big. This user story may be so big that the functionality may not be completed in a single sprint.

    The example user story needs to be two separate user stories to show a separate user goal “what” per user story.

    1. As a customer I want to add products to a shopping cart so I have a container for the products I want.
    2. As a customer I want to check out so I can purchase products I want.

    Each of the above user stories is a viable user story that can be ranked and implanted independent of the other. So look out for the word “and” in the “what” section of a user story as a warning that the user story is too broad.


    Share/Save/Bookmark

    Monday, January 5, 2009

    User Story Prioritization - Part 1

    Prioritizing the product backlog is an important step to make sure the agile software development team is focused on the correct set of user stories. The initial product backlog can consist from a few user stories to several hundred. Trying to prioritize several hundred user stories is a huge task that can be simplified by using MoSCoW ratings.

    MoSCoW ratings defined:
    M - MUST have this feature – the product will fail to meet needs without this
    S - SHOULD have this feature – an important feature that has an acceptable work around
    C - COULD have this feature – wish list item
    W - WON'T have this feature at this time – might move to Must, Could or Should in the future.

    Product owners and business folks seem to understand this approach and find it easier to deal with a large product backlog by using MoSCoW ratings.

    Once a user story is MoSCoW rated only the Must user stories need to be prioritized. The rest of the user stories are not MoSCoW rated high enough to warrant the effort to do a numerical prioritization. That said, MoSCoW ratings on user stories can change over time, what was once a Must can become a Could or Should and so on…

    Assigning a user story a MoSCoW rating is a quick and dirty way to quickly narrow down on what is important to deliver to make the product a success.
    Share/Save/Bookmark

    Monday, December 29, 2008

    User Stories and the 3 things that make them complete

    A really good user story will have three things to make them useful and complete

    • Who
    • What
    • Why
    I’ve seen so many user stories that have the Who and What nailed, but they miss the Why. Adding the Why seems to be the hardest part, but it’s so useful for prioritization and for stakeholder understanding.


    So what are these user story elements?

    • Who = the primary actor. The Who can be generic like customer, user or specific such as specialized user of a system. The Who can also be a non user such as a server; I’ll give an example later.
    • What = the action the primary actor wants to take.
    • Why = the value or the reason the primary actor wants to do the action.

    When writing user stories I’ll use standard phrases to ensure the completeness of the user stories

    1. “As a” to identify the Who
    2. “I want to” to identify the What
    3. “So that” to identify the Why

    So let’s write a few user stories as examples

    1. As a customer (who) I want to add items to a shopping cart (what) so that I can purchase them (why)
    2. As a server (who) I want to receive well formed xml (what) so that I can process XML without errors (why)


    As I write this I found some proposals to switch the
    Who, What Why to Why, Who, What to provide the business value up front. It’s an interesting idea to try when you write your user stories.


    Share/Save/Bookmark

    Saturday, December 20, 2008

    Getting Started with Agile Project Management

    I've recently read some discussions about how to get started with Agile Project Management. Its not hard to get started with Agile, however Agile project management is hard to sustain if you are not prepared for the issues that will arise. From personal experience there are a few things to tackle before adopting Agile Project Management. These ere education, training, finding a coach, and just getting started. The education part is pretty easy, there are some really good books that cover Agile Project Management and User Stories.

    Books -I've read all of these Agile Project Management book and use them as a reference.

    Certification - The Certified Scrum Master certification class is a great way to get some exposure to Scrum and learn about some common issues that beginners run into. Its even better to send several people on the team to the CSM class.

    Coaching - Agile is hard, get an Agile Coach to guide you through the first project or at least the first few sprints. The value of the knowledge transfer and guidance will far outweigh the cost of the coach. The coach will know from experience what problems happen with new agile teams and can guide the team through the trouble spots

    Just Get Started - I remember the very first step we took to adopt Agile Project Management. The development team was in a conference room with the product owner, we wrote 12 user stories and prioritized them. The simple step of getting requirements via user stories and prioritizing them into the product backlog was an eye opening experience for the team. At once the software development team understood what was important to the product owner and the product owner better understood what the software development team could do in the time period for the project. In the world of Agile this is a very simple step but it was the first crucial step to change the way the software development team interacted with the product owner. So, go read some books, get certified and take your first steps, its worth it.


    Share/Save/Bookmark

    Sunday, December 14, 2008

    Agile and User Interface Mockups

    Some people will argue that user interface mockups smell of big planning and have no place in agile, I disagree. Let’s face it; it’s hard for a product owner to communicate to the software development team how a software product should look and work without pictures.

    A product owner that has screen mockups to work with has a powerful tool to elaborate user stories. Pictures enhance collaboration and understanding by giving the software development team an alternate method of receiving software product requirements from the product owner.

    From a QA perspective, the mockups serve as a guide for testing the user interface to ensure that the user interface is developed as requested by the product owner.

    It gets tricky though when the user interface mockup illustrates product functionality covered by several user stories. The one easy way around this is to just add the user story number to the mockup and use themes.

    Share/Save/Bookmark

    Tuesday, December 2, 2008

    Focused delivery of value

    Isn’t that what it’s all about? I was writing something else today about aligning resources and part of what I wrote was “focus resources on the high value deliverables for quick impact and realization of value”. Anything that gets in the way of this is a negative and removes value from o software development project. It seems so basic. In a nut shell this one sentence describes the goal of using agile project management methods.
    Share/Save/Bookmark

    Sunday, November 23, 2008

    Agile Project Management for Globally Distributed Teams

    What’s the perfect Agile team size? The typical Scrum team size is 5-7 people in one location with a dedicated product owner. This model has been proven out time after time. However, expand the team to 4 project managers, 50 people around the world, three different outsource vendors, three different languages, umpteen time-zones, a multitude of contractors, a team of product owners and you have a challenge. Standard, by the book Scrum will not work and we already know by experience that waterfall does not work.

    What to do? Pick the best out of multiple project management methodologies and tailor a process that works for you. The goals are still the same, fast development, customer involvement, frequent feedback, and reduced waste. I’ve seen lots of experts write about standard scrum in small teams. I don’t see much written about large agile teams.

    Scrum, What works for Globally Distributed Teams

    • User Stories
    • Short Sprints
    • Test automation
    • A commercial web based Agile PM tool
    • Burn down charts
    • Multiple Scrum Masters
    • Customer involvement
    • Prioritized product backlog
    • Scrum of Scrums


    Scrum, What does not work for Globally Distributed Teams:

    • Daily standup meetings for the entire team
    • A single product owner
    • Sticky notes for user stories
    • Developers adding tasks


    Things to try: (I have and it works)

    • A product owner team
    • Three sprints per user story
      • User story definition
      • User story development
      • User story QA/Test Automation/UAT
    • Dedicated System Architects
    • Multiple Project Managers - Scrum Masters
    • Predefined tasks per user stories
    • Multiple interacting scrum teams
    • Be flexible with your approach



    Share/Save/Bookmark