Friday, November 12, 2010

The “Soft” part of SharePoint - Part 3, Solution intake process

Where developer should have a standard SharePoint Development process, which describes the development best practices in your environment, should every SharePoint administrator have a solution intake process.

Poorly implemented custom solutions can introduce security or performance risks, increase the cost of support, complicate deployment, and reduce productivity. Over the past years I have seen that developers do not always know how to develop good solutions for SharePoint. Even though SharePoint is build on .NET, developing for SharePoint is a totally different discipline than developing for .NET. More than often I have seen developers delivering code that was either seriously affecting the environment, not using the SharePoint deployment framework or very poorly documented.

In order to guarantee quality, it is very important to create a solution intake process. The process verifies if certain best practices have been followed and the solution is safe to deploy the environment:

  • Create a code acceptance checklist for the developer to fill out.
    • This checklist forces developer to sign off their solutions against a list of Best Practices.
  • Check the code using SPDisposeCheck.
    • This tool checks the custom code for memory leaks and proper use of disposable objects.
  • Check deployment documentation.
    • Check if the deployment documentation is correct and contains the required information.
  • Check solution package
    • Check if the solution package is created properly, using the Solution Deployment framework technologies.
If you want to have a good example of a solution intake process, Microsoft has released some documents for their SharePoint Online cloud service. Their intake process is really strict and requires the developer to design, document and test the solution before handing it over to Microsoft. They have published their process in the following documents:

More information:
Check list example:
Using Disposable Object:

No comments: