Ballot Debris

Thoughts on Agile Management, Leadership and Software Engineering

Agile Software Engineering with Visual Studio

clock October 18, 2011 06:56 by author Chad Albrecht

I just finished reading Sam Guckenheimer and Neno Loje’s new book “Agile Software Engineering with Visual Studio.”  Great job guys!

 

 

Some observations:

  • They appear to provide a fairly clear picture of Scrum.
  • I love the fact they cover mura, muri and muda.
  • I don’t like their explanation of technical debt.
  • Great discussions on “Analysis Paralysis.”
  • They pull in Lean and Kanban very nicely.
  • Tacit knowledge is mentioned.
  • Inclusion of Product Backlog grooming which many Scrum books overlook.
  • Good discussion on Kano Analysis. (nice picture of Stephanie Cuthbertson and team!)
  • Good discussion on Empirical vs. Defined Process Control.
  • They present some great information on metrics and agile.
  • Finally! A good description and discussion on Emergent Architecture!
  • They talk about using branching sparingly then dive into a head-on discussion of a mature branching schema. I would have liked to have seen a discussion of lighter-weight methods.
  • Sam and Neno advocate for integration as often as possible.  Awesome!
  • The handling of testing is a bit dicey and appears to target the use of TFS/Visual Studio over good Agile practices.
  • Good discussion on exploratory testing!
  • Don’t care for their “Handling Bugs” section.

Quotes I really like:

  • “you do not measure planned tasks completed as the primary indicator of progress; you count units of value delivered. “ (pg. 8)
  • “Lean turns governance on its head, by trusting teams to work toward a shared goal, and using measurement transparency to allow teams to improve the flow of value and reduce waste themselves.“ (pg. 14)
  • “Note that this does not mean that all tasks are known on the first day of the sprint. On the contrary, tasks may be added to the sprint backlog whenever necessary.“ (pg. 29)
  • “mastery of Scrum is really for the whole team, not just a designated individual.” (pg. 76)
  • “Unfortunately, using metrics to evaluate individual performance is often horribly counterproductive” (pg. 81)
  • “use branches sparingly and intentionally. If you need to do something temporary, use a shelveset instead. ” (pg. 162)
  • “A potential dysfunction is that integration fails. Integration issues, such as merging, are a common source of unhappiness and waste in teams.” (pg. 197)
  • (Regarding test automation) “Automation is useful when it achieves high coverage and when the tests will be used many times for many configurations across many changes in the software under test (SUT).” (pg. 219)
  • “work should be sequenced to facilitate getting PBIs through acceptance testing to done as quickly as possible.” (pg. 235)

 

This is a very good primer for using TFS and Visual Studio Ultimate within a Scrum environment!  This book coupled with Scrum.org’s Professional Scrum Developer course and you should be up and running in no time!



New TFS 2010 Power Tools Released

clock August 20, 2011 09:25 by author Chad Albrecht

See Brian Harry’s blog: http://blogs.msdn.com/b/bharry/archive/2011/08/08/aug-11-tfs-power-tools-coming-soon.aspx

and Ed Blankenship’s blog: http://www.edsquared.com/2011/08/19/August+2011+New+TFS+2010+Power+Tools+Released.aspx



Professional Team Foundation Server 2010

clock May 27, 2011 09:30 by author Chad Albrecht

I just received by new Wrox book “Professional Team Foundation Server 2010” by Ed Blankenship, Martin Woodward, Grant Holliday and Brian Keller.  After paging through the book I think it is a great primer for people getting started with TFS 2010.  They cover everything from deployment planning to lab management.  Great job guys!

 



Branching and Merging–Proceed with Caution!

clock February 25, 2011 08:59 by author Chad Albrecht

Over the last few years I have worked with teams that feel a need to using Branching as part of their “best practices” tool set. The ALM Rangers were even nice enough to show teams how to build a mature branching scenario in their Visual Studio Team Foundation Server Branching Guide 2010.  PROCEED WITH CAUTION!  There is a large overhead in using branching and merging.  The branching part is easy, it’s the merging part that will kill you.  Done infrequently, the merge process can be a huge undertaking in many cases taking days to complete.  Here is a quote from the original VS 2005 Branching and Merging Primer:

A branching and merging strategy involves a tradeoff between risk and productivity. You trade the safety of working in isolation for the increased productivity of working with other people. The productivity increases come with a cost—the additional effort required for merging software assets sometime in the future.

Often, there is no need to adopt branching as the teams are small enough or using shelves will suffice.  If you feel you need to branch, do so for the right reasons.  What are the “right reasons?”  In a nutshell, you absolutely NEED to isolate some code from other teams/repositories.  Examples might include:

  • Development on a new feature is continuing while the current version is releasing.  (branch by feature)
  • Teams are practicing design by contract and only want the final contract to be used by other teams. (branch by team)

What are some branching and merging anti-patterns to watch for? Here are few (thanks Chris Birmele):

  • Merge Paranoia—avoiding merging at all cost, usually because of a fear of the consequences.
  • Merge Mania—spending too much time merging software assets instead of developing them.
  • Big Bang Merge—deferring branch merging to the end of the development effort and attempting to merge all branches simultaneously.
  • Never-Ending Merge—continuous merging activity because there is always more to merge.
  • Wrong-Way Merge—merging a software asset version with an earlier version.
  • Branch Mania—creating many branches for no apparent reason.
  • Cascading Branches—branching but never merging back to the main line.
  • Mysterious Branches—branching for no apparent reason.
  • Temporary Branches—branching for changing reasons, so the branch becomes a permanent temporary workspace.
  • Volatile Branches—branching with unstable software assets shared by other branches or merged into another branch.
    Note   Branches are volatile most of the time while they exist as independent branches. That is the point of having them. The difference is that you should not share or merge branches while they are in an unstable state.
  • Development Freeze—stopping all development activities while branching, merging, and building new base lines.
  • Berlin Wall—using branches to divide the development team members, instead of dividing the work they are performing.

Remember, think long and hard about jumping into branching and merging.

Some additional reading:

Fowler on Feature Branching

Fowler on Continuous Integration



Fix: TFS VS Scrum 1.0 Template Sprint Burndown “Today Line”

clock October 11, 2010 13:34 by author Chad Albrecht

It appears there is an issue with the Sprint Burndown report in the new VS Scrum 1.0 template for TFS.  If there are days where no changes are made to work items, (weekends) your red “today” indicator may be wrong.  Like this:

 

clip_image002

 

Notice there are two missing days (Sept 25th and 26th) resulting in the “today” indicator being two days off.  Since per the queries we can drop days prior to today but not after, I figured it would be safer to calculate “today” off the end date rather than the start.  So here is the fix:

 

1) Edit the report in the Report Builder

2) Change the IntervalOffset property of the StripLines[0] object on the X axis to the following:
=CountDistinct(Fields!DateValue.Value, "dsBurndown") - DateDiff("d", Parameters!Today.Value, First(Fields!FinishDate.Value, "dsSprintsCurrent"))

 

clip_image002[4]

All fixed!



User Story Role in TFS

clock March 11, 2010 08:47 by author Chad Albrecht

As I mentioned, I received numerous questions during my presentation at the WI .NET User Group a few weeks back.  One of the them was: “Is there a way to add the subject of a user story as an explicit field?”  After probing the individual a bit, I discovered he wanted to be able to sort user stories bases on this field.  As a recap a user story is typically in the form:

As a <type of user> I want <some goal> so that <some reason>

In this post I will show you how to add the <type of user> or user story role to the user story in TFS 2010.

First make sure you have TFS Power Tools installed.  For the TFS 2010 RC, download them here.

Second, I’m going to show you how to do it using the MSF for Agile v5.0 User Story Work Item Type (WIT).  While other templates are going to be slightly different, you can use this same method as a general guideline on how to do this.

 

Step 1:

Open the “User Story” WIT from the Server.

image

Step 2:

On the Fields tab click New.

image

Step 3:

Setup the new field similar to that below.  You will probably want to change “MyCompany” in the Reference name to be the name of your company.

image

Step 4:

Still in the Field Definition dialog, click on the Rules tab.

image

Step 5:

Click New, select ALLOWEDVALUES and click OK.

image

Step 6:

In the ALLOWEDVALUES dialog continue to click new and enter the desired roles until you have all the roles you want to use.

image

Step 7:

Click OK back to the WIT editor.

Step 8:

Go to the Layout Tab.

image

Step 9:

Right click on the Column node under Group – Classification and select New Control.

image

Step 10:

Setup the fields similar to the following:

image

Step 11:

Click Save.

 

Your’re Done!

Your User Story screen should now resemble the following:

image

You will also be able to add the Story Role column to queries and sort and filter by it.

image image

 

Good luck and enjoy!



Estimate Histograms in TFS

clock March 10, 2010 12:53 by author Chad Albrecht

Last July I posted an article on how to use a histogram to gauge how accurately you or your team members estimate.  I’ve had a few people ask me about this recently so I thought I’d post on how to create these histograms in TFS 2010.  For a quick recap on what we want to accomplish with these histograms, take a look at my July article.  You will need a process template that allows you to capture and Original Estimate and Complete Work values.  (Such as the MSF for Agile v5.0 template)  Assuming you have Excel 2007 and Team Explorer 2010 installed, go ahead and open Excel and follow the steps below:

Step 1:

Click on the Data Ribbon and Select Existing Connections.

image 

Step 2:

You should see TfsOlapReport which is a data connection to the Tfs_Analysis cube.  Select it and click Open. (If you don’t see the connection, go here.)

image

 

Step 3:

You should the Import Data Dialog.  Change the location of the data to $A$2 as show below and click OK.

image

 

Step 4:

Drag the field “Completed Work” into the Values box as shown below:

image

Step 5:

Drag the fields “Assigned To” and “State” into the Filter box as shown below:

image

Step 6:

Drag the field “ID” into the Row Labels box as shown below:

image

Step 7:

Select the team member you want to look at(in this case Bob Smith) and select the State to be closed in the filter list above the pivot table.  This is show here:

image

 

Step 8:

Click the dropdown next to Row Labels, select Value Filter and click on Equals.

image

Step 9:

Setup the Original Estimate value you want to estimate as shown below.  (In this case we will look at the original estimate being 16 hours.) Click OK.

image

Step 10:

At this point you are ready to build your histogram.  You can use Excel’s Data Analysis pack to build one for you or you can build you own. I like to build my own since the Data Analysis pack charts are kinda crappy, so this is the method I will show.  Start by clicking the top-left corner of the worksheet to select the entire worksheet.   Press Ctrl-C to copy it.

Step 11:

Select Sheet 2 and press Ctrl-V to paste a copy of the pivot table into the new worksheet.

Step 12:

Select the cell directly to the right of the “Completed Work” column header.

image

Step 13:

Select the Data ribbon and click the Advanced Filter button.

image

Step 14:

Set the List Range to the all the data in the Completed Work column and select the "Unique records only” check box.  Click OK.

image

Step 15:

You should have a list that resembles the following:

image

Step 16:

Copy the values from the filter Completed Work column and paste them back into Sheet 1.  This should resemble the following:

image

Step 17:

Label the column data you just pasted in as “Bin” and label the column to the right of it “Count”

image

Step 18:

In the first data cell of the Count column add the following formula:  =COUNTIFS($B$5:$B$100,"=" &D5)

image

Step 19:

You will need to modify the first argument of the formula added in Step 18 to be the full range of the Completed Work column and the second argument to point the value in the Bin column.

Step 20:

Copy this formula down in the the empty cells.

image

Step 21:

Total you Count column.

image

Step 22:

Select your count column and click a bar chart on the Insert ribbon.

image

Step 23:

Rick click on your chart and click Select Data.

image

Step 24:

Select Edit under the Horizontal (Category) Axis Labels text.

image

Step 25:

Select all the values in your Bin column for the Axis label range. Click OK all the way back to the worksheet.

image

Step 26:

Select your Bin/Count table and then click the Sort Smallest to Largest button in the Data ribbon.

image

 

You’re Done!

 

This data should be used to help you and your team get better at estimating.  As the goal of this type of exercise is to increase our skills, I would advise against using this as a means of rating individual performance.  This can backfire by creating resistance to entering real data significantly skewing the results.

Good luck and enjoy!



MADdotNET - Succeeding With Agile & TFS 2010

clock March 4, 2010 07:40 by author Chad Albrecht

I presented “Succeeding With Agile & TFS 2010” for the MADdotNET User Group last night to a full house.  I want to thank everyone for the turnout and the great questions and discussions!  I’m going to try to post some articles as follow-ups to some the the questions that were asked last night that didn’t get the attention they deserve.  Some of these topics will be:  Agile Estimation, Technical Debt, Code Churn and including bugs and refactoring on the Product Backlog.  Let me know if I missed anything you want me to cover.

For those that are interested, here is the presentation:



Locking a Task’s Original Estimate in TFS 2010

clock February 26, 2010 09:04 by author Chad Albrecht

During my presentation at the WI .NET User Group the this past week, I had a number of questions on customizing the TFS Process Template.  I’m going to answer some of these questions in detail on my blog.  The first one I’m going to cover is “Can I lock the original estimate in TFS so I can see how good we are at estimating?”  The answer is yes.  But before we begin, a couple of notes.

First make sure you have TFS Power Tools installed.  For the TFS 2010 RC, download them here.

Second, I’m going to show you how to do it using the MSF for Agile v5.0 Task Work Item Type (WIT).  While other templates are going to be slightly different, you can use this same method as a general guideline on how to do this.

Finally, what we are looking to do here is lock (make read only) our Original Estimate once we start booking time against the task.  Here’s how:

Step 1:

Open the “Task” WIT from the Server.

image

Step 2:

Goto the Workflow tab.

image

Step 3:

Open the initiating transition.  (The one that sets up the Active state on the far left)

image

Step 4:

Select the Fields tab.

image

Step 5:

Click new.

image

Step 6:

Select the Microsoft.VSTS.Scheduling.CompletedWork field.

image

Step 7:

Goto the Rules tab.

image

Step 8:

Click new and select the COPY rule type and click OK.

image

Step 9:

Set the fields as follows:

image

Step 10:

OK all the way back to the Workflow tab.

Step 11:

Open the Active State either by double clicking or selecting “Open Details” from the context menu.

image

Step 12:

Click New.

image

Step 13:

Select the field Microsoft.VSTS.Scheduling.OriginalEstimate.

image

Step 14:

Goto the Rules tab.

image

Step 15:

Click New, select WHENNOT and click OK.

image

Step 16:

Select Microsoft.VSTS.Scheduling.CompletedWork for the Field and 0 for the Value.

image

Step 17:

Goto the Rules tab.

image

Step 18:

Click New and Select READONLY.

image

Step 19:

OK all the way back to the Workflow tab.

Step 20:

Click Save.

You’re Done!

 

Now as long as you don’t enter any work against as task you can continue to modify the Original Estimate field. 

image

Once hours are booked against the task, the Original Estimate field changes to read only.

image

Good luck and Enjoy!



Succeeding With Agile & TFS 2010

clock February 23, 2010 04:17 by author Chad Albrecht

Making the transition to Agile can be challenging for even the most seasoned organization. Having good leadership and the right tools can make all the difference. Drawing on nearly two decades of experience Chad will be walking us through methods that can be used to avoid common pitfalls and using Team Foundation Server (TFS) 2010 as an Agile platform. In this highly interactive session, Chad will demonstrate some of the new features of TFS 2010 as they relate to Agile estimation, planning, execution and measurement. If your organization is considering a migration to Agile or the TFS 2010 platform, you are encouraged to attend.

 

I presenting the above topic tonight at the Wisconsin .NET User Group.  Register Here!

I will also be giving the same presentation at the Madison .NET User Group on March 3rd.  Register Here!

Look for a presentation in the Chicago Land area towards the end of March.



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 techniques and the Kaizen corporate culture. I am always looking to grow myself, my teams and the companies I am partnered with.

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

Professional Scrum Trainer

Professional Scrum Developer Professional Scrum Master I Professional Scrum Master II Professional Product Owner I Professional Product Owner II Certified ScrumMaster

MCTS

Calendar

<<  October 2014  >>
MoTuWeThFrSaSu
293012345
6789101112
13141516171819
20212223242526
272829303112
3456789

View posts in large calendar

Blogroll

Download OPML file OPML

Sign in