An Executive’s Justification for Agile

I was recently working with teams at a client as they transitioned from a traditional project management mentality to one of Agile. C-Suite Executives originally felt comfortable with traditional project management because dates and scope were communicated and they could “abstract” the day-to-day details of that project away, allowing focus on the strategic concerns of business. Delegation is a common tactic of successful managers and is how much of the corporate world gets large initiatives complete.

Often many middle managers struggle going from high performing doers to strategic generalists (Watkins, 2012). The managers that aren’t able to delegate and move up, struggle in their position. So many successful executives work this way – get the details onto the plate of someone else. There are a few problems though, as we know today:

  1. Can the executive trust the date and scope that your project managers are giving you?
  2. Are the executives asking the people underneath them to work very differently from the way they would like to work (delegation of details)?

Many have addressed the first question on trusting date and scope, so I won’t discuss in depth here. But you can certainly look at the success statistics of waterfall projects here and here and come away with a conclusion that, on the whole, bigger projects struggle with waterfall methodologies.

Addressing question #2 is where I’d like to go in this post: Are you asking the people underneath you to work very differently from how you’d like to work?

There are at least two roles that will suffer in this model:

  • From the executive’s perspective, they like to have the details happen elsewhere, but what happens in traditional project management projects is that someone builds a project plan, and then everyone works to that project plan. Team members might be updating their % complete on every task, and that rolls up to total project % complete. In many cases, the project manager manages an all-inclusive project plan, from low level tasks to strategic milestones. That person must be aware of both the details and the high level: a challenge. Compared with Agile or Scrum projects, the team commits to building features and functionality; how they do that is their business. Notice the difference?
  • From a “resource manager’s” perspective, that person is asked often to time slice their individuals and think each and every time how people fit best together to get the job(s) done. I once spoke with a customer that had just moved over to Agile and as a resource manager, he asked the question “Now what? I don’t know what to do with myself.” He was literally busy shuffling people around, but all that stopped when his teams moved to Agile. The shift to a more strategic approach has led to career success.

Let me propose that you think about an Agile transformation or some Agile adoption in your organization as just applying good business/management sense, in the following ways:

  • Delegate the “HOW” to the team itself. Stop having your managers up the chain so involved in the implementation details of your software delivery. This should come naturally to inherent natural managers.
  • Delegate the “WHAT” to someone – preferably a product owner. This is usually a challenge for executives. A project is usually a WHAT and a WHEN, because software is fungible (i.e., it can be divided up nearly infinitely different ways). This fungibility means – you can have a high level WHAT you hold others to account for, but let them make tradeoffs on the details. Normally, your project is not a failure if they did not get that least most important feature.

Now that we hopefully agree that Agile makes good management sense, it’s important to discuss how to get there. You should consider hiring an Agile consultant to assess your specific situations and provide a detailed change management plan. You should also challenge your immediate subordinates to think about “delegation” and work towards that end. Even if you do not adopt (or, implement) a full Agile environment, you will get better results and a more engaged organization, which is a ‘win’ from every angle.

 

How an Agile Team Can Succeed with Limited WIP

imageOne common pattern of successful agile teams, is they learn to focus and the right things.  They learn to stop spreading themselves too thin.  They learn that limiting the amount of their work in progress leads them to more predictable results. 

I’ve talked about why keeping your WIP (work in progress) even within a sprint is important.  The tool you might use to measure the amount of work in progress is a Kanban board.  You might decide that a WIP limit might be #developers – 1 (3-person team selecting a WIP limit of 2).  Uh oh… you need to be working together.  The big questions that arise are:

· Why is this a difficult premise for many teams? 

· How can you overcome this in a software development team?

Why is Working Together Difficult

From the earliest college courses in the topic, we’re taught to break problems down into pieces and solve the pieces independently.  As an architect, this means solving problems with layers, tiers, and components. As a developer, this means the abstractions of problems and encapsulating complexity inside methods and classes.  As team members, we’ve been rewarded for being the developer that you can “just give them problems and they come back with solutions.”  We even have phrases for people that can’t do that, we say “they need a lot of babysitting.”  There are a lot of messages being reinforced to solve problems separately and work independently.  In short, it’s difficult to work tightly together for many teams because it is in our computer science DNA to avoid being inter-dependent. 

When I introduce limiting “Work in Progress” with a team the first time, it can be awkward.  Based on the downsides of multi-tasking, they typically agree to limit their WIP. Shortly thereafter, though, someone is left out, standing without a story of their own. 

Learning to Work Together Again

Fortunately, there are a few tactical things that we can do to improve our ability to work together again.  Here are a few – in order of my preference:

· Pair Programming.  Literally, put two developers together in front of one keyboard and talk about the problem, solve the problem.  Developers will sometimes take turns coding and watching often.  I’ve seen this work wonderfully, but admittedly it’s scary to adopt if you’ve never done so before.  If you’re not ready for this, keep reading.

· Horizontal Slicing.  If you must have a 1:1 relationship between your developers and keyboards, then try this strategy.  If a user story is a vertical slice of pie, then cut the slice horizontally a few times.  In enterprise apps, we typically have the database, the business layer, and the presentation layer.  Each layer can be a person’s job.  Split them up, and work on them in tandem.  Remember that you need to finish at the same time, not necessarily do them in sequence as if you did when you were alone.  Establish and challenge each other’s contracts and interfaces with your slide – it might make your solution even better.  This is different because you will be forced to come together and make that thing work early and often.  I take this as often a decent side effect.

· Micro-Vertical Slice: If a user story represents that sliver of pie – why not divide it up even more and work on it in tandem together.  Sometimes stories include both the admin side and front end.  Tackle both at the same team, but stay close to each other’s work.  This one will require even more conscious effort because it might be easier to separate and do your own thing.  Try to avoid that.  It’s not as natural as Horizontal slicing and runs the risk again for independent lonely coding again – but with some discipline, I’ve seen this work.

· Rougher-Finisher Pattern: Maybe between a pair of developers, someone is a better sledgehammer person and another is a better pocket knife.  Perhaps have that sledgehammer going and have someone coming back in over again to refine.  Do this only if you both agree it’s equitable and not an excuse to be sloppy.  This isn’t my favorite, but if the other three don’t work for the situation, it might be worth a look.

What If It Still Hurts

Do it more often.  In this world, you’re not doing it right unless you’re stepping on toes a little.

Welcome to My Newly Launched Blog

Over the past few months, I have decided that my blog needed a little attention.  The focus of what I’m going to 8017202723_b258a5016c_zbe writing about has shifted from deep coding concepts to more of a focus on leadership, the agile movement, and IT organizational strategy.

A lot of folks that I work with tell me why they may not want to write a blog is the reason that they may not feel like an expert and therefore not qualified to be published online.  The phrase, “Who would want to read what I have to say” is a common refrain back at Polaris Solutions.  Acknowledging that own insecurity in myself, I feel like it’s important to share not only the “answer,” or destination – but it’s important to talk through the journey as well.  And to that extent, I consider what I write and share with you to be lessons learned, mistakes, and observations as I grow myself.

Most paramount in my purposes here is that there may be a chance that some of this is something that you, the reader, can relate to.  Possibly you’re seeing some of the same things in your organizations.  Maybe even there’s a chance it helps you avoid the pitfalls that I’ve fallen into.  To the extent that happens is rewarding to me.  If you can relate to anything I write, please feel free to share in the comments.

The Title

Work In Progress is a title that really rings to me.  Rather than any talk of Ivory tower, it’s more important to communicate that this is my goal.  This blog really is a work in progress.  My knowledge in the area indeed is also very much a work in progress.  I am a work in progress. 

The Arch

Admittedly, I root for my home town – St. Louis, MO.  It’s a great place to work and live.  Additionally, I chose to include the Gateway Arch because like Agile, it’s simple and it represents reaching for new heights.  It reminds me that solutions that work don’t necessarily need to be complex – in fact they’re better when complexity is gone.

Thank You

This blog post was written on bluehost, using wordpress.org, with the getnoticed theme.

Speaking at St. Louis Silver Linings Conference (Again)

I’m excited about the fall, but mostly this year because of the chance to speak at conferences. I’ll be giving an introduction to DevOps talk at the St. Louis Silver Linings Conference this year. This year, Polaris is sponsoring, helping to organizing, and doing some of the speaking at the conference. This time the conference will be on Friday – 10/30 and will be in St. Louis. For more information – the conference site is at http://stlsilverlinings.org

Don’t Forget to Measure Real Work In Progress

As often is the case when you set out on the Scrum or agile journey as a software team, the team often starts going through the motions. They often work through the proper ceremonies, meetings, deliverables, actions; but what can get lost is the meaning and the ‘why’ we do it. Many teams in fact start doing daily standup meetings as a way to start being agile. The thought there is at least that everyone knows what everyone else is doing. Meanwhile they might still be planning and committing to 15 sprints down into the future (e.g. a waterfall project plan in another form). Sometimes they have split responsibilities such that the product owner is handling the prioritization, but still forcing all of the requirements to be done ahead of time before the sprint starts. Often, I’ll hear the product owner say things like “I’m just giving the team a runway.” I see this a lot and sometimes it seems like it’s working for them; to enable meetings to be fast and efficient, but I’d suggest thinking about work in progress, or WIP in terms of everything that you need to do to bring a feature to “production.”

This one example, might be worth exploring a bit more in depth. As the product owner builds the runway; and encourages the team to groom as fast as they can, it might in fact give the team a false sense of security. Here’s an example Kanban that I’ve seen recently.

The way to read this is that the “3/3” above the active column shows a “WIP Limit” of 3. The team is telling the world that they will only have 3 active at any given time. The good news is that they should be getting things done at a relatively predictable pace.

The interesting, and potentially unfortunate news is the “groomed” state. The product owner has likely had grooming meetings where he or she has presented and had estimates put onto items in the future backlog. The point that I’d like to make is that the “groomed’ state is in fact a work in progress, not just active. The risk that the team faces is that; all those items may be out there to be committed into sprints, but they may change as we learn about the ones we’re doing “now.” A potential waste in the project.

That said, having a groomed status such as this, in my humble opinion has its drawbacks but not always wrong. If the organization is not using higher order concepts like epics or features (above PBI/User Story), doing this does give the organization some idea of long range projection of timeframe assuming velocity is being measured. Unfortunately, that longer range projection has the risk of being taken as a commitment and therefore a waterfall plan itself. So be warned, that’s all.

Come see me speak at the St. Louis Silver Linings Conference on October 30th in Saint Louis, MO.  For more info: http://stlsilverlinings.org/

 

Announcing the St. Louis Silver Linings Conference

St. Louis is hosting the newly minted: St. Louis Silver Linings Conference, a conference about DevOps and the Cloud.

Over the past several years, St. Louis has emerged as a great IT and Software development city. Startups and major corporations have placed their software teams in St. Louis because if its great livability and lower cost of living. As such, St. Louis should have a conference about two of the most important topics in the software development industry: DevOps and the Cloud.

Where: St. Louis University Workforce Center

When: July 10, 8:30 AM

How Much: $30.09 (it is a community conference, and this will cover the costs)

How to Register: http://www.stlsilverlinings.org/ – click on Register in the top right.

St. Louis – Polaris ALM Lunch on Agile Testing Success

One of my great privileges is working with a team of such talent and knowledge. I find myself learning something new every day. It’s a lot of fun seeing our team share ideas that help make enterprise software development a better place. This month (March 24th), one of our team mates at Polaris will be talking about Agile Testing Success – and covering how to plan, manage, and execute agile testing. Alejandro Ramirez will be covering how TFS 2013, MTM enables agile and automated testing so that teams can continue to sprint effectively during agile initiatives. Free lunch is included, too! Here are the key details and how to RSVP/Register:

  • When: March 24, 2015 – 11:30 AM – 12:30 PM CST
  • Where: Microsoft Office (St. Louis) – 3 City Place Dr. Suite 1100 – Creve Coeur, MO 63141
  • Register/RSVP: Register Now!

A little bit about Alejandro:

Alejandro Ramirez is a Software Quality professional and Senior Consultant with Polaris Solutions. He has over 17 years of experience working in software in development, testing, and IT governance. His experiences range from small businesses, startups and non-profits, to Fortune 500 corporations in a variety of fields. He is certified in ITIL and Lean. He is also a blogger, speaker, mobility champion, and helps companies incorporate ALM strategies to continuously deliver valuable software.

 

A little more about the talk:

If you are either planning to or are already practicing agile software development, Team Foundation Server (TFS) and Microsoft Test Manager (MTM) offer you a powerful platform to successfully plan, manage and execute agile testing.

During this free lunch session we will cover in detail the different testing capabilities offered by TFS 2013 and MTM for Scrum and Agile methodologies, and will share what we have learned from helping our clients as they implemented and matured their agile testing practices.

Key Experiences:

•    The evolved role of testing in Agile Projects

•    Iteration test planning techniques

•    Test tracking with TFS and MTM

•    Different approaches to bug management

•    Test automation Do’s and Don’ts

•    Testing metrics that are worth measuring

•    Exploratory testing strategies

•    Best practices & lessons learned in the field

Complimentary lunch will be provided to registered attendees.

Minimizing Work in Progress within a Scrum Sprint is Important, too!

 

How many times have you heard the following from the testers in a team attempting to be agile?

“There was not time to test at the end of the sprint. We just got most of the features on the last day of the sprint. How are we supposed to test those features?”

Frankly, I think it happens all the time. This is one of the reasons that some teams try to have the testing teams test features in a following sprint. The problems is that so many teams attempt to apply a variant of Scrum that can be called Scrumerfall. Basically, these teams are treating a sprint like a miniature waterfall project like the following diagram shows.

This team is based on a real scenario that I’ve seen. The team had three developers, on the first day of the sprint, they all took a PBI and drove it. But what happened? The variation in completion of requirements and development resulted in really squeezing the testers that were on this team. Sure they were working on test cases and test planning initially, and even participating in requirement meetings. Something obviously wasn’t working very well. For instance, how well do you think Feature 3 was actually tested?

If that’s all we do when setting up scrum teams, we’ve failed. We haven’t allowed testing to happen sufficiently, and we haven’t really built quality into the process. We have limited the amount of work in progress (on paper), but technical debt obviously is growing here no matter what.

An alternate reality of Sprint 23 above is executed by the same team, but we’ve set a WIP (Work In Progress) limit of 2 PBI at a time. Let’s see what happens:

What’s different here? The total duration of Features 1 and 2 shrunk a little bit because I had to double up the effort short term (we forced the team to collaborate on those features, rather than each going in their own directions). Feature three testing also grew in duration which illustrated it probably needed to get tested more even in the first case. Additionally, the team is often performing all types of the functions in there, from requirements, development, and testing throughout almost the entirety of the sprint. The team was increasing its design, build, deploy cycles and having many of those throughout the sprint, rather than just at the end.

At the end of the day, forcing WIP limits can increase the throughput and quality of features that are running through the system.

Why Minimize Work in Progress is Important in Software Development

Many years ago, The Goal was written by Eliyahu Goldratt as a business novel to illustrate the fallacies in thinking that companies in a manufacturing world tend to have about how to maximize the profit. In this novel, the protagonist learned how to do so for his plant by applying the theory of constraints. As bottlenecks were identified and solved within a sequential manufacturing process, the flow of the whole system was improved when the group stopped optimizing for utilization, and started optimizing for flow. In this process, the team learned to keep the total work in progress to a minimum, so that as a product was started, they worked to get that piece to completion and shipped as quickly as possible. In that world, inventory was a form of work in progress and that was real dollars to be received if it was shipped.

In software development teams, we have our own form of work in progress. Everything that we spend between requirements and Released Code, is our Inventory. It represents time and dollars that have gone into the process that are not being realized in terms of value for our customers. In the below diagram, everything before Released Code is “inventory.”

This is one underlying reason why Scrum and Agile have taken hold in our software development community. Scrum in particular prescribes a batch size (a sprint’s worth of work) that represents the maximum amount of inventory the team should take on. In general, Scrum teams should have “shippable” software and that distinction between shipped and “shippable” is a compromise because our customers may not be able to accept the software at a frequency of “a sprint.”

Before software is shipped, or deployed to production, represents an expense to the company. Consider the following two cases, one is an agile team, and the other is a waterfall project:

Waterfall Team (18 Month Project, 15 team Members)

  • Requirements Team (3 Members Each Making 80K/Year, 5 Months of Work): $100,000
  • Development Team (8 Members Each Making 80K/Year, 9 Months of Work): $480,000
  • QA Team (4 Members Each Making 80K/Year, 4 Months of Work): $106,666

    In whole, the company has $686,666 of inventory. And if this is a general standard operating practice, they are continually (just in IT) maintaining that much inventory on the books (that’s equivalent to having that many products sitting in a warehouse and not being sold).

Scrum Team (18 Month Project, 15 Team Members (there are two teams)). Below is the amount of inventory the company is holding onto, assuming deployments every two weeks. Assuming maximum amount of inventory below (last day of the sprint).

  • 15 Cross Functional Team Members (2 Weeks of WIP): $46,153

Two scrum teams at any given point have six (6%) of the total inventory being maintained. They then ship their software, and the company can realize value from that software much sooner in the process of building that product. Of course there are caveats here in that a software development product must have a minimal viable product, which is assumed to be less than the total scope. Whenever the scrum teams meet that MVP, the company can start transitioning some of these costs into capital expenditures.

This is not true just of Scrum teams, but teams that apply Lean principals and rely on Kanban boards and release continuously also are taking advantage of the significant savings possible in in this world. Rather than measuring a fixed batch size, they are in fact measuring lead time and time to resolution. Either way, the company again is realizing the value much sooner for their efforts.

So we work to get the boxes out of the warehouse and into the customers hands sooner.

Choosing the Right Level of Communication from Release Management

We leverage Release Management for Visual Studio quite often internally and at client sites to enable them to implement release processes for their organizations. One of the strengths of Release Management is its ability to model moderately complex workflows and approval processes within the enterprise. One of the challenges is to get the right level of communication from this tool. If a group has too little communication then people are not informed when they need to take part in a workflow. If there is too much and people begin to start to ignore it completely. Both of these outcomes result in decreased alignment and harm adoption of Release Management within organizations. This post is aimed at highlighting a common problem and a few solutions for it.

For this post, I’ll be using the following simple environment promotion process (click here for explanations of validation, approval, and acceptance):

Problem: QA Manager is Getting Too Many Notifications

Each Release that is created has a targeted environment. The target environment will indicate how far (from left to right in the above diagram) that release will be promoted if all approvals are made. Typically Development will “automate” validation and approval in the development environment to ensure that the noise to them for doing many builds is minimal. In an environment where any build can potentially make its way to production, this is bound to happen. The development team is in effect shifting the noise to the QA group/owner.

Solution A:

Development team changes most builds to only target Dev, and then if a release needs to go to QA and beyond: Dev can retarget an existing release to QA, or create another release that targets QA.

To retarget an existing build, within Release Management, navigate to Releases (tab), Releases (hyperlink below), Open the relevant release, and click on properties:

After that, simply change the Target Stage of the release, and Release management will prompt you to accept the new target stage.

Solution B:

Development team accepts the notification load by adding a member or members as Approvers of the Dev build when it’s satisfactory to promote beyond.

Conclusion

As this one issue highlights, where users are involved in the release process, a team needs to be particularly deliberate about how communication is handled. Before tools like Release Management, it was largely the responsibility of Development and QA to discuss when the next build would happen. These conversations should still be taking place regardless, but now Release Management will help in that process if it’s helping organize the communication. That will only happen as long as both parties in the example transaction above feel like they are getting a fair amount of communication.