Don't worship at the altar of Scrum

I am a Scrum Trainer with  I work with lots of organizations to help them become more agile.  I see a lot of bad Scrum.  More than my fair share.  Sometimes I see so much bad Scrum that it makes me question why I do this.  This post is my attempt to remind myself why. 

What is bad Scrum?  Lets start with what it is not.  Scrum is not about following rules.  There is an industry full of people that have turned Scrum into a religion.  I kid you not.  They even have names for themselves.  They call themselves 'white robes'.  They obsess over every change to the Scrum guide and translate the 'founders' intent for you.  They will speak of your dysfunctions (sins), they will point out your deviations from the one true path and they will shame you.  Scrum is not my religion.  Don't make it yours.  Be skeptical.  There are no higher beings when it comes to Scrum.  I am not a high priest and I don't need a high priest.

Scrum is not about mechanics.  They are merely there to serve a purpose.  The mechanics are a means not an end.  The mechanics do not define the result.  Can I follow all the rules and mechanics and have bad Scrum - you bet.

Scrum is freedom.  Freedom from the tyranny of trying to meet someone else's commitments (made for you.). It is freedom from being told to be 'accountable', meet your 'commitments' and other 'motivational' words.  It is freedom from being measured against someone else promises.  It is freedom from feeling like a cog in an endless machine.  It is freedom to question, to discover, to disagree, to decide how to work, how to improve and how to make your own promises.

What is bad Scrum?  If you are not feeling any of these freedoms and you are 'doing' Scrum then you already know the answer.  Bad Scrum is mechanical.  It's a belief in magic.  If we stand up for 15mins every day, attend lots of meetings, call someone a Scrum Master then things should be better right?  A Scrum Master just books the meetings and makes sure everyone turns up right?  Right?

If we decide the features that should be in a release and we decide what date that release will ship we can just tell our self-organizing team and they should be able to deliver it, right?  Welcome to bad Scrum.  If we decide that the Project Managers should be Scrum Masters but our new teams are self-organizing and therefore accountable for the outcomes, welcome to bad Scrum.  If you are being asked to 'drive success' for the team then you are not part of the solution.

Lots of companies decide that Scrum has too many holes.  It doesn't dictate documentation, dependencies, scaling etc.  We need to define that.  So they reach out to a prescriptive model (SAFe - I am looking at you) or 'customize' it to add what is missing.  Welcome to bad Scrum.

The gaps ARE the power.  The gaps are where we can decide what works best for us.  The gaps are the opportunities.  Revel in the gaps.  Glory in the gaps.  The gaps are what makes this what it is.  The gaps are where teams can actually define their own future.  The gaps leave room for a self-organizing team to exist.  Scrum doesn't need to be customized - just fill in the gaps with what makes your team special.

There is genius in empiricism.  Predicting the future is hard.  Adjusting to evidence is easy if we are given the chance, and people are willing to hear the truth.  A team that is allowed to self-organize don't need anyone to 'drive' them.

Good Scrum is not about measuring adherence to practices or mechanics.  Be skeptical.  If your consultant arrives and defines success by measuring practices, think about what you are advocating.  You have created a proxy for success.  That proxy involves post-it notes and standing up.  Really?

Good Scrum is exciting.  Good Scrum teams have purpose.  They have fun.  They are not defined by the length of their planning meeting.  Good Scrum teams do not need someone to 'empower' them.  I have my own power thanks and I don't need yours.

Good Scrum teams crave feedback.  They crave it from their process, their products, their stakeholders, and each other.  Feedback is power.  Feedback drives improvement.  The Scrum framework gives us a way to gather feedback.  Our response to this feedback defines us.

These teams need someone to care.  Someone to care about more than just the next feature, or project deadline.  Scrum Master this is you.  You are there to create the environment for this type of team to exist and thrive.  You are there to gather this feedback, and help your organization act on it.  Do nothing and expect no improvement.  Scrum is merely the vehicle that will surface these opportunities for greatness.  They will be challenging, they will appear unsolvable.  They are not.  Look at each day and ask yourself - 'are we better than yesterday?'

Your job has nothing to do with booking meetings.

If you care - I hope we meet.

What type of Scrum do you have?


Modern Product Ownership

One of the most critical roles in Scrum is the Product Owner.  When I consult with organisations about Scrum, often they want me to focus on helping the person in this role.

Some PO's are full time, however most PO's I meet are part-time.  They already have a job.  They are unsure how much time this additional role will take.  They know their business but they often do not know Scrum.

More importantly they often do not understand how short iteration development should work.  Lots of the books and blogs say glib comments like 'The PO should manage the product backlog in order to maximize the ROI of the product

Sounds great, but how?  Is putting the Product Backlog in order enough?  No.

Good Product Ownership means an understanding of Scrum, why it works, and a number of complimentary techniques.  For example what techniques should I use for prioritisation? 

  • Moscow
  • Kano
  • Business Value
  • Risk
  • Walking Skeleton
  • Validated Learning
 How much should I spend writing User Stories? (hint: probably not much)

Release Planning is worth a separate blog post entirely but this is another key area for a PO to understand and spend time planning.  Many PO's like to use a story mapping approach to build a product backlog and create a release plan.  Story Mapping is an essential technique that all PO's should understand.

The Lean Start up movement is also a rich source of ideas that are finding their way into a modern PO's toolbox.

So next time someone asks you to be a PO.  Ask yourself - do I understand how to use these techniques to extract the maximum value from my Scrum team?

Would you like to understand the principles of modern Product Ownership?  Are you struggling with how to get the most value from your Scrum team?  We have Professional Scrum Product Owner training that can help.  See our current list of public courses here or ask for private training at

Developer Tools Webinar launched!


Microsoft NZ has started a monthly Developer Tools webinar.  Featuring yours truly we talk about what’s new in Visual Studio, ALM and all things Dev Tools.  You can check out the first edition here -


The first episode focuses on a Tech-Ed wrap-up, MTM 101, and a demo of the awesome new BrowserLink feature.


Coming up in October is Visual Studio 2013, and in November we will be focussing on the Visual Studio launch.  Feedback would be appreciated, and if you have any topics that you think would like to see included please get in touch!


Featured on the Microsoft .NET Developer site


I was interviewed by Microsoft as part of their Developer Stories section on the site.


They selected developers using .NET technologies and wanted to get background information about their views and background history. 



Rob Maher

Not many developers have Rob Maher’s geographic diversity. Born in Great Britain, he’s worked everywhere from the Philippines and Singapore to Saudi Arabia and the United States. A self-described “serial conference organizer,” he also regularly oversees Scrum, Kanban and Microsoft-related events in his adopted country of New Zealand.

“Fortunately, my wife and four-year-old son like traveling too,” he says.


See the full interview here:-


MVP Award for another year






I am proud to say that I woke up to an email this morning letting me know that I have been renewed as a Microsoft ALM MVP for a 3rd year.  Being part of a great community is the biggest benefit of this award.


The award is for ‘exceptional technical community leaders who actively share their high quality, real world experience with others’  Which is a very long way to say that MVP’s are active in their communities trying to share their knowledge.


I think that the direction that Visual Studio / Team Foundation Server is following right now makes it one of the most exciting products.  3 weekly drops of new features to Team Foundation Service certainly keeps things interesting!  Here’s to a great year.


Team Foundation Server Build – Only run impacted tests (updated for 2012 & 2013)



A while ago I published a post on how to create a build definition for Team Foundation Server 2010 that only ran the tests that had been identified by Test Impact Analysis.  This is useful if your tests take a very long time to run, or you have a huge amount of tests and want quick feedback for your intra day builds.


This will work on the Team Foundation Service build system also.


I have had a few requests to get this updated for 2012/2013 and so here it is.


Things to remember:-


The testing system is a little different now than in 2010.  When you create your build from the custom xaml and choose the process parameters go to the Add/Edit Test Run section.



You need to make sure that you select the MSTest.exe Runner.  Test Impact Analysis is only supported by MSTest so if you don’t change this it won’t work.  Also make sure that you select a .testsettings file also.

Remember that periodically (perhaps every night) you need to run a build, and change the IsBaseLine run parameter from False to True.  This is what collects a base line of Test Impact data to measure your changes against.  This will run all of your tests.  They must all pass to gather the impact data.


Here is example output from my build.  Notice that it has run 2 tests and there is no impact data.


We now have our baseline.


Once you have that you can run the build with the defaults and if you have changed some code that impacts a test it should appear.


In my example I have changed some code that will impact one test, and re-run the build.




Notice that the build only ran one test this time.  The Impacted Tests section shows me which test was impacted and if i click on the Test run i see this.




So the build correctly ran the single impacted test.  One last improvement over 2010, if you click on the “1 code change(s)” link on the Build report in the Impacted Tests section you see this




A nice summary of what was changed (with a link to the changeset and code diff) and the method name was changed etc.  Much better!


The xaml is here.  Any questions let me know.


Follow the Boy Scout Rule with Visual Studio 2013



If you develop software using an agile approach you may have heard of the ‘Boy Scout’ rule.   The often quoted rule says “Leave the code a little better than you found it”


I tried to find the original source of this.  I think that it may have come from a letter that the founder of the Scout movement Baden Powell wrote.  This letter was found after his death as had the passage "Try and leave this world a little better than you found it."


It certainly is a great way to approaching existing code.  When we come to work with a code base, it often has issues.  These issues are the results of decisions and trade-offs made by those who came before us.  Often changes are needed to make the code cleaner.  I am not sure about you but I never seem to get the projects that start with a phase called “Clean Up”, and have a customer who is happy to invest significantly in tidying up the existing code base before we start.


So what do we do?  This is where our ‘Boy Scout’ rule applies.  Whenever we are working in an area of code (in order to implement a new feature) we leave it cleaner than it was.


How do we know that it’s cleaner?  Well we might improve naming, reduce dependencies, simplify and shorten methods etc and then at some point we decide that we have cleaned things enough and move on.  Sometimes it is very easy to know that you have made a significant improvement, and sometimes it is much more difficult.  (Try simplifying a 10,000+ line method….)


Here is where Visual Studio can help us.  The new Code Lens feature in Visual Studio 2013 RC provides a heads up display of useful information about the code that we are viewing.  This includes Test Status, References, Authors etc.  This data helps us understand the context that we are working in.


A new ‘indicator’ has been published to DevLabs .  DevLabs is an experimental delivery channel for Visual Studio add-ins.  The new indicator is focused on ‘Code Health’ and it shows me things like


Maintainability Index, Cyclomatic Complexity, Lines of Code and Halstead Volume (yes this one was new for me too).  Here is what you see in your code




Click on the maintainability indicator to see more details




I can hover over any of the measures to get more details and an understanding of the formula behind it.


But what about the Boy Scout rule?  Well you can see that before I touched this method, the maintainability index was 65.  I have added another ‘if’ condition to make it worse.  My code now looks like this




Notice the new statement?  Also look at my Code Health indicator.  It now has dropped to 60 and there is a red indicator telling me that I have MADE IT WORSE!  I have broken the rule! 


If I click into the indicator it shows me which indicators I just moved.  I have increased Cyclomatic Complexity by 1 etc.




Well that won’t do!  I am now going to go in and change things to move my statement out to a method call and try and clean things up.


Now my indicator shows an improvement




If I open it the indicator I can see that I have improved all of the health measures.  I am a Boy Scout!




I am already finding this addictive.  This is changing the way that I code.  Who wants to leave things worse than you found them?  Method by method, this keeps you honest and makes you want to improve things as you change them.  There is satisfaction from seeing the arrow point up.  You can continue coding safe in the knowledge that you have left things a little better behind you.  That is a good feeling.


You can see more details at David Starr’s blog here.  Also be aware of some disclaimers.  As a feature delivered through DevLabs, this is an experiment.  It also only works on methods and only on C#.