• The Failure of Infinite Capacity - A Product Management Trap

    One of the main principals of agile software development according to the Agile Manifesto is that teams will work to continuously deliver valuable software. Further, they will do this by working on and delivering the features and capabilities that provide the greatest value first. Obviously, any understanding of the value a particular feature delivers is a hypothesis based on the teams current understanding of the Customer’s needs. By learning as they release new software into production they can evolve their understanding of the Customer’s needs. This fact allows teams to continue to make software more valuable without necessarily trailing off in their ability to do so.

    However, a common desire from stakeholders and product managers is to get more done faster. This would be fine and dandy except that it is often not accompanied by a corresponding increase in feedback and customer based product development. This means if the team keeps adding new things to work on without new learning and does so in order of value then the last item the add will be the least valuable.

    Read More...

  • Using Resharper to Refactor Static Methods or Properties Into Instance Methods

    This is an example of how you can combine a bunch of smaller automated refactorings to achieve an effect for which there is no automated refactoring in a safe and non-manual way. Note: All short cut keys given are with Resharper configured with the Visual Studio hotkey choice

    If you see the following sort of code:

    public static class A
    {
    	public static string Method1(string p)
    	{
    		return p;
    	}
    
    	public static string Property1
    	{
    		get
    		{
    			return "abc";
    		}
    	}
    }

    First, remove the static keyword off the class leaving you with the following.

    public class A
    {
    	public static string Method1(string p)
    	{
    		return p;
    	}
    
    	public static string Property1
    	{
    		get
    		{
    			return "abc";
    		}
    	}
    }

    Read More...

subscribe via RSS