Curation Collection #2

http://pmboos.posterous.com/how-to-initiate-agile-adoption-within-a-large

“Q: What change models work? Q: How ot be agents of change? (as coaches)” This was an insightful list of questions related to enterprise agile adoption.  I like questions because they are less likely than answers to lead to one-size-fits-all-suits-none solutions.

http://www.brepettis.com/blog/2009/3/3/the-cult-of-done-manifesto.html

I like the cult of done.  I like the manifesto – I posted the poster included several places in my workplace.  Good reminder of why done is important.  “Done is the engine of MORE!”

http://www.jrothman.com/blog/mpd/2011/09/agile-power-and-culture.html

An interesting look at the way that the “power culture” of an organization interacts with agile adoption strategy.  When your organizational culture has a high power index in the large, then every reorg or management change presents a challenge to agile adoption.  “When I see organizations with a high power differential, they keep falling back to command-and-control approaches, because the power differential is so ingrained in their culture.” 

http://www.avc.com/a_vc/2011/09/minimum-viable-personality.html

Interesting look at product from a VC perspective.  Caused me to ask how people see me as a product.  I work inside “the enterprise” I am not marketing product to VC, but I constantly market myself to others.  “CHICKEN LIVE IN CAGE. NO CAN HAVE PERSONALITY INSIDE CAGE.”  — smash cage, light barn on fire do that you win…

 – @paul_boos @bre @johannarothman #grimlockquotes

Pragmatically Agile

In a conversation recently, I was reminded how being agile is awfully like being pragmatic.

We were talking about topics of interest to project managers like estimation and forecasting and measurement.

One of the topics discussed was about grooming the backlog, and backlog sequencing strategies: Walking Skeleton vs. feature by feature? Do you build just bones, and then add the skin? or do you build one complete body part at a time.

Another topic was about “sprints as phases”: requirements works a sprint ahead of development, testing works a sprint behind – this strategy might work for a longer duration effort (many sprints), but not as well for a shorter duration (4 or less) – it might drive you to more shorter sprints than fewer longer ones.

Yet another topics was about planning margins or slack. Budget or Schedule margins are not on the surface agile concepts, but when they are valuable or necessary risk management tools, they must be implemented in ways that do not interfere with measurement. A budget margin implementation means that I have the ability to spend more but stay on schedule. Pragmatic strategy for that is to overstaff at the beginning, and reduce staff as velocity stabilizes as sufficient, and risk is retired. Adding staff in the middle of a project decreases the stability and predictability of the team.

Our last conversation was about choosing a sprint length. Sprint lengths should be consistent – so that the measurement (velocity) is useful for projection. Sprints should be immutable – once a sprint is started, it cannot be shortened or lengthened. If there is a need to have “variable” length sprints then a shorter consistent measurement period should be adopted (weekly) so that the feedback loop doesn’t elongate. Last, the shorter the overall project, the shorter the sprint size – again, so that the feedback loop is timely enough to make adjustments.

There is no one right way – just ways that make more sense and ways that make less sense. We all learn more from failure that we do from success – but using a framework that fosters timely feedback and rapid adjustment provides ability to see failure coming and get better faster.

Inaugural Curation Post…

This week I am making good on my intent to post some of what I’ve been reading and found valuable.

agile42 | Feature Injection Applied to Service Delivery

I spent a bit of time reading about Feature Injection as a different way (than other agile processes) at dealing with requirements.  I really am intrigued, and will try to adjust my requirements practice to include these concepts. 

Do You Suffer From Decision Fatigue?

This also was interesting – as it clearly reflects what we all experience – decisions take mental energy, and making decisions when mentally tired is sub-optimal.  One could infer from this how to re-arrange one’s schedule to make better decisions, or to be less mentally tired when decisions are needful.

Time to ditch “The Backlog” « The IT Risk Manager

This also was provocative – not because having a backlog is a bad thing, but because how we name things allows others to infer things from the connotative meaning in that naming. 

Calamity howlers & positively selecting with surprise « Freckle Time Tracking

A “calamity howler” (CH) is a persistently negative individual who predicts rack & ruin, frequently and at the top of his voice. It’s a great term that was especially popular in political writings back in the mid-to-late 1800′s but has since fell out of disuse.  — who is the CH on your current project or in your current team. 

Emergent Vs. Inverted Thinking

In agile communities developers, project managers, testers, there is a phobia or paranoia about big ANYTHING up front – that is we should not spend more energy up front than is absolutely needed to get the committed stories/features done in the next iteration.

The concept that we use is emergent thinking. Requirements emerge as we bootstrap our thinking by delivering early features. Design emerges, as we build features that have similar needs, and we refactor towards opportunities for generalization or re-use. Plans emerge as we estimate and sequence the stories in the backlog.

So what happens when the requirements don’t emerge. When the design doesn’t emerge. When it feels like we are just skating on the surface, because there is too much fear of bigger change, or spending energy building anything now because it will all change in 3 weeks. When the product owner is unable to sequence the backlog because there are unmade business strategy decisions that are inhibiting the emergence of plans, requirements, and designs.

I use inverted thinking. It is the opposite of big anything up front- I envision a result (it doesn’t have to be the right result) and I build a plan to acheive that result. I work backwards from a conclusion, as if my decisions were made. I propose a design (as thin as possible) that I think will support the envisioned result. I build a plan (as thin as possible) and propose needed skills and resources.

I pretend I know everything, and when I need an answer, I make one up. But every answer I make up, I list as a decision – because that is the schedule I want. What decisions need answers in what sequence, by what date, and what deliverables are dependent.

Then I dare every stakeholder to tell me why my proposal (that I just completely fabricated out of BS) is wrong. If you can’t give me a good reason not to do this, we are going to move forward in this direction.

When the fear of making a wrong decision is inhibiting the emergence of requirements, plans and designs – Invert the thinking from “What should we do?” to “Why shouldn’t we do this?”…

…and watch decisions emerge.

Product Owner Excellence

What makes a product owner excellent? Is it subject matter or domain knowledge? Is it discipline around following the rules of the delivery management practice? Is it ability to elicit value propositions from or to sell value propositions to stakeholders?

In my last post ProductOwnerTraining – I listed out a set of core activities that product managers do. I think being able to perform these activities makes a product owner competent. I think that for someone to excel, it is not necessarily expressed in what they can do, but how they do it, or even in how they think about doing it.

I think for a product owner to excel, she must have the ability to produce a long term vision for the product, aligned with organizational vision and strategy. She must also be able to abstract meta-value propositions, like the ability to extend the product along certain axes (new client types, new reports, new process variants) without drama, or even without development effort. She must be able to see not only the visible skin of the product, but aspects of the framework around which it is built, so that she can speak, not only to what product capabilities are valuable, but what framework capabilities are valuable as well.

Product Owner Training

How do you develop the mindset and skills needed to be a successful software product owner?

In a technology organization, (software vendor, tech startup) product owners tend to come out of a technology background. They are ex-developers, ex-architects and sometimes ex-sales engineers.

In a non-technology enterprise (a normal company) the product owner is more likely to come out of a business background. In client facing software products, that background is likely to be marketing or business product management. For internal facing software products that background is likely to be that of a business practitioner, or a business analyst.

Regardless of background, product owners need to be able to do the following activities:

 

  • organize stakeholders into specific communities based on desire for specific value delivery.
  • sell the existing value propositions of the product into the stakeholder communities.
  • elicit new value propositions for the product from the stakeholder communities.
  • distill problem statements / value deficiencies from specific feedback from stakeholders.
  • maintain a prioritized/sequenced backlog of deliverables, contemplating the sponsoring stakeholder community, value proposition and business strategy.
  • sell/explain business value propositions to technical team.
  • evaluate whether proposed technology solutions add the value expected by stakeholders.
  • develop high level test cases for acceptance for each deliverable.

Maybe there are some additional things, but this is the core list. You can see that depending on background, some might gravitate to activities from this list that are more comfortable. Training product owners is about helping them grow abilities to perform outside their comfort zone.

A Definition of Done

In his Herding Cats blog, Glen Alleman, asks a very pertinent question. What is the definition of done? Well?

Done (Enterprise software delivery project) – when software capabilities have been delivered that support the business value proposition per the customer’s business capability requirements.

In our agility, we recognize that requirements are clarified by “emerging information”. That doesn’t mean that they “change”. When a requirement “changes”, it is effectively a new requirement. We often experience a case where the business value proposition is inadequately defined at the outset of the project. In this case, it is necessary for this requirement to be clarified by emerging information.

We also recognize that there may be different paths to deliver different software capabilities that support a particular business value proposition. Chosing a different path or delivering different software capabilities that support the same value proposition does not mean the requirements have changed, more likely that we are responding to emerging information.

I like to break requirements into business capability requirements and software capability requirements.  Regardless of your project methodology you must contend with these facts:

Fact: Enterprise software projects are created to deliver some business value. The requirements should define both the value (business capabilities) and a path to deliver it (software capabilities). Requirements form the basis of the definition of done.

Assertion: If the business value does not change, there is not a new requirement.
Assertion: If during the delivery of the business value, we learn things about the domain, the technology, or the world external to the domain that alter the path to deliver the value – there is not a new requirement – but emergent information.
Assertion: How we manage the (the documentation of our understanding of) requirements is a method.

Fact: Some software projects are required to change course mid-stream. Sometimes the business value we initially intended to deliver is overturned by market pressure, financial impact, or a change in management or strategy.

Assertion: When the business value for a project changes, there is a new requirement.
Assertion: When the work done toward that value is abandoned, there is a loss.
Assertion: How we manage the (documentation and accounting for) change to requirements is a method.


Recognizing that there is a difference between allowing emerging information to clarify, influence, or stabilize the delivery of value and accounting for changes in the definition of the value stream for a project is key to understanding agile and how agile methods manage both cases.

In either case, the definition of done is when we have delivered working software capabilities that support the business value proposition(s) that have been “commissioned” by the customer.

Agile Versus Whatever

In a number of posts over the last few months, Glen Alleman (Herding Cats) has been saying that Agile comparisons to “waterfall” or “predictive” are bogus, because the practices that they compare themselves to are simply BAD practices or anti-patterns in the domain of project management.

While I don’t disagree with Glen in the slightest, I want to start an argument about it. Just because they are bad practices, doesn’t mean they aren’t prevalent. There are many organizations with a software development life cycle (SDLC) that is waterfall-ish. And there are many organizations that have responded to regulations (Sarbanes-Oxley) by increasing the documentation requirements without thought to impact on software productivity or quality, that have effectively polluted their software development lifecycle with audit/regulatory oriented policies.

There are thousands of PMP certified morons who do not know (in practice) how to measure a project using any other tool than a gantt chart and a ruler. There are many software development managers who use project plans and process gates to indemnify themselves when things go wrong, who think that by mandating that requirements be “signed off” and requiring “change control” that they are immune to needing to deliver anything more than the minimum specified in the requirements.

There are thousands of software practitioners who have refused to give reasonable estimates because those estimates have been repeatedly weaponized by managers. (If I give you a stick and you hit me with it, next time I won’t give you the stick, or at least will wrap lots of padding around the it.) Many organizations have used “process” as an excuse to move much of the coding work “offshore” leaving ex-developers onshore in unacustomed roles as liasons, managers, project managers, analysts, and testers. They have imposed “process” in order to get work to “cheaper” resources, but have not invested in process maturity.

The thing about agile is that it appears to ALL to be a game changer. It makes it easy for us to drop all our anti-patterns at once. While I recognize that Glen is right – the dumb things that agilists say are similar to the dumb things that born again Christians say (“I don’t know how I would make it through the day with out Jeeesus.”) Agilist are often like ex-smokers – they can’t stop telling you how great they feel since they quit. Yeah – alot of the claims are based on comparisons to bad practices and known anti-patterns.

So Glen, to riff an old joke – why is using enterprise project management anti-patterns like hitting yourself in the head with a ball-peen hammer? Because it feels so good when I stop.

When your experience as a developer or project manager is fraught with project management anti-patterns, and you are a couple of pay-grades below the decision makers who are instituting said anti-patterns, what are your options?

a) Tell senior management that they don’t know their project management keister from a hole in the wall?

b) Find a new job at a better firm (oh wait – that assumes that there really is a better firm…)

c) Find some industry literature that shows a better way – a way that without faulting the folks who instituted the anti-patterns, can be adopted in small doses. A way that tries to put all members of a software development team on equal footing, creating collaborative realtionships rather than emnity.

So in the Dilbert world that most software projects are found in, – option C sounds like a huge winner. You really can’t fault the agilists whose primary exposure to project management practices has been in these environments from making those comparisons – that is their reality.

Agile Risk Mitigation

Before we talk about whether agile practices provide any benefits toward risk mitigation or risk reduction, we really need to talk about the nature of risk in a software development project or process.

In any discussion of risks, there are any number of attritbutes by which we can classify or characterize risks, but in order to discuss mitigation, comparing two methodologies side by side, it makes sense to me to use the source or cause of the risk as the primary taxonomy. So I will describe these risk sources, and how agile might offer some advantage in dealing with risk.

risk mitigation

Risk Source – Customer: Risks emanating from the customer inevtably involve scope, schedule and money. Sometimes it is that scope cannot be succinctly defined, or understood (requirements), sometimes it is that the buiness need changes more rapidly than expected due to external factors. Sometimes it is simply that the customer for whatever reason cannot make decisions.

Risk Source – Project team: Risks emanating from the project team inevitably involve productivity, skill, or leadership.

Risk Source – Organization: Risk emanating from the company or department producing the software, involve policy, resource management, coordination.

Risk Source – Technology/Environmental: Risk emanating from technical infrastructure or software development technology platform.

I have listed these in the order of frequency or likelihood based purely on my own experience. You can argue with me on the customer risk being the most frequent or likely, and that all scope, schedule and financial risk emanate from the customer, but it’s their scope, it’s their schedule, and it’s their money, and all decisions around those three elements are made by the customer.

So how do agile practices help mitigate risk emanating from the customer?

 

  • By producing working software as early as possible, effectively shortening the feedback and delivery cycles, agile practices actually retire risk of unknown. When you produce working software capabilities that is ready to deploy, any risk of unknown that was attached to those capabilities is effectively retired. This includes risk of incomplete or incorrect requirements, or inaccurate translation between business and technical abstractions.
  • By assuming a model that inherently drives down the cost of deferred decisions by eliminating pre-work, the risks of changes to schedule or budget emanating from the customers funding model or the customers market strategy are mitigated.
  • By developing a model with a higher frequency of customer interaction, and reducing the scope (size and impact) of customer decisions (one milestone at a time) risks emanating from the customers own organizational decision making process, or internal committment model are mitigated.
  • By establishing a value scoping paradigm with finer granularity, agile practices can reduce the scope of customer decisions, and the minimum time span of value delivery. More granular deliverables (stories?), make it easier for the customer to prioritize and sequence, ensuring that key value propositions are delivered as early as possible. Customers have a increased ability to discriminate essential scope from non-essential (apple polishing or lily guilding) scope, and so can defer the non-essential, until all of the essential scope is accepted.

Likewise, how do agile practices help mitigate risk emanating from the project team?

 

  • By increasing the frequency of measurement (of productivity), agile practices give more timely feedback on the productivity from each skill to management, enabling adjustments as early as possible, rather than later.
  • By establishing a regular cycle during the project of milestone retrospectives, the project team can adapt and adjust without the permission or engagement of outside leadership.

And for risks emanating from the delivery organization?

 

  • By establishing cross-functional teams, and empowering the team to self-adjust their process, agile practices reduce policy oriented risks, as separate teams forming separate (and un-aligned) policies do not inherently collaborate or coordinate.
  • By increasing the frequency of measurement, feedback to resource management is actionable sooner, mitigating risk emanating from resource management.
  • Agile practices do not appear to provide distinct advantage in coordinating across delivery teams, or with service providers or vendors. But it also does not appear to disadvantage the team in any material way.

Finally, for risks emanating from the technical infrastructure or development platform?

 

  • Agile practices do not appear to provide distinct advantage in dealing with hardware or software environments or development tools. But it also does not appear to disadvantage the team in any material way.

While I am not suggesting that traditional software development life cycle does not have risk management capabilities, only that they are different, and especially, do not retire risk as early. The basis of the traditional lifecycle is that risk of unknown is mitigated by doing ALL of the analysis and ALL of the design up front, in an effort to optimize the development, which is thought to be the risky portion. I think that modern software tools, paradigms and techniques have made the development less risky, which means that the risk is more likely that the requirements that we captured change over time, or simply were inadequate, and that we cannot retire that risk, until we put software capabilites in front of users. That is where agile practices take us – in exactly that way.

Agile Value Delivery

Agile practices claim to delivery greater value to the customer.  This claim is based on agile tendencies to deliver software capabilities more frequently, which in and of itself, means that the customer starts realizing value from our efforts sooner. OK – this one is obvious. Traditional phase gated life cycles effectively require you to do all the work through each phase – all the requirements, all the design, all the development, all the testing – before any value is actually delivered to the customer. Agile practices – actively proclaim (this is not a passive benefit, but an assertion of the philosophy) that it is better to finish the smallest increment of usable software capability and deliver it to the customer as early as possible.

While agile does not claim to have invented this concept, it does seem to have taken it to the extreme. Here is the “thing” – in a corporate culture where results are measured in quarters and not years, the faster we can implement even incremental improvements in work process, the faster we can show results (cost savings, risk mitigation, staff headroom, etc). The balancing factor is how frequently/rapidly can the organization assimilate change. Yet, even in an organization that is not particularly good at change management, the early delivery of value emanating from agile practices, puts the organizational management in the drivers seat. You can have a “pile” of completed, validated software changes ready to go, and you control the pace of change by scheduling releases. Whether the company wants two releases per year or twelve doesn’t matter to the team – because they just keep piling up the value and the customer controls when it is released into the enterprise. The customer controls the sequence of value that is being piled up, and the customer controls the timing of when the pile is rolled out.

Here is how it works pragmatically:

1) The customer constructs a list of valuable changes (scope).
2) The customer ensures that the list of changes are organized by sequence of delivery (converts scope to a backlog).
3) The team and the customer analyze (write requirements and estimate) these valuable changes in sequence and decide how many of them can be done in a measurement milestone (sprint).
4) The team delivers the changes (designed, coded, tested) for customer review.
5) The customer reviews the delivered changes, and adds any observed deficiencies to the backlog.
6) Repeat steps 2 – 5

One of the things that agile does, simply by sequencing by deliverable value, rather than by skill or life cycle phase, is that it makes it easy to decouple releases from life cycle phases. In a phase-gate lifecycle, I can’t release until all phases (analyze, design, code, test) are complete. Using an agile lifecycle decouples release from phase, because it assumes sequencing by deliverable, instead of sequencing by activity. Other than the “extra” activities required to release (regression testing, data conversion, code migration and deployment) the software itself is continually in a “releaseable” state.

This change in sequence assumption actually gives the “customer” more control over what order value will be delivered in, and allows them to alter the order of value delivery without loss of productivity. This is true, when the order is not altered during a measurement milestone, but for the next milestone, because very little work is done on deliverables before the milestone begins. In a phase-gate life cycle, all of the analysis is done for all deliverables before the design starts, all the design is done for all deliverables before the code starts, all the coding is done before the testing starts, etc – so the later you alter the scope (or change the sequence by swapping one scope item for another) the more completed work you are “throwing away”, which becomes lost productivity or waste. This is why everyone in phase-gate life cycle works so hard to avoid change in scope – we use change control because we recognize that change after analysis is complete means lost productivity.

Now of course WE ALL KNOW that it doesn’t really work like that in phase-gate life cycles – phases are allowed to overlap, and plans are optimized for dependencies, and we can carry risk of unknowns for later analysis or design on our projects – but because of the assumption in sequence by activity inherent in the life cycle model, these things add complexity to the planning process, and to the measurement process, and to the execution of the project because they are execptions, rather than the rule. This complexity itself has a cost in lost productivity and extra coordination or collaboration. The point being that because overlap and deferred analysis are inherent to the agile lifecycle, they do not increase the complexity of the project, plan, or execution, and the collaboration and coordination points are baked into the practices designed to implement the agile life cycle.

Running Agile

The key difference between agile and more traditional phase-gate life cycles is the key assumption around delivery sequence, and all of the implications emanating from that assumption, especially the greater control of delivery of value afforded to the customer. It is this greater control over the delivery of value that the term agile describes – agile life cycles respond to changes in strategy, direction, market conditions, available budget much more gracefully, and with much less drama than traditional phase-gate life cycles. This is a direct win for the customer, and as such, can be sold as an advantage for the provider.