• How to Interview Developers

    Interviews for software development positions are often terrible and there are lots of articles explaining how. The history of one of the more popular questions demonstrates how reason is often left behind in interview design. Google, one of the more famous users of complex coding problems and whiteboard interviews, found their interview process no better at predicting success than random chance. In other words, choosing randomly from all the resumes would have gotten them just as many successful employees as the interview process did. It is quite clear we waste lots of time and money to get at best middling results from our interview processes in general.

    Read More...

  • 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