April book review: Project Retrospectives

Welcome again. Thank you for reading my monthly column. Today, we will talk about a classical book on project retrospectives by Norman Kerth.

Norman L. Kerth
Project Retrospectives. A handbook for team reviews.

In my consulting practice, I see many teams working very hard, constantly in a rush trying to save the day, making the most out of every single minute they have... and never having enough time to stop and think about how they perform. Retrospectives provide a formal way for teams to get away from their daily grind and take some time to reflect on their performance, seek an opportunity to learn and get better.

In his book, Norman Kerth does an excellent job guiding readers on how to plan, prepare, and facilitate an effective retrospective on project performance. He describes a very thorough approach to how to prepare for a retrospective in a situation when you are an outsider and do not know the details and history behind the project. He spends quite a bit of time discussing how to make a retrospective safe for all participants and provides valuable methods for extracting related project data and capturing lessons learned.

Norman's approach to retrospectives is a bit heavier than mine. He advocates for 3-4-day preferably off-site residential sessions. I tend to like shorter more frequent meetings ranging anywhere from a couple of hours to a day. In order for shorter more frequent meetings to work, you will need to minimize your project cycle time down to 1-3 months. A retrospective on a 3-year monster will certainly require substantial time and effort.

Remember, the greatest teams are great because they self-reflect and continuously improve.

Happy reading!

Tom Evans speaks at OTUG on April 15, 2008

Who: Tom Evans
What: Business Agility Principles and Architecture: Lessons from the Punch Card Era
When: Tuesday April 15, 2008, 5 pm
Where: 3M Auditorium, University of St. Thomas, St. Paul, MN

You can find more information about the event at http://www.otug.org. See you there!

JavaScript tags cannot be self-closing

I was puzzled today by the following exception coming out of one of our web application: this._form has no properties. The exception occurred even on simple pages that had a form and a Script Manager tag. After troubleshooting the issue, I traced it down to the script tag on the site master page. Apparently, JavaScript tags cannot be self-closing.  

Replacing 

             <script language="javascript" type="text/javascript" src="my.js"/> 

with  

             <script language="javascript" type="text/javascript" src="my.js"></script>  

resolved the issue. Happy coding!

.NET 3.5, WCF, JSON, SSL, and HTTP Error Code 401

We run into an interesting problem today at work while working with JSON WCF Web Services built with Visual Studio 2008 and .NET 3.5.

The web application we are working on is to be released in a couple of weeks. It has been running fine on the test server for a number of iterations now, but today we installed an SSL certificate on this server and configured the application to require secure channel. Suddenly, the web application started to ask us for a username and password...

I looked closer into the logs and noticed the HTTP Error Code 401 (authorization error) coming back from web services when the web application requested our java script proxies. It turns out that in order to allow communication with the services via SSL, you need to configure additional binding configuration. See below our sample service model configuration. Hope it will save you a few hours of troubleshooting. 

<system.serviceModel>
    <behaviors
>
        <endpointBehaviors>
            <
behavior name="jsonBehavior">
                <enableWebScript />
            </
behavior>
        </endpointBehaviors>  

        <
serviceBehaviors>
            <behavior name="myServiceBehavior"
>
                <
serviceMetadata httpGetEnabled="true" httpGetUrl="" />  
                <serviceDebug includeExceptionDetailInFaults="true"
/>
                <serviceThrottling maxConcurrentCalls="100"
                                          maxConcurrentInstances="1000"
                                          maxConcurrentSessions="1000"/>
 
            </behavior
>
        </
serviceBehaviors> 
    </behaviors
>  

    <
bindings> 
        <webHttpBinding
>
            <
binding name="sslBinding"> 
                <security mode="Transport"
/>
            </
binding>
        </webHttpBinding> 
    </
bindings>  

    <serviceHostingEnvironment aspNetCompatibilityEnabled="true"
/>
        <
services> 
            <service behaviorConfiguration="myServiceBehavior"
 
                        name="CourseCatalog"

            
<endpoint contract="CourseCatalog"
                               address=""
                               behaviorConfiguration="jsonBehavior"
                               binding="webHttpBinding"
                               bindingConfiguration="sslBinding"/>
 
                <endpoint contract="IMetadataExchange
                               address="mex
                               binding="mexHttpBinding" />
  
            </service>
 
    </services

</system.serviceModel>

Happy coding!

Welcome to ModelBlog

Thank you for visiting ModelBlog. We hope the time you spend with us will be both entertaining and worth your while. Have fun!

Authors

Search

Archive

Tags