Stop Agilizing Everything

Introduction

Agile universities, certifications, agile consulting, traveling coaches, planning poker card sets, agile software products, agile modeling, agile arm bands, countless agile books and the crazed cycle of agile conferences.

WTF????

The buzz cycle is in overdrive and it’s electrocuted the business world with the promise of faster, better and cheaper.  This article is a plea to stop.  Stop all the hype, the opportunistic profiting, and the marketing.

Good Intentions Turned Ugly

What started out as a challenge to the software development community to think outside the box ( invent, create ), abandon a one size fits all model to approaching software development and execute your projects in a pragmatic fashion that takes account of the context you’re working in….has turned into a marketing machine of horrible dimensions.

There was a time when people talked agile and you knew they were on the vanguard; trying to solve the real problems.  They cared.  They were passionate, deliberate, and informed.  Now, when you hear a colleague professing agile…they’re most likely drinking the kool-aid poured by the snake-oil agile coach from Denver or San Fran.  The formulaic response to the core problems is all too familiar and draining:

  • Poor Requirements – You need user stories and iterations.
  • Defects in Software – Continuous integration and TDD will solve that.
  • Bad estimation – Use planning poker.  It always works.
  • Change Management – Break it up into iterations and embrace the changes given in iteration reviews.

I’m not knocking these techniques.  Many are novel inventions that do have their place in SD/AD.  But instead of being offered as potential options, patterns, techniques to solving a problem among many other potential solutions; they have become a sales pitch by the opportunist preying on desperate CIOs.  Buyer beware.  Bubbles pop and my gut says the needle to prick this balloon is getting very sharp and close.

Let’s stop agilizing everything. Good ideas, tools, and techniques don’t need the word ‘agile’ pre or post fixed to be worthwhile.

Come Back Home

So turn off the scrum-o-matic. Wipe the agile makeup from your face, and put the kanban sequin dress away. There are still problems to solve.  We haven’t unraveled this thing called software development.  It’s devilishly vexing and we need good minds focused on it.  Become neo-software-amish, come back home to the forest of software trolls and invent/create again.

Advertisement

Software Feature Dilution

Introduction

Business analysts, requirements managers, and project managers will find the greatest interest in this article.

Software Product Planning

It occurred to me last week during one of our weekly iteration planning sessions that one of the most esoteric methods around product planning is deciding which requirements to turn into software features.  The more rigorous approaches look at the cost of the feature, the potential impact to ROI ( assuming there is one ), and the demand.

What’s wrong with this approach is that it considers the features and resulting requirements in isolation from one another.  By not considering how each new feature affects the existing product as a whole teams can and do end up with products in which the original feature set, that made the software successful, become diluted.  Those of you who’ve worked with me know my favorite example is CA’s Remedy product, but I think one could find other examples: the Microsoft Office suite of products may be in this camp.

Feature Dilution:  A Formula

So how would one go about constructing a measurement for feature dilution?  First – some assumptions:

  • You know or can retrieve the cost associated with the original marketable software release.
  • You know or can calculate the benefit ( ROI ) for the original marketable software release.
  • You have an estimated cost and benefit associated with any potential new software features.

Ok, so knowing these let’s construct a model for software feature dilution.  We’ll adapt a formula from the world of finance.

V – Value of sofware after Feature dilution =

((O x OP) +(N x (∑ IP1, IP2….IPn))) / (O + N)

where…….

O = original number of features

OP = Current NPV of product ( could use ROI too )

N = number of new features to be added

IP1, IP2, IPn = NPV of each new feature.

If you run this formula through some examples in time what you’ll find is that as a product matures new features need to continually generate greater returns to justify value to the original product and ultimately diluting the existing feature set.

This is exactly what should happen if we want to avoid the fate of an overly complex and unmanageable software product.  Just like stock market share dilution the product management team needs to justify that further feature dilution will grow the value of the product in terms of existing functionality…..not just that it will add to revenue.

Summary

Simplicity in software design has always been something great software architects knew yielded great products.  With this formula I hope I have provided at least a start to measuring simplicity in software.

I’m Skeptical on Agile – Sell Me

Introduction

This article will address a common reaction to those presented with the possibility of adopting agile in their enterprise: skepticism.  CIOs, application development managers, directors, and senior architects will glean the greatest insight from this but development professionals and project managers will find interest too.

On Being Skeptical

As a software professional your skepticism is not necessarily misplaced. There are plenty of agile coaches in the market today professing to deliver faster, better, and cheaper on a regular basis.  Their message is honey in the ears of the right executive.  It becomes even sweeter when you consider the economic climate that many businesses are facing today.  There is opportunism here and it would be well advised to vet any agile coach.

How do I know an agile coach is worth the money?

I’ve devised a simple matrix ( below ) to help guide one in validating an agile coach.

Weight Coach 1 Coach 2 Coach 3 Coach 1 Score Coach 2 Score Coach 3 Score
Number of Projects Managed 3 2 17 3 6 51 9
Years of experience in SD/AD 2 5 24 7 10 48 14
Highest Budget Management Experience ( 1 = true, 0 = false ) 1 1 1 0 1 1 0
Number of References Validated 3 3 8 1 9 24 3
CSM Certification ( 1 = true , 0 = false ) 1 1 1 1 1 1 1
PMP Certification ( 1 = true , 0 = false ) 1 0 1 1 0 1 1
FINAL SCORE



27 126 28

So let’s talk through this matrix a bit.  First, I give pretty heavy weighting to experience here.  In truth we’re not just looking for an agile coach we’re looking for someone with the battle scars of being in the AD/SD world and knowing when and where agile works vs more predictive methods.

We also want to know that they’ve actually implemented agile methods in other places hence the need for validating references.  The key word here is “implemented”.  There are plenty of folks who can regurgitate the agile manifesto and paraphrase the thinking of leading agile theorists, but agile coaches should show a track record of making it happen.

Budgetary management experience, in my opinion, is essential.  If they haven’t managed the dollars/euros/yen around a capital project ( or operating costs ) then they may have a very misguided notion of why projects succeed or fail.   The CSM or PMP who was merely accountable for a timeline with only a misty concept of how it related to money is ill-equipped to profess a transformation of your SDLC process.  Why?  Agile techniques profess delivering software in iterative cycles ( every 2 weeks ).  If some level of requirements aren’t complete by the end of each iteration you have two options on a fixed bid capital effort:

  • Don’t do that functionality.
  • Postpone it until you do have the capital available.

This sounds fine in theory, but the truth is that every system has some minimal set of requirements that must be completed for the software to be functionally usable.  If the money runs about before the agile projects succeeds in delivering this minimal functionality then your project will be seen as a failure.

Certifications show learning of theory.  I weight them low, but still think its practical to have these ( Certified Scrum Master and Project Management Professional ) if an agile coach is selling himself as a professional in software development delivery.  They should understand and know agile as well as more traditional management concepts and techniques.

Lastly, you should realize that agile adoption is not just a function of the agile coach.  The organization needs to be willing and able to accept the changes agility will introduce.

But my current process works, so why should I switch to agile?

If you have a working process and there is no immediate need to push you to agile then you should take the time to map out a strategy for your development shop.  Agile can be beneficial and Ryan Martens at RallySoft does a decent job of articulating when agile methods can benefit a development project.  His rendition of the Uncertainty vs Complexity diagram proposed in Stand Back and Deliver gives an AD manager a basic tool for plotting his/her projects along these two broad metrics.

project-types

What are the benefits if agile is applied to the right type of projects?

Better Risk Mitigation – Agile methods emphasize iterative delivery of software.  A standard cadence and check point to the project sponsors allows for defects, requirements misunderstanding, and general issues surrounding the effort to be mitigated on a timely basis.  Couple this with a daily stand up meeting where team members determine how to resolve issues and coordinate work and risks to the development effort are generally better managed.

Testing starts earlier – Agile development emphasizes vertically slicing your application and developing functionality incrementally.  This is a technical challenge, but assuming the development team can tier the system architecture this way, then your testers can usually start functional testing much earlier in the development cycle.

Increased Sponsor Satisfaction – Project sponsors are involved routinely through agile.  The developers have a direct line to the customers.  This continuous feedback loop usually leads to better communication and understanding between the team and customer.

Stronger Team Accountability – It takes time, but as the team culture shifts from command and control to a collaborative effort where developers take responsibility, collectively, for their work; the team begins to see how their efforts help/hinder the project.   An adjunct to this is an increased sense of pride in their work and kinship with each other.

What do I need to watch out for when adopting agile?

Cultural Shift – This can’t be under weighted.  Agile places greater emphasis on the team managing itself and its day to day activities. Subtly, agile preaches two things:

1. Development team and customer working together.  Meaning other managers and IT leadership have a de-emphasized role.  Your risking attrition by some of your better players if you ignore this.  Proper coaching and preparation for this change and its effect on roles and responsibilities is essential.

2. Team stepping up and coordinating activities among it’s members.  This is normally done by a PM or Dev manager or even a senior technical leader.  Some methodologies, like Scrum, emphasize a new role ( scrum master ) to take on the facilitation aspects.  For developers unaccustomed or uncomfortable with organizing and planning this may be difficult.

“Documentation is not needed”  – You may hear this from some agile coaches and theorists.  The original agile manifesto emphasizes working code over documentation, but as a development professional you’ll need to decide if this really makes sense  for your project.   Some of us have regulatory and legal reasons for documentation.

Dogmatic Views – I wrote about some of this in Bad Attitudes of Agile, but some team members will see agile as a very strict set of practices and may twist the theories and methodologies to suit their own ends.  By its very description agile is meant to be a flexible approach to software and application development not a rigid set of rules that cannot be altered.  There are the pragmatic agilists and then there are the agile zealots.  Watch out for the latter.

Summary

Benefits can accrue from agile methods.  These benefits, for the right projects, should result in better quality, reduced cost and schedule variance associated with requirements misunderstanding and defect management, and a more complimentary relationship with your customers.  As mentioned earlier skepticism is not misplaced, but by looking for an opportune experimental project to introduce agile a development manager can assess its applicability for his/her shop.

Requirements Documentaries – A Recipe

Introduction

In previous posts I’ve talked about how written requirements are on the decline and how our development methodologies and practices, at least in part, are constructed to hedge the risk of misunderstanding requirements.   As an outgrowth of those posts I’ll talk here about my vision for Requirements Documentaries as an alternative to written requirements and user stories.  I hope by the end of this post a formula will emerge for crafting video based user stories into a persistable set of requirements documentation that captures much of the context around a project.

Preparation and Coaching

How do you prepare the team for video recording?  While the discussion should be as open and natural as possible:  some coaching should be required here.  Meetings of all stripes tend to deviate from their course and sometimes into topics that are not appropriate for the organizational culture.  While these things can and should be edited out for the purpose of requirements documentaries; the team and customers should receive coaching ahead of time on how best to present their views and what topics/situations to avoid.

Other good tips should be included like: speaking clearly and loud enough for everyone to hear, avoid bad behaviors ( picking nose, tapping on the table, etc ).   We want it to be natural, but we also want it to be professional.

Tools

I believe this is a simple, cost effective set of tools that would serve as a basis for delivering requirements documentaries.

  • Whiteboard(s)
  • Wiki or requirements gathering tool ( Jira for example ).  A tool that can track versions.
  • High quality video camera(s) with sufficient battery life and backup batteries.
  • Digital camera to capture whiteboard sessions.

The Role: From Requirements Manager to Producer/Orchestrator

The role to facilitate requirements documentaries requires some new skills.  I’m calling this role “Producer” or “Orchestrator”.   But I don’t want everyone getting caught up in the title here.  It’s the skills and abilities of this role that are important.  Those are:

-Video production:  a solid understanding of digital video technologies ( hardware & software ) is important.  But additionally the person should have some training/understanding of how to make a documentary.  This would include how to edit the videos for applicability, ease of understanding, and dissemination to a heterogeneous audience.   Furthermore, this role would understand lighting, how to stage a scene, and related concepts in film/video production today.

-Facilitation & Coordination:  any good requirements manager today has to have some level of facilitation and coordination skills.  This will be instrumental when discussing the requirements, but also important in getting the right folks together to produce the documentary.  Discussions could veer off course, and it will be important for the orchestrator to guide the group back to the topic so as to make the video relevant.

-Detail Oriented:  goes without saying, but with the video medium, details may need to be clarified through, what I’ll call, adjunct clips and whiteboard captures.  So attention to detail doesn’t change, but the mediums of collection and dissemination may pose challenges for a traditional requirement’s managers.

-Organized:  just like today’s requirements the videos will need to be stitched together in some kind of wiki and organized in a manner that coincides with the software release.  Any adjunct items ( whiteboard captures, additional videos ) will need to be issued as modifiers to the original video.  In addition the orchestrator will need to keep his meetings, resources, and notes well organized.  More preparation may be needed to gather requirements in this fashion, but the benefit will be the greater context it brings to the developer’s work.

-Creative:  a little creativity to make the videos more enticing and “watchable” would be valuable.  However, we need to be careful here.  Too much creativity and the videos become more of a movie than a documentary.

-Provacateur:  a good requirements manager today thinks through the questions and challenges those in the room on their assumptions.   We still need this skill and it becomes even more important with video production.   Unless we want to issue continuous sets of adjuncts after each requirement documentary; we’ll need to flesh out as much as we can up front.   Please note, that I’m not suggesting BDUF here.  We can have 5,6, or however many requirements documentaries we need to form a release, but each of those main documentaries may have many adjuncts that clarify or modify anything missing in the main video.b

Method & Utilization

The process below could be done in an iterative or waterfall fashion.  It should be methodology agnostic.  My recommendation would be to start using this on a small, non-critical project in your enterprise.  See how it works and decide how to scale it from there.  I see this as a technique pattern for situations where your requirements may change frequently, have a complex and intricate data domain, or your team is global.  Lastly, I do realize this process is fairly basic……my intention is to start high level and as we see what works/doesn’t work we iterate back through and add more details or changes.

Potential Issues

Fear of the Camera – This is probably one of the most difficult issues.  Some folks have trouble speaking up in meetings…let alone in front of a camera.  So a sufficiently skilled orchestrator should recognize when this is occurring and attempt to bring that person into the conversation or, if completely unwilling to talk up, the orchestrator should pull that person aside, after the meeting, and have a candid discussion about whether they would like to continue participating.  It may be necessary to get a proxy to stand in for him/her.

Change – Using requirements documentaries is a big change in format.  It won’t go smoothly at first and that’s why I recommend approaching it on a small non-critical project at first.   Work out the kinks, and the issues with a group that sees the potential benefit.   Use all your change management skills and recognize the loss cycle associated with any big change.  Some may see it as opportunity, and yet others will see it as a threat.

Equipment problems – one of the reasons I stress using 2 cameras ( video and still ) for recording the requirements events:  Murphy’s Law.

Legal, Organizational Policy Issues – in some countries and companies recording by video is against the laws or corporate rules.  Check with your counsel before embarking on a project using a requirements documentary.   Legal representatives and corporate leaders who see value in this method may need to sit down and amend rules to allow this form of requirements gathering.

Politics – Recording things on video is a way of preserving the context around the requirements in addition to the actual meat, logic of the system.  It’s intended benefit it to preserve for future team members and current team members the mood, background, motivations, and reasoning behind what they are building.   This is the ideal side, but there is a less rosy edge to this.   Politics arise in almost any company, and documenting decisions on video could open the door to misuse for devious ends.   A company’s leadership embracing requirements documentaries should recognize this and put controls in place for those seeking political gain from manipulating the format.

Summary

Requirements risk exists on all projects to a greater or lesser degree.  The intention of this technique is to help mitigate that risk and provide continuity through time for a system’s definition.  I don’t suspect this will alleviate all requirements issues.  I’m too jaded by experience to think there are panaceas to every problem.  But there is some good evidence in the world of psychology and Hollywood that motion pictures are more memorable and understood more easily/rapidly.  You can see this for yourself.  When you left the theatre after seeing “The Green Lantern”  did you not understand it?   Was it totally lost on you?  Now what if I drafted that movie into a requirements document?  Logic aside…my hope is that we can catch our requirements gathering process up with the technologies that we have today for gathering that information.   If you try this technique….feel free to comment and let me know your experiences.  I’ll be anxious to hear them.


Agile vs Waterfall vs Lean Startup : Who Cares About the Labels?

Labels

After reading Shane Hastie’s latest InfoQ article:  Lean Startup or Agile or Lean Startup and Agile?  it became clear how much we’re all getting caught up in labels and methodologies.  My thought:  let’s drop the flag waving, become pragmatic in our approach and recognize that context plays a crucial role here.   What works for Eric Ries and his start-up may not work for the company you work for and the project you’re currently executing.

The Real Value – Techniques & Tools

The value in methodologies like Agile, Scrum,  Lean Startup,  Waterfall and others is in the techniques and tools they bring to the table.  While they are each packaged with a neat title and some intelligent proponents; we don’t need to use these in a take it or leave it fashion.  Be pragmatic and assemble your own toolkit.  I’ll reference Scott Ambler and say “context matters“.  We all need to move towards a collection, library of project and product management patterns that can be adopted within certain contexts.

Innovate 

Lastly, what’s invigorating about these debates is that we’re growing as a field.  We’re rethinking our ideas, and not settling.  This can only be good for software development and those affected, infected by it.  Yes, I meant to say “infected”.  🙂

Who Should Be the Scrum Master?

Who is this article for?

All software development professionals will find interest in this article, but those hoping to adopt agile, and scrum in particular, will find the greatest interest.

Project Manager or Technical Lead

Who should the scrum master be?  There’s at least two schools of thought that find gravity with this question.   One position is to employ the project manager in this role.  Another position is to have your technical leader tackle the position of scrum master.

Justifications for both can be made.  The project manager naturally has the people and process management skills required to successfully unblock nettlesome issues vexing the development team’s path to productivity.   But on a deeply technical project, unless the PM is fairly technical, he/she could end up at a disadvantage to a more traditional technical lead.  Hence, the argument to have your key development lead be the scrum master is born on the wings of a sufficiently technical project. Of course, this later position has the down side of potentially drawing the Peter Principle forward in all its majesty.  You hired Sam for his technical ability and now your taking him out of his strong suite.   Rarely a good move.

What about a CSM?

With the emergence of the Certified Scrum Master ( CSM ) credential software development directors are asked whether it makes more sense to get a professional scrum master to do the job.  This seems logical, and in some cases may present the right option.  But for those with experience and discernment, a certified anything is only a guarantee that the individual has at least passed some training and testing.

CSM’s may come to the role with the theory locked down, but it would be advisable to ensure they’ve ‘done it’ and can ‘prove it’.  A heterogeneous grouping of experiences and project types would be a good background for any CSM.  Awareness of any subject matter is important, but knowledge gained a priori has its limitations in the field of software development, indeed most worldly pursuits.  Experience counts deeply, and those who’ve been salted through the mine fields of time and circumstance can and do turn tricks the books don’t tell.

Rotate the Scrum Master Role Among Developers?

This seems like an interesting idea.  Seems is the optimal word here.  Rotate the role among developers and give them a chance to self organize.  After all, this is one of the scrum principles.

Boldly, we did this in my shop.  I can tell you first hand…it doesn’t work very well.  The results were not disastrous, but mixed and inconsistent.  The scrum master is there to facilitate and unblock key issues and risks.  By nature, most developers are not wired for these skills.  In most cases their preference is to solve deep, but abstract problems and/or utilize their creativity to bring their imagination into the world.  The scrum master’s world is never abstract and the problems rarely have a logical conclusion.

Here’s some examples of what occurred during our rotation experiment:

Developer 1 would take all blockers to the development manager and ask him to unblock them.  Dump and run.

Developer 2 saw the scrum master role as a break from developing software.   He was increasingly sick of writing code.  He’d often take over the other developer’s turns as scrum master and before long became the defacto scrum master….just because everyone else didn’t want to do it.  But he wasn’t good at it.

Developer 3 just wouldn’t do it.  When asked why…he gave the perfectly logical answer: “I wasn’t hired to do that job.  I won’t be good at it.”

Developer 4 was great at staying on top of all the details, and orchestrating/facilitating the scrum process, but his natural timidity meant he found it difficult to press upon others for project needs.

Qualities Not Titles and Credentials

So what are we left with?  If job titles, credentialing, and current software development roles offer no guarantee of a successful scrum master than what does?

Here, I would contend, from experience, that the qualities below are essential for a successful scrum master.  These may differ from more traditional scrum teachings, but I offer them up as opinion and reflection to the agile community.

A Driver – First and foremost the scrum master should be a bulldozer.  The person filling this seat should feel comfortable pushing issues forward and untangling gray, often ambiguous problems unaided by higher-ups.  I do believe this differs from the views of Scott Ambler, Ken Schwaber and other scrum proponents.  When they speak of a ‘coach’ one gets the sense the ideal candidate would be equally comfortable leading a Little League Baseball team.  But organizations with size and high market caps are serious and very adult places requiring thick skin and persistence forged in steel.

Detailed and Organized –  This really goes without saying.  A scrum master that is uncomfortable with the details of the software architecture he/she is helping to birth into the world is headed for trouble.  One doesn’t need to be reading the code, but it would be beneficial to have the skills to speak with developers on their level and translate those into business speak.   Being organized is also a natural quality for a scrum master.  As orchestrator of the scrum process he won’t gain any points from the team if he forgets that today is iteration planning or can’t recall which stories are resolved.

Honest With Himself/Herself – No one likes a liar.  It’s easy to be honest in the face of fair winds and successful deliveries.  But, when the rice pudding hits the fan and the scrum master and team are to blame:  a solid scrum master will set the example, take responsibility for the mess, apologize, and find a corrective course of action.  In a nutshell: lead.

Politically Astute – The nuances of human behavior and relationships inside organizations that scale to 3M and GE proportions are not to be trifled with.  A bulldozer needs to know when and where to stop plowing and let a more suitable piece of machinery take over.  Further,  the scrum master should have a bag of tricks.  He should be comfortable in the art of persuasion, know the hooks and hot buttons that pull and push his key stakeholders, and see the organizational hierarchy as a tool rather than an impediment.

It’s Personal and I’m Fully Invested – In my experience, aloof scrum masters don’t do well.  They should see their role, project, and career as intertwined.  Their reputation should be at stake and success to them should be more than just a good stand up meeting, or a well orchestrated iteration review.  None of that matters should the product miss its goals. They should take this personal, and invest themselves fully in the project.  Again, this is leadership. Projects rarely fail because money, time or ideas are lacking.  Their usual course to being shipwrecked starts with….belief.  People need to believe the project will be successful and the scrum master should be its evangelist.

Humility – Lastly, I agree with most other scrum theorists that the scrum master should be humble.  I think this is called ‘servant leadership’ by them, but I’d chalk it up as just good leadership skills.  A good SM won’t boast or take credit for other’s work, but place credit where it is most surely due.  Let me be clear, I’m saying ‘humble’ not ‘without backbone’.

Summary

The picture that emerges for a good scrum master candidate is a leader; not a secretary or a bureaucrat.  My view on this differs from traditional scrum thinking.  Where they see a helper of the development team, I see the scrum master as an active, engaging and dynamic person with a big stake in the game. He or she could have certain titles or credentials to his or her credit or not.  Like so many other leadership roles the core of  what that person accomplishes will be manifested through who they are….rather than what hard skills they may possess.  When interviewing and reviewing potential candidates I would keep this question in your mind: Will the development team and stakeholders believe in this person?  Your project may rest on the answer.

Can Agile Work in Big Organizations?

Who is this article for?

All software development professionals will find interest in this article, but managers, CIOs and software architects will find the greatest interest.

Can Big Organizations Rapidly Change?

Think about the last big company you worked for.  Did it move fast?  Change overnight?  Did anything get done ‘quickly’?  Weren’t there gobs of jokes about the ‘bureacracy’.  Big companies run slow.  When they need to move fast they put people outside the organization or buy smaller companies.  Change is just not a priority inside a company like this unless it is facing financial issues and agile presents a significant challenge to the orthodoxy and bureacracy of such a beast. But is that a reason to not attempt agile in a large corporation?  No.  But it is a reason to have a different strategy for a change adoption.


Hybridization of Agile:  Pragmagile

Yes….but you have to be pragmatic.  What I mean is that you’ll need to realize that this bureacracy and the people in it were bequeathed their titles for a reason.  They’re successful, to a certain extent, because they know how to get things done despite all the red tape and foot dragging.  As an agilist, these people are not your enemies despite their gantt charts and stakeholder evaluation matrices.  They’re your allies, your tools to be upwardly managed.

So considering this I’ve compiled a list of tactics that I think may be helpful for any agilist hoping to succeed in a large professionally heterogeneous company.   Here they are….let me know if you agree?

1. Follow the principles of The Pragmatic Manifesto.   Key among these… is embracing everyone…not just the software development team.  See everyone as having value and being able to participate and contribute to your software development process.  Be pragmagile.

2.  Walk it, don’t talk it.  Show your company agile works.   Don’t go around preaching it and extoling its virtues when you haven’t even delivered one project yet.  You might even want to avoid the word ‘agile’ altogether and just say this is how I like to work:  meet every two weeks, go over any changes, hedge the risk that we don’t understand, and adjust project course as needed.

3.  Help your project sponsor help you.   Your project sponsor in a large corporation is likely a veteran of the company.  Don’t discount this as ‘stuck in the old  ways’.  They know stuff you don’t and they can help you stay in good graces with all the red tape barrons.   Keep a solid, open and agreeable relationship with your project sponsor.

4.  Give a little, get a little.  Another way of saying this…….don’t be dogmatic.  If someone doesn’t like some aspect of your agile approach don’t automatically write them off.  They may have good reasons for their objection, and by showing your concern and willingness to adjust…..you’re demonstrating a core tenant of agility.    If stand-ups are hard for people with back issues, then try a 15 minute conf call.   If the customer just can’t meet every two weeks, then try every month or on a more lucid schedule.  But above all…….be flexible.

5.  Focus on the goal.  Delivery of your project/product is what you’re after.  Not agile adoption by your company.  Maybe you’ll get this as a side effect, but honestly…….you probably weren’t hired to evangelize the enterprise. Furthermore…you can’t do it on your own.  Put your accounting hat on and think hard-ball.  Git-her-done.

6.  Seek to understand the culture and the history behind it.   Maybe your company doesn’t move fast on this software project because your building something that its enormously complex and could kill someone if not done right.  There may be very good reasons for stifling rules and countless reviews/approvals.  Work with the grain of the wood…not against it.

7.  Stop assuming everyone wants to be agile.   Worse yet, stop assuming everyone knows what it is.  They may have heard about it and chalked it up to no  more than a new process.  But those of us who’ve lived it know that the real change is cultural.  It’s a tough shift and it won’t happen overnight.  Be patient with those around you.  They’re trying to learn and you’re there to help them along.  Be prepared for the guy who says “Agile sucks and here’s why…”.  He may have valid reasons for his opinion and discounting him will only deepen his view.

8.  Figure out the commitment level up front.  I wrote about this in another article:  Are You Committed?   But, essentially the team is supposed to commit to the iteration at hand.  But….what does that really mean?  Commitment is one word with many different interpretations.  Don’t assume you know how much the team is willing to commit and don’t assume that the companies HR policies and benefits jive with the agile philosophy.

Summary

That’s it.  I know I probably should have run it up to 10 ( don’t all good lists round up to 10? ), but I’m not going to throw down fluff just to reach a number.   It’s been my experience that if you make agile work in an organization people will just naturally ask you:  what’s your secret?  Why do your projects work out while other projects fail?  If you get to this point then I guess it’s ok to preach a little bit, but step off the soap-box when you feel your head getting bigger.   😉

Are You Commited?

Scrum Commitment Drama
So you’ve figured out team capacity, you’ve planned your iteration, and the scrum master looks around and asks everyone if they are willing to commit to the iteration.  What does he mean?  Is he referring to how many days you’ll be available to work during the iteration? Or is he referring to something deeper….an emotional state or pledge of some kind?  How do your colleagues understand commitment?  How about management and the business owner?  It probably depends on what company you are working for, but more deeply….the answers seem to come in two flavors:
  • commitment to complete the stories and tasks within the iteration time frame.
  • commitment to *try* and complete the stories and tasks within the iteration time frame, but you’ll probably need to move some to the next iteration.

This nuance can’t be understated.  Those of you working on scrum software development projects know what I mean.  Colleague A is a realist and thinks commitment is putting in 8-10 hours a day and making every attempt to complete the work knowing he has a family and other commitments.  Colleague B sees Colleague A as a slacker.  Colleague B is a driven visionary that regularly puts in 10 hours or more per day and is willing to do ‘whatever it takes’ to get the iteration complete.  He manifests himself through his work.  So who’s right about commitment?

Your heart might swing you one way or another as you gravitate to the view that most closely mirrors your circumstances.  But the point of this article is to weigh both and hopefully find some commonality that mitigates the drama and machinations around ‘commitment’.

Why is this important?
Misunderstanding the nature of the commitment to the iteration is a source of team tension and a potential sinkhole to productivity.  Does it have to be?  Probably not, but before I go too far I’d like to point out that it’s not just Scrum and Agile iterative planning that have this dysfunction.   Rather, agile methodologies, with their open culture and self organizing, bring to the front what is often tucked neatly in the corporate closet.
Commitment – How do you define it?
A good question.  And like many good questions it should be asked up front….in the interview.  No one wants to walk into a job and find the level of commitment asked is not what they are willing to give.  That’s fair, but this presumes the scrum team knows the answer, they’ve defined what commitment means for them.  How many scrum teams can say they’ve done that?  If you’re like most….the team is polarized by the two views first mentioned with shades of gray in between.  So how do we define commitment to an iteration?  What are some options so that when we ask during an interview; we know what we’re looking for.

Mission from God
This level of commitment isn’t for the faint of heart.  When you joined this scrum team you signed with your own blood.  All stories in an iteration “HAVE* to be completed….the velocity is law.  No exceptions. Commitment here is a spiritual, emotional exercise in discipline and belief in the product.  Seem crazy?  Maybe.  But before you dismiss it; there are industries and situations in which this completely makes sense.  Some examples:
You’re at the absolute dark bleeding edge and trying to keep your technological advantage.
You’ve created a startup and money is not exactly flowing like water.  To keep you’re funding you must deliver.
Heavy competition is driving the need to be first to market.
That’s the culture…..”it’s what we do.”

The drawbacks to this mode are known, but worth stating:  burnout, setting up expectations you can’t sustain, and a work intensity that excludes many good candidates.

Time Bound
A less demanding road to commitment is the time bound agreement.  It might work like this:  We as a team agree to work between 40 and 50 hours a week and believe the stories in this iteration represent that time.   For those who come from the “mission from god” shop this would be called a ‘union mentality’.   However, it does have it’s place, and gives those with families, friends, and hobbies a chance to hang on to those commitments as well.
This team will ideally try to achieve their velocity each iteration, but has an open gate to move stories to next iteration if the team has met their time commitment.  The drawbacks:  Commitment in time, space is achieved, but not in spirit.  Do those hours include lunch or not?  What about smoke breaks?  It gets nettlesome when you start counting the clock.
Stair Step
A more proactive response to managing your velocity and defining commitment is using a stair step model.  It works like this:

  • Team velocity is 40 story points.
  • Iteration 1 the team commits to 35 story points.  An easy iteration for them.
  • Iteration 2 the team commits to 45 story points.  Not easy, not hard.
  • Iteration 3 the team commits to 55 story points.  This is a stretch.  They might make it ; they might not.
  • Iteration 4 the go back to committing to 35 and repeat the stair step again.

This allows the team to proactively engage and manage their iterations; segmenting them into simple jogs, brisk runs, and marathons.  The team then knows upfront that which iteration will be a tax on their personal life and whihc one will give them more freedom.  Drawbacks: it sounds ideal but you’ll likely have folks find excuses to be ‘out of the office’ during the marathon iteration.

Grouping

This concept works well if you have multiple scrum teams.  Here’s the scoop:

1. Team A’s velocity is 40 story points and their commitment is ‘Mission from god’.
2. Team B’s velocity is 28 story points and their commitment is ‘Stair Step’
3.Team C’s velocity is 20 story points and their commitment is ’40-45 hours a week’.

The advantages are obvious:  new employees can fit into the organization regardless of their personal commitment levels,  a tiered or group approach allows a team member to try on different levels of commitment, and those of like mind get to work together.

Drawbacks:  requires a big software development project(s) and budget, competition/hostility might erupt between teams, and poor performers may gravitate to one team…giving that commitment level a bad name.
Leveling
Leveling is stair stepping by individuals.  Team member A might put in a hard iteration this time.  Team member B might put in an average effort.  Team member C gets it easy this iteration.   Next iteration they rotate roles.

Making the Decision
This is only a partial list of ways to address the commitment conundrum.  Whatever choice is made; it won’t be perfect.  Poor performers and top tier talent routinely clash.  Objectively defining commitment is only half the battle.  The other half is getting the team to follow through on that commitment.  This comes down to solid leadership skills from your scrum master and others.  A framework needs to be enforced if it is going to be effective, trusted and used by the team.
However, getting to an agreed commitment level is essential if you want your velocity to represent the optimized potential of your team.

Summary
Ultimately the scrum team’s goal should be to produce on a rate that is consistent with their potential.  Making certain everyone understands and agrees to the commitment level up front removes a blocker before it manifests itself.   Some may read this article and say, “Commitment is a function of story points.  You let your team run a few iterations and gauge the average number of story points they can complete.  That gives you your velocity…which forms the basis for your commitment.”   There are two problems with this:   the foot dragging team that ‘games’ the system and sets its velocity well below what it could do, and the perception of effort from those who are paying for the project.

In the first instance the team is composed of individuals who are less than honest for one reason or another.  It is hard to know this up front, but if left unchecked your project will suffer financially and materially.  Setting the tone and agreement up front takes away the possibility of misunderstanding the nature of the commitment and gives you a more solid understanding of how the velocity came to be.

In the second instance ,while the project may get done at a velocity level that is lower than what the team could achieve,  the risk is that the product owner will feel they’ve been taken for a ride, and “this agile thing is a way for developers to goof off.”  If your velocity is 40 story points but the team seems capable of taking a 2 hour lunch twice a week and doesn’t show up till 9am and leaves by 4pm;  the commitment is going to be questioned.  Dangerous?  You bet.  The options for fixing such a scenario are dire.   So, to mitigate such a risk up front it behooves the scrum master to set and agree to a commitment level up front; making sure the product owner is in agreement.
Finally, human motivation and desire to do any task is not strictly limited to working agreements.  If  after agreeing on your commitment level; the scrum team still is not performing  well then further investigation is warranted.  An agreed commitment level puts lines and boundaries on the playing field;  but your team’s willingness to win will be an alchemy of many variables.

Why Does Agile Adoption Fail In Some Organizations?

Introduction

How often do you hear that a company attempting to adopt agile practices fails?  This article attempts to examine and explain the often overlooked key organizational reasons that agile fails, why it isn’t obvious to most of us and some potential strategies for coping with organizational impediments.  The article’s target audience is managers with budgetary responsibility although technical groups might also find interest.

Historical Perspective on Agile

Where did agile practices originate and why? The Agile Manifesto was originated by a group of software developers.  Their main pupose in creating a new software development methodology was to address some of the core problems with traditional waterfall techniques, specifically: risk around changing requirements, late feedback from quality assurance, and accountability of the development staff.  Their focus was not on how this methodology worked with the budgeting and financial aspects of a funded development effort.  In the information technology world there are two types of funding models.  One is a large  company that sees the software product as its bread and butter or at least a key differentiator for its business model ( think Oracle, or Scotttrade ). We’ll call this company X.  The other model is a company whose development effort it not critical for their overall business model and  the resulting funding is a fixed bid.  This is company Y.

Why is this important?

The answer lies in how the development effort is viewed by company X and Y financially.  In company X the software development effort is viewed as an investment, indeed the primary investment, in the company’s future.  In company Y the development effort is a small application and is viewed as an expense to be time bound and tracked.  In company X the team is funded.  In company Y the project is funded.  Read those last two sentences again.

In company X agile will succeed.  In company Y agile will fail.

In a fixed bid development effort the software development is intended to end at some point. Securing funding for the project requires that you define it up front, estimate it, resource it, develop it, test it, implement it, and then turn it over to support.  This is company Y.

In a time and materials funding scenario the company determines it has need for a software development team as there are many projects that require development well into the future.  An estimate of how big a development team they can afford is created for the budgetary time frame (1 year, 2 years), it is resourced, and then project scoping and scheduling are done.  This is company X.

See the difference?  In company X there will always be software development.  There is no end and the team is funded with that intention.  So putting that work in a backlog, prioritizing it, and estimating and reviewing it in time boxed iterations makes sense.

In company Y the effort can only afford to be funded for some subset of the budgetary period (say 3 months).  After that there is no more money or the company is unwilling to allocate additional money.  They don’t want a long term development team because they can’t afford it and besides there wouldn’t be enough development work to keep them busy anyway.  So deep controls and strong project management is required to ensure that something is delivered in that 3 month period.

Viewed this way…..financially, agile is a luxury.  It assumes that you’ll always have a software team and there will always be development work.  It assumes you’re team is funded year after year and you, as a manager, don’t have to worry about funding individual projects.  As an agile manager you’re primarily concerned with schedule, scope and capacity.  Budgets are an annual or bi-annual thing.  You flex up or down depending on the economic realities facing the company.  The criteria for success are largely centered on functionality delivered over time.

In company Y you might have $50,000.00 that is set aside to complete you’re project in 3 months.  Budgeting and expense tracking are critical and will determine whether the project is a success or not.  A manager here gets funding on a project level at various times throughout the capital cycle.  You may deliver all functionality on time and over budget, but that won’t be seen as a successful project.  As a manager in this company you are concerned with all 3 legs of the iron triangle.  Your team is likely temporary and staffed by contractor labor. Adoption of agile in this situation is a mistake…..even superficially. Why?

Estimation

The key lies in estimation.

In an agile software team you don’t estimate your work till right before you begin.  And you only estimate, in the case of scrum, the next iterations work. So how do you know how long it will take?  You don’t.  Furthermore, you really don’t care.  You’ll continue to deliver functionality every iteration.  As soon as product management and QA say you have a good enough product; it’ll be released as a production version.   You might have a guess, but until the team estimates it….you really don’t know long it will take.

In a fixed bid situation….your estimation needs to take place up front.  The company is asking you how much it will cost to build the application because they are unwilling to fund it forever.  They want it to end…….preferably sooner rather than later.  Funds are limited and your project, although perhaps necessary, is not viewed as critical to the company’s future.  Its ROI may even be negative.  Returning to the leadership of this company with the answer; “I’m not sure how long it will take….just fund the team for a year and we’ll see how it goes every iteration”  would be a mistake that would likely result in your dismissal.

In the 2nd scenario, if I told the team, after securing funding and hiring them, “we’re using scrum”: they’d estimate the work the next iteration. They would assume their estimates would be taken seriously and you’d give them time to complete the work as it unfolds regardless of whether their estimates fit your original project funding or not.  That’s only fair.  Unfortunately, that puts you as the manager in the uncomfortable position of submitting budget/schedule variances and/or cutting scope when you’re original estimate is proven to be inaccurate.  Hence, you’ve failed at managing the project and therefore…….”this agile thing doesn’t work”.

The mistake was to assume the company’s leadership understood and was organizationally committed to scrum and agile principles.  The mere fact that they are asking you to estimate the funding you’ll need to complete the project tells us otherwise.  If they had asked us, “How much does it cost to fund a software development team for the next 3 years?”  Then we’d be wise to approach it from an agile perspective.

The Real Problem

So, what is the real problem with agile adoption in organizations?  It can be boiled down to these points:

  • Agile assumes that the company wants a long term software development effort not a short term project.
  • Agile is often assumed by company leadership to be a development process with no impact on budgeting.  This is not the case.
  • Development teams assume leadership understands the implications of adopting agile at the budgetary level.

The complexity of these points can’t be underweighted.  Developers and development teams often have zero visibility into budgeting so they are unaware of how their agile efforts are being accounted for in monetary terms.  This is evident in so many agile articles on the web.  Likewise, management is often ignorant of development and specifically agile development practices.  Agile adoption requires education to ease the clash and misunderstanding of these two worlds.

So what are some of the consequences of attempting to adopt agile practices on a fixed bid project…essentially laying an agile façade over the waterfall project?

Story Points

Story points are often used on agile teams to determine the complexity of the work being done.  The number of points completed each iteration determines their velocity ( points per iteration ) and gives management an approximation on how much work can be completed in a given iteration.

If you come from a fixed bid shop like company Y your immediate question is, “How does this relate to hours?  How do I project costs and ROI?”  Truthfully, it doesn’t.  It isn’t intended to.  Again, the agilist is assuming you’re funding a software development team not a software development project.

In company X you could estimate things by hamburgers or cigarettes in each iteration.  It doesn’t matter.  You’re going to get the product done at some point ( +/-  functionality requested ).  The only real question is at what point to do we call it complete and release it to production.  Funding for the team is not contingent on estimation of effort.

In company Y project funding is directly related to estimation of effort.  It is critical that we tie this to time because our cost driver is often an hourly rate. Story points have no meaning here.

Scrum master vs PM

“Agile does away with the need for a project manager.”  Ever heard this before?  It’s scary for traditional PMs and unintentionally threatening.  However, it is correct.  If you assume that a team is funded year after year regardless of projected effort then the needs for organizing and managing the development effort are more centered on technical leadership, task and risk management.  Timelines and budgets go out the door. A scrum master is sufficient, preferable for getting the job done.

However, if you’re in a non-agile situation, like company Y….then traditional PM practices are not only valid, but essential to making sure the effort is kept within budgetary and schedule tolerances.  In this situation the leader of the development effort is being entrusted with precious company resources that can’t be wasted and needs to have the skills of a CEO-Lite.

A funded development team does change the project manager role.  A fixed bid project does not.

Daily Stand Up Meetings

Agile uses daily stand up meetings for a variety of reasons: motivation, risk mitigation, status, accountability, team building, etc.  It’s a good idea that is equally at home on a fixed bid waterfall project.  There is no reason this practice can’t continue to be used, but the team on that fixed bid effort has to realize that you’re not really doing agile and there is a deadline looming.  You also might want to weigh the time needs.  The daily stand ups should be short, but 15 minutes a day adds up when you only have 3 months of funding.

Iteration Reviews

With fully funded software teams that use agile the question of when something is done is answered incrementally.  Functionality is reviewed at the end of each iteration ( say 30 days ) and evaluated for readiness for production release.  Again, this is a good idea that could still be used in a fixed bid situation, but the business owners need to be coached to understand the iteration review as a risk mitigation and accountability technique and not a demonstration of the completed product.

Iteration Planning

Iteration planning really does assume you’re using agile in a team funded scenario.  It necessitates your costs are known and fixed for the budgetary cycle and that any estimates the team comes up with won’t play havoc with your budget.  Doing iteration planning in a fixed bid situation will almost certainly result in confusion, budget variances, and/or loss of functionality.

Burn Down Charts

Burn down charts show the progress of completing functionality in a given iteration.  They are a measure of team performance over time.  They do not illustrate how close the project is to completion.  If we were to sum all of them up…..they might show this, but given that they are usually used strictly for the development effort of a project; this won’t always be the case.

In fixed bid scenarios the question is not usually one of how much functionality the team is doing per time period.  It really doesn’t matter.  They need to get all the functionality done within the time frame that the money allows.

So using burn down charts and iterations in a fixed bid project sends the wrong signal to the team and your customers.

Summary

Firstly I would suggest that trying to adopt agile in a fixed bid scenario/project funded situation is not recommended.  Instead, as a manager, you should make the assessment of whether the company can support an agile practice/fully staffed development team through time.  If the company can; then you should use agile…it works well.  If the company can’t….then you’d be wise to stick with traditional project management practices.

If you determine that your company has the resources and the workload to support a software development effort but isn’t using agile then it comes down to convincing the leadership that agile makes sense for this effort.  Put on your change management and sales hats….you’ll need them.

Secondly, project manager and scrum master are not static roles and titles.  In one company a PM/SM may have budgetary responsibilities. In another they may not.  In some they may have direct reports in a traditional organizational structure.  In another the structure may be more matrixed and the PM/SM might have no direct reports.  I mention these differences because agile articles, like all writing, is written from the viewpoint of the author.  Too often what worked in one situation is attributed to being a superior process or technique…….when in actuality the organization and roles fit the process and technique.  Change the roles and organization and it might not work as well.  Context is often missing in the agile vs waterfall blogosphere.

Lastly, the agile debate is often likened to a philosophical war.  But from my experience and vantage the confusion is largely an outgrowth of misunderstanding.  Too often a technical manager hasn’t thought through the business implications of adopting agile.  Likewise business folks frequently misunderstand agile as being ‘some development thing’ with no relevance to how they just funded the effort.  I’ve been fortunate in my career to walk across the bridge of misunderstanding and see both sides.  Doing this has given me insight into the background budgetary assumptions that so frequently go unrecognized as the cause for agile adoption failure.