After a couple of weeks on holiday, I am back into it... and I thought I would get started with a post on the way I customise a SharePoint project. This post won't cover coding or how to configure sites, but more of the philosophy behind the customisation of a deployment.
When I get a new project to sink my teeth into I generally split the customisation into three parts: Configuration, SharePoint Designer and Custom Coding.
The three phases
As I explained above, I use three phases when I do any customisation in SharePoint. Some projects may only need to use the first, some may need all three. Below is an explanation of each of those phases:
Configuration
Using SharePoint's out-of-the-box functionality you should be able to achieve between 60%-80% of the required customisation (or 100% if it is a less complicated project).
Using Sites, Lists, Content Types, etc. you should be able to get a working example of a site. Usually this can be done with the users to ensure your requirements are correct and saves re-work later on.
I also find starting the build like this, you can let the project team loose on the site and as they get a feel for it they may move the requirements... it is better it happens at this stage, rather than on delivery when a lot more work has been done to the solution.
Once the initial configuration has been completed and a gap analysis has been done to determine what (if any) further customisation needs to be done you will need to crack open either SharePoint Designer (SPD) or Visual Studio (VS).
SharePoint Designer 
The next phase of any custom work I do requires SharePoint Designer (SPD). SPD is a tool that doesn't require masses of coding (VB.NET or C#) knowledge and can be used by technical BA's or skilled up power users. This doesn't mean developers can't use it as well!
I generally use SharePoint designer to:
- Change the look and feel for the site
- Display Cross-Site information in the Data View Web Part
- Use SP Data source controls to populate ASPX controls
- Do basic customisation of list views using the Custom List Form Web Part
- Create basic workflows
- Generally messing with the SharePoint Pages
Most of the time SharePoint Designer will get you close to the finish line. There are a few issues with it (not being able to easily move Workflows is one of them), but the good out-weights the bad!
Custom Coding (Visual Studio) 
The third and final phase in any custom work is the cutting of custom code. The tool I use when customising a project in this way is Visual Studio. This is the realm of the developer and comes with all of the "extras" that go with full custom development (support, bugs, upgrade changes, etc.). But, VS allows you to really make the final changes to customise the project to 100% of the users requirements.
I use VSeWSS and other tools along with VS to do the following tweaks:
- Create full site definitions so re-deploying the same site template is easy!
- Create state machine and complex sequential workflows
- Create custom Web Parts to modify and display information
- Write event handlers to catch and process requests
and the list can go on and on... Where there are any gaps left after the first two steps, it should be cleaned up with code.
What to use and When
The size of the project generally dictates how far down the list you will need to go to get the solution you want. Below is a table that shows where you which direction you need to head:
| Project Outline |
Skills Required |
Products to use |
You are required to create a project management site that has the following functionality:
- A place to store Risks, Issues, Communication Plans, Team Tasks
- A place to store meeting information
- A place to keep documents
- A calendar to keep track of important events
- A way to track tasks and view due/over due information
|
Knowledge of List & Site creation. This can be a Power User, BA, IT Pro or Developer. |
General SharePoint Configuration |
You are asked to enhance the site with the following functionality:
- A workflow that creates an unassigned task when an issue has been raised
- A summary page displaying information on different phases of the project
- Dashboard showing risk information using Red Light/Green Light indicators
|
SharePoint Designer Experience, HTML & CSS.
This can be a Technical BA, Web Designer or Developer |
SharePoint Designer |
The project team have used the site for several weeks and come back with the following enhancements:
- A Web Part that shows statistical information about communications that have taken place. This Web Part is to be available to anyone to place on their personal page views
- A workflow that produces an Office 2007 document with information from the issues & risk list to be used as a weekly report
|
VB.NET or C# programming skills & SharePoint development experience, generally this is the domain of a programmer. |
Visual Studio and any other development tools |
Conclusion
Hopefully the above information will prove useful when deciding what path to take with customisation of your SharePoint project. If you have a large project that requires a fair bit of custom work, try and get the most out of SharePoint before you start using SharePoint Designer or Visual Studio... it is amazing what a little bit of planning and architecture can do! Anywhere from 60% - 80% of a large project can be completed without even opening SPD or VS.