Ballot Debris

Thoughts on Agile Management, Leadership and Software Engineering

A Successful Software Organization – Leadership Reading

clock January 31, 2010 05:20 by author Chad Albrecht

I am spending most of my time as of late providing management consulting services to my clients.  Most of them have made, or are making, the transition to Agile and often facing the same set of issues.  While I think there is no replacement for a good Management Consultant/Agile Coach, a close second is reading as much as you can from those who have successfully made the transition to Agile.  With that, I would like to present a select list of my favorites:

         


Using the ‘Release’ Concept in Agile

clock January 18, 2010 11:42 by author Chad Albrecht

I’m spending quite a bit of time these days helping organizations implement Agile methodologies.  As such I hear the same set of questions and see the same set of issues over and over again.  One of the issues I see quite often is the “long sprint.”  To explain what I mean by this I’ll use a hypothetical conversation with a Team Lead new to Agile.

 

Team Lead: “How do you deal with the fact sprint planning and reviews take so long?”

Me: “How long is long?”

Team Lead: “Sometimes a week!”

Me: “How long are your sprints?”

Team Lead: “Usually 3-6 weeks.”

Me: “How did you determine that 3-6 weeks was a good length?”

Team Lead: “Because we couldn’t spend 2 weeks out of every month not coding!  We use longer Sprints to avoid spending so much time in review and planning.”

 

For those of you that are experienced in Agile, you should see a few problems here.  For now, let’s just focus on the “long sprint” concept.  The “long sprint” seems to manifest in organizations that are always sprinting.  First off, this is in direct conflict with the name sprint.  Sprints should be just that, a focused exertion of energy over a short period of time…2-3 weeks max.  So how do we solve our Team Lead’s issue with spending too much time in review and planning and not enough time writing code?  Enter the “Release.”

A Release is a means of building larger blocks of functionality in multiple Sprints. (usually 4-6)  Some Agile methodologies (XP) implement this concept directly, others do not. (Scrum)  There are many reasons to use the concept of a Release, a select few are:

  • Some features just might not fit into a two week Sprint.
  • Allow team to perform work in parallel to development.  In general team members can do work other than sitting in sprint review and planning sessions.  This is because these sessions are lighter weight and involve fewer people.  You simply review implemented sprint functionality ensuring it meets the needs of the stakeholder and grab the next chunk of the prioritized Product Backlog. (ok, a bit more than that, but you get the point) These two sessions should not take more than 3 days.
  • Reduce the overhead of delivering software to production every 2 weeks.
  • Reduce the information overload caused by releasing every 2 weeks.
  • Define a delivery pace more inline with that of the organization. (the rope in the Drum-Buffer-Rope of Throughput Accounting)

The next logical question is “Do we create a Release Backlog?”  I agree with Mike Cohn in this case and would say no.  I do however, use the concept of a Release Plan or Release Roadmap.  According to Mike a Release Plan contains:

  • Graph showing historical velocity.
  • Prioritized Product Backlog. (including some big user stories, "epics")
  • A predicted range of where we will finish. This should be either a date-range for a fixed-scope project or a functionality-range.
  • Personnel assumptions. (Team members and availability)
  • Velocity assumptions. ("we’ll go about half speed during December because of holidays and time off")

I would also add the following:

  • A Vision Statement.  (“We want to add the shopping cart functionality and connect it to PayPal”)
  • Estimated Release Value as I discuss here.

Using the concept of a Release in Agile organizations can be an extremely effective way to increase efficiency through the elimination of waste.  I will try to post more on this topic in the future.  As always, let me know your thoughts.

Further Reading:

Extreme Programming Release Planning:

http://www.extremeprogramming.org/rules/planninggame.html

Mike Cohn on Release Planning:

http://blog.mountaingoatsoftware.com/why-do-release-planning

Mike Cohn on why there should not be a release backlog:

http://blog.mountaingoatsoftware.com/why-there-should-not-be-a-release-backlog

Kelly Waters on Release Planning:

http://www.agile-software-development.com/2008/02/agile-release-planning.html



Visual Studio 2010 Team Foundation Server Requirements Management Guidance

clock January 16, 2010 07:42 by author Chad Albrecht

I am happy to announce that we (Rangers) have released the new Requirements Management Guidance for TFS 2010!

This Ranger solution addresses the People, Process, and Technology guidance for Requirements Engineering (RE) using Team Foundation Server. The goal of this guidance is to provide formalized Microsoft field experience in the form of recommended procedures and processes, Visual Studio Team System and Team Foundation Server configurations, and skill development references for the Requirements Engineering discipline of your application lifecycle.

Visual Studio ALM Rangers
This guidance is created by the Rangers who have the mission to provide out of band solutions for missing features or guidance. This content was created with support from Microsoft Product Group, Microsoft Most Valued Professionals (MVPs) and technical specialists from technology communities around the globe, giving you a real-world view from the field, where the technology has been tested and used.

What is in the package?
Requirements Management is a vast area with many disciplines. To address your areas of interest and expertise, we have packaged the content in 9 zip files. The default download is the complete package in one zip file for those who are interested in all areas.


1. Introduction: RM Rangers Guide to the Complete Guide Start Here
2. Requirements Management Planning
3. Requirements Traceability
4. Analysis and Breakdown
5. Requirements Elicitation
6. Requirements Specification
7. Requirements Validation
8. Requirements Change Management and Approval
9. Requirements Management checklist sheet

 

Great job Mike Schimmel & the rest of the team!



New TFS Stadium Diagram

clock January 15, 2010 05:59 by author Chad Albrecht

For those of you out there doing TFS 2010 presentations and demos, here is the TFS “stadium graphic” with the new SKUs and branding.

image

Enjoy!



Scrum Sprint Monitor

clock January 13, 2010 04:18 by author Chad Albrecht

I have a couple of custom-written apps that allow teams to track current progress on a projector using TFS.  I just found a community project on CodePlex that looks like a promising replacement, Scrum Sprint Monitor.

Scrum Sprint Monitor provides the Agile team with hands-off, always up-to-date status of the current Sprint, both at the individual and team level. It is designed to run either on a large LCD screen located in a public area, or as a desktop application.

image

Looks like a great product!  If you try it, let me know what you think.



Prioritizing SaaS Features – More on Ideal Hours

clock July 30, 2009 09:05 by author Chad Albrecht

I received a couple comments on my post about Prioritizing SaaS Features.  One comment was focused on the use of EV and AC which I will address later, the other was on the use of Ideal Hours.  The comment on Ideal Hours was from Rob Park, an Agile Coach from Colorado.  Here is an excerpt from Rob’s comment:

The one thing I feel is optimistic about your calculation is the ideal hours though. Ideal hours are not actual hours, so I think you need another factor in there to convert to actual hours based on actual velocity trends.

Great point Rob!  While Ideal Hours are not representative of Man Hours, there are a few tools I use to try to get them as close as possible i.e. the conversion factor as close to 1 as possible.  First, team members sign up for tasks and estimate as part of the iteration planning and decomposition process as discussed here.  Second, estimates for specific team members are tracked against actual time as discussed here.  This gives us our margin of error for a specific team member that we can use to size our buffers.  Third, we use the process described here to evenly load the work onto the team for the iteration. Finally, if tasks change hands during the iteration, estimates and cost curves are adjusted accordingly.  This may cause an item(s) to get descoped during the iteration and technical debt to increase, but this hopefully will be addressed as part of the next iteration.

So why not just use Man Hours?  I like the concept of Ideal Hours because it gives you more flexibility on estimates.  The term Man Hours has rigid foundations in project management that do not work well in the Agile world.  Think of it this way.  With Ideal Hours we try to approach real Man Hours and use a factor to determine how right (close) we are.  With Man Hours we consider estimate accuracy a measure of how wrong we were.  Ideal Hours just fit better into Agile thinking.



Prioritizing SaaS Features

clock July 29, 2009 06:14 by author Chad Albrecht

I’ve talked about using your Value Proposition(VP) to rank features by dollar value here and using Ideal Days to estimate duration here.  Now let’s combine the two and look at total value based prioritization of features or PBI’s.  In essence what we are doing is giving the highest rank to features that will yield the most value in the least amount of time.(cost)  To calculate cost we will need some measure of cost per hour.  If you have the actual numbers, use them, if not here are some tools you can use.  Work hours in a year: 2080 Annual salary:  $50K=$24/hour  $100K=$48/hour.  Margin for overhead: 20-30%.  With these tools let’s assume that our team makes on average $90K annually.  This gives us $43 an hour.  Adding 25% we get about $54 an hour.  From here we can simply multiply our cost per hour by our Ideal Hours to get total cost per feature.  Subtract our total cost from our value (sales) and we get the profit per feature.   We then prioritize (rank) by profit.

 

Feature Rank % of total Value Estimate (Ideal Hours) Cost Profit
8 1 5% $ 4,902 2 $ 108 $ 4,794
9 1 5% $ 4,902 2 $ 108 $ 4,794
2 1 5% $ 4,902 4 $ 216 $ 4,686
1 1 5% $ 4,902 8 $ 432 $ 4,470
3 1 5% $ 4,902 8 $ 432 $ 4,470
6 1 5% $ 4,902 8 $ 432 $ 4,470
7 1 5% $ 4,902 8 $ 432 $ 4,470
11 1 5% $ 4,902 8 $ 432 $ 4,470
4 1 5% $ 4,902 16 $ 864 $ 4,038
5 1 5% $ 4,902 16 $ 864 $ 4,038
10 1 5% $ 4,902 16 $ 864 $ 4,038
12 1 5% $ 4,902 16 $ 864 $ 4,038
16 2 4% $ 3,922 4 $ 216 $ 3,706
17 2 4% $ 3,922 4 $ 216 $ 3,706
13 2 4% $ 3,922 8 $ 432 $ 3,490
14 2 4% $ 3,922 8 $ 432 $ 3,490
15 2 4% $ 3,922 8 $ 432 $ 3,490
21 3 3% $ 2,941 2 $ 108 $ 2,833
22 3 3% $ 2,941 2 $ 108 $ 2,833
18 3 3% $ 2,941 4 $ 216 $ 2,725
23 3 3% $ 2,941 4 $ 216 $ 2,725
19 3 3% $ 2,941 16 $ 864 $ 2,077
20 3 3% $ 2,941 16 $ 864 $ 2,077
24 4 2% $ 1,961 8 $ 432 $ 1,529
25 4 2% $ 1,961 8 $ 432 $ 1,529
      $100,000 204 $ 11,016 $ 88,984

 

As you can see this moves our prioritization around a little bit.  The nice thing about the above is that we can automate it.  In your Agile Management System each feature should accept a VP rank and an duration estimate in Ideal Hours.  You will also want to have a mechanism to enter the Value of the release, $100K in the example above.  Using these inputs your system should be able to auto-prioritize your features for you.  Now that you have cost, you can track EV,PV and AC on your CVE vs. CVP graph.  I don’t like the PMI term “value” in the EV and PV metrics.  Their old names used to be Budgeted Cost of Work Performed(BCWP) and Budgeted Cost of Work Scheduled(BCWS) which I think is more fitting. Either way, don’t confuse the term “value” in these metrics for revenue.  The value they represent is the cost, i.e. the value of the work.  For this example, we will assume that the estimates were correct and AC and EV are equal, that is, there is no cost variance during the release.  The graph would be similar to that of Figure 1.

image

Figure 1 – CVP, CVE, PV, EV & AC

I know there are some hard-core Agile managers out there who believe that we should not concern ourselves with revenue estimates.  Some think that simply managing costs while we continue to iterate is enough.  If you are of this mindset, let me ask some questions.  How do you know when your costs are nearing your sales?  How do you determine if your project will be profitable?  If given multiple projects to work on, how do you choose the most important one?

I would also like to remind you that I have not taken risk into account yet, which will again change the priority of the features.  I will try to cover this in future posts.

As always, I would love to hear your thoughts on this.



Value-Based Software Engineering

clock July 27, 2009 11:10 by author Chad Albrecht
Another book to add to the list:
Value-Based Software Engineering
Description from Amazon:

The IT community has always struggled with questions concerning the value of an organization’s investment in software and hardware. It is the goal of value-based software engineering (VBSE) to develop models and measures of value which are of use for managers, developers and users as they make tradeoff decisions between, for example, quality and cost or functionality and schedule – such decisions must be economically feasible and comprehensible to the stakeholders with differing value perspectives. VBSE has its roots in work on software engineering economics, pioneered by Barry Boehm in the early 1980s. However, the emergence of a wider scope that defines VBSE is more recent. VBSE extends the merely technical ISO software engineering definition with elements not only from economics, but also from cognitive science, finance, management science, behavioral sciences, and decision sciences, giving rise to a truly multi-disciplinary framework. Biffl and his co-editors invited leading researchers and structured their contributions into three parts, following an introduction into the area by Boehm himself. They first detail the foundations of VBSE, followed by a presentation of state-of-the-art methods and techniques. The third part demonstrates the benefits of VBSE through concrete examples and case studies. This book deviates from the more anecdotal style of many management-oriented software engineering books and so appeals particularly to all readers who are interested in solid foundations for high-level aspects of software engineering decision making, i.e. to product or project managers driven by economics and to software engineering researchers and students.



PMBOK, Agile & TOC: Planning the Project - Part 5, Mapping to the PMBOK

clock July 26, 2009 14:52 by author Chad Albrecht

According to the PMBOK the primary output of the Planning Process Group is a Project Management Plan.  However, there are multiple processes that can be used to support the Project Management Plan.  Here they are in order from the 3rd Edition PMBOK:

3.2.2 PMBOK Section Name Relevant Agile practice, process or activity
.1 Develop Project Management Plan Combination of Product Backlog, Release scope, use cases, etc.
.2 Scope Planning We plan scope be defining the features to be included in a release.
.3 Scope Definition Scope is defined as the Product Backlog Items(PBI) that are included in the release.
.4 Create WBS The Work Breakdown is done as part of the PBI to Sprint Backlog Item(SBI) decomposition.  Again, we are aiming for SBIs that are no larger than 16 hours.
.5 Activity Definition Defined in the Product and Sprint Backlogs by User Stories and Use Cases.
.6 Activity Sequencing Activity is sequenced in terms of greatest business value coupled with greatest risk first.  Priority should be set by dollar value as discussed here.
.7 Activity Resource Estimation In Agile we can add or remove resources to increase or decrease velocity.  Depending upon the desired starting velocity (first few release) we can choose the team size based on estimates.
.8 Activity Duration Estimation Discussed in the posts here and here.
.9 Schedule Development Discussed in this post.
.10 Cost Estimation In an Agile environment we plan to deliver continuous value by way of release and iterations. As such, there is typically continuous cost.  Based on the resource estimation we do in .7 and the purchases from .20 we can estimate cost. This has been a sub-topic of a number of my posts.
.11 Cost Budgeting This method not used heavily in Agile.  Rely on Cost Estimation Schedule, CVE and CVP.   While Throughput Accounting is preferred over Cost Accounting PV, EV and AC can be calculated based on current release.  See PMBOK Chapter 7.2 for more information.  More on this in future posts.
.12 Quality Planning Involve QA upfront.  Need functional test for each PBI.  Build release to QA plan.  Quality sign off mechanism.
.13 Human Resource Planning Roles and responsibilities per Agile technique. See PMBOK Chapter 9.1 for more information.
.14 Communications Planning Should include a plan to update stakeholders with burndowns, impediments, roadmaps, etc. See PMBOK Chapter 10.1 for more information.
.15 Risk Management Planning Since risk is reduced in Agile, the planning process is highly simplified.  I will discuss more in future posts.
.16 Risk Identification I will discuss in future posts.
.17 Qualitative Risk Analysis I will discuss in future posts.
.18 Quantitative Risk Analysis I will discuss in future posts.
.19 Risk Response Planning I will discuss in future posts.
.20 Plan Purchases and Acquisitions Plan for hardware, third-party software, tools, etc.
.21 Plan Contracting Obviously required if necessary.

Now we can move on to the project execution part of this series…



SLKK - A New Agile Toolset

clock July 19, 2009 11:06 by author Chad Albrecht

In much the same way Michael Kunze coined the acronym LAMP, I propose the use of a new industry acronym for Agile. Scrum, Lean, Kanban & Kaizen. (SLKK, pronounced slick)  I have successfully used this process which incorporates techniques from all of these areas and felt it needed a name.  I also feel that it will be very useful to many of you that are already using or just beginning to use Agile.

 

Scrum – Describes the artifacts, meetings, backlog and iteration terms, etc. A good intro here. (Hat tip Ken Schwaber and Jeff Sutherland

Lean – Describes mechanisms for the elimination of waste, systems thinking and pull concepts. Wikipedia description here. (Hat tip Tom and Mary Poppendieck)

Kanban – Introduces the card wall, reduction of work-in-progress(WIP) and resource workflows.  Personal Kanban also useful. A great description by Kenji Hiranabe here. (Hat tip Taiichi Ohno)

Kaizen – Company and culture. Also speaks to elimination of waste using the scientific method. Using actionable items found in Scrum retrospectives, teams perform “kaizen blitzes” to improve processes and performance. Personal Kaizen also useful. (Hat tip TPS, W. Edwards Deming and Joseph M. Juran)

 

I have read numerous articles and blog posts discussing one technique vs. another and have found it amazing that very few discuss the how they compliment one another. This is what I hope to begin to do in this post.  If you would like to learn more about any of the four pieces, click on some of the links above or books below. First a picture to graphically show my thoughts.

 

image

Figure 1 – Scrum, Lean, Kanban, Kaizen Relationship

In a nutshell, here is what the process looks like:

  1. Initial Backlog prioritized by business value.  Value drawn from market (client) needs.  This is the pull in Lean.
  2. Map your value stream.  Make sure you understand how you will measure partially done work, task switching, defects, etc.
  3. High level estimates.
  4. Build release roadmap based on value and estimates.  Refactor if necessary.
  5. Release planning session for release.  Make sure everyone is clear on the vision of the release.
  6. Sprint planning session.  Limit Work-in-progress (WIP) as much as possible.  Prioritized by business value.  Make sure work is buffered and balanced. 16 hour SBI’s.  Make sure everyone is clear on the vision of the Sprint.
  7. Commitment on Sprint Backlog.
  8. If not already done, automated build and test environment setup.
  9. Kanban card wall goes up for Sprint.  An electronic version of this on a 60” LCD works well!  :)
  10. Daily Scrums review the card wall deltas.  If electronic, task cards added to personal Kanban walls.  If manual, use resource swim lanes.  How have we improved on our Kaizen item?
  11. Sprint Review.  Demo new value features. What was the Throughput in dollars? Review PBI’s contained in the next sprint and verify correct priority order.  Sprint Review minutes published via email to all stakeholders.
  12. Sprint Retrospective.  What are we doing well?  What could we do better?  Pick and actionable item for improvement during the next Sprint. How will we measure our improvement?  How did we do on our last item?
  13. Ready for Release?  If yes, go to #14, if not go back to #6.
  14. Software released to production.  Release notes sent to all stakeholders including version number, release CVE, de-scoped features, added features, impediments and any open discussion items.
  15. Is the dollar value (revenue potential) for the next release greater than the cost?  If not, the project is ended or put on hold.
  16. Does this project have the highest IRR of all the potential projects for this team?  If not, change projects.
  17. Begin next release, go to #5.

 

While I hope to go into more detail on this technique in future posts, but for now, here are some great primer books to get you started:

Agile Software Development with Scrum (Series in Agile Software Development)
Agile Estimating and Planning (Robert C. Martin Series)
Lean Software Development: An Agile Toolkit (Agile Software Development Series)
Scrumban - Essays on Kanban Systems for Lean Software Development
Agile Retrospectives: Making Good Teams Great
Kaizen and the Art of Creative Thinking - The Scientific Thinking Mechanism
The Kaizen Pocket Handbook


About me...

bio_headshot

I am a leader, entrepreneur, software engineer, husband, father, pilot and athlete. Over the last 17 years of my career I have built numerous successful companies and software development teams. This amazing journey has taken me all over the world and allowed me to work in a number of diverse industries. I have had the privilege to meet and work with thousands of unique and talented people. As you will see from my blog I am a strong believer in Agile SDLC techniques and the Kaizen corporate culture. I am always looking to grow myself, my teams and the companies I am partnered with.

Certified ScrumMaster   Contact me... View Chad Albrecht's profile on LinkedIn Follow Chad Albrecht on Twitter Subscribe to this blog

Calendar

<<  July 2010  >>
MoTuWeThFrSaSu
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678

View posts in large calendar

Sign in