I’ve been lingering on this story from InfoQ for a while. If agile coaches need a code of ethics…then what does that say? Is this a further sign of the agile bubble popping?
I’ve been lingering on this story from InfoQ for a while. If agile coaches need a code of ethics…then what does that say? Is this a further sign of the agile bubble popping?
My latest news article on InfoQ – http://www.infoq.com/news/2011/11/tgif-conversation Enjoy.
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.
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:
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.
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:
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)
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.
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.
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|
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:
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.
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.
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.
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.
I believe this is a simple, cost effective set of tools that would serve as a basis for delivering requirements documentaries.
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.
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.
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.
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.
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”. 🙂
This is a manifesto for pragmatic software development. We are uncovering sensible, common sense practices for creating better software. We value:
1. TEAMWORK: Working as a team with our customers, our team members, and our leaders to accomplish the product, project and company goals.
2. FLEXIBILITY: Flexibly adjusting our practices and efforts to meet the needs of the product, project and team.
3. HUMILITY: Accepting that we don’t know everything and we should always strive to learn more and adjust our efforts as needed.
4. DISCERNMENT: Not get caught up in the latest buzz, but think for ourselves, our team, our product and our customers.
5. RISK MANAGEMENT: Realize that “risk” and the management of it, is the greatest determinant of software development success. This doesn’t necessarily mean we avoid risk.
6. TALENT: Recognize that teams are composed of people with varying strengths and weaknesses. There are no supermen. Sometimes we shine…sometimes we’re learning.
7. VISION: Seeing the future and present and crafting solutions that will address both.
If you believe in this manifesto…then do it. No need to sign up, attend classes, write books or pontificate. Just, live the principles.
Christopher R. Goldsbury
Who is this article is for?
This article is written for those with management and budgetary responsibilities for a software development project or team. Others, including developers, quality assurance personnel, and CEOs/CIOs may find interest.
Why would we need to estimate story point cost?
Story points are used to estimate work. Investment in that work is expected to derive some benefit. If that benefit is expected to be financial then understanding the cost of that work is essential to deriving any meaningful ROI. Even if no ROI is expected and the intended benefit is regulatory compliance ( as an example ) then company leadership usually wants to understand what how much of their limited financial resources is going towards any specific feature, iteration, or release.
How do we do it?
The technique presented here is a historical parametric approach. It relies on past data from previous projects. So, one has to have some of this data saved up before a reliable figure can be derived.
RC = Total dollar cost for a historical releases in a product
RSP = Total story points that contributed to that release.
RSPC = Release Story Point Cost
RSPC = RC/RSP
Once you have this for one release you should calculate it for all historical releases. The next calculation is an average:
Average RSPC per product = ∑ RSPC¹, RSPC²……..RSPCⁿ / N
If you want the story point cost across all products then average it again. Although, for most planning purposes it’s useful to plan by product line and this higher level of abstraction of cost might be too watered down.
What questions does this help answer?
How often should it be updated?
The astute among you will notice that we’re using historical data. Historical data is only accurate as long as change doesn’t take place. To counteract the shift and change in time size, capability, and mix one needs to do these calculations at regular intervals. How often? This is a judgement call. I do it monthly as I’m in rapidly growing team with many new products popping up. I constantly need to reassess my cost driver.
A more stable team and product might require only 6 month intervals. The relevant point here is; keep it accurate.
Story point cost ties a rather abstract and developer centered concept to the real world of business. This is necessary. If we intend to use story points in a meaningful fashion in our development environments than they must have some corollary to the spreadsheets, and ledgers that the world’s businesses run on.