SharePoint Guidance: Developing SharePoint Applications

The patterns & practices SharePoint Guidance team have just released a new Guidance for Developing SharePoint Applications. Whether you are a newbie or an intermediate or an experienced SharePoint developer, this guide is going to help you improve your SharePoint development skills. Many people (at least the newbies) fail to get the SharePoint basics right and this guide explores various application and design patterns to help build a good SharePoint application.

From the guide:

This guidance covers the following subjects in the context of SharePoint applications:

  • It describes how to use application and design patterns to help solve common development challenges.
  • It describes the design and use of the SharePoint Guidance Library, which is a set of reusable components.
  • It describes how to design and secure a site topology.
  • It describes how to design and implement an application that is scalable, manageable, and configurable.
  • It describes how to integrate a SharePoint application with Web services. This includes security options and design tradeoffs.
  • It describes how to develop a SharePoint application that can publish and deploy content.
  • It describes flexible approaches to navigation and branding, including how to implement custom cross-site collection global navigation and custom site navigation.
  • It includes guidance on many of the common decisions that developers encounter, such as choosing between a list and database.
  • It includes implementation examples that are demonstrated in the Partner Portal application, the Training Management application, and in the QuickStarts.
  • It includes guidance on testing. For example, there are discussions on unit tests, build verification tests, and continuous integration tests.
  • It includes a discussion of scale and stress testing that uses the Partner Portal application as an example.
  • It describes how to set up different team build and testing environments.
  • It describes how to manage the application life cycle through development, test, deployment, and upgrading.
  • It describes a team-based application development.

You can download the guide here.

Just for the heads up, the guidance also has the SharePoint Guidance Library logging and tracing component that can be included in your SharePoint applications to log events/error messages.

Who are SharePoint Developers and What they do?

I came across an interesting article today regarding SharePoint Administrators Vs SharePoint Developers

The post starts with how the recruitment websites do not differentiate between a SharePoint developer and administrator role, but ended up with listing down (what might be) the differences between a SharePoint developer and administrator. I was surprised to see how the developers’ responsibility was narrowed down to just 3 points! Below is the excerpts from the post comparing the developer and administrator:

SharePoint Administrator

  1. Responsible for Servers in SharePoint farm
    • Includes set-up and configuration of SharePoint Services on Servers, maintenance of Web Front End Servers, Indexing Servers, and some aspects of maintaining Database servers. (In smaller companies like mine, the job of SharePoint administrator also inherits the job of Database administrator, and this should be accounted for in deciding compensation.)
  2. Creation and maintenance of Sites and Site Collections, as well as all associated databases and services, such as Shared Service Providers, and Extended Authentication providers if needed.
  3. Set-up and maintenance of Outgoing and Incoming e-mail services
  4. Qualification, Installation and Maintenance of any Plug-in, Feature, Web Part, Template or Solution, including 3rd party software or applications.
  5. Responsible for back-up and recovery practices, and maintaining integrity and reliability of access to information.
  6. Responsible for set-up and configuration of Excel Services and InfoPath services (If available).
  7. Responsible or establishing and/or maintaining end user access policy and permissions.
    • This may also include the ability to delegate permissions authority to other users, as deemed appropriate.
  8. Responsible for implementing and maintaining search services, including defining search scopes.
  9. Responsible for implementing and maintaining user profile properties, including “MySites” functionality.
  10. Responsible for coordinating and implementing best use practices, and communicating with company management best use scenarios.
    • Best use practices may include creating simple workflow processes and simple site customization.

SharePoint Developer

  1. Responsible for design, creation and implementation of custom webparts, .NET user controls, custom Master Pages, custom Layouts, custom Event Handlers, features, solutions,  and templates to be used in a SharePoint environment.
  2. Responsible for integrating non-SharePoint related services into SharePoint applications as needed.
  3. Demonstrates a proficiency in any of the following; XML, CAML,  XSLT, HTML, DHTML, ASP.NET, C#, ASP, JavaScript, style sheet/CSS

I myself am a SharePoint developer, but certainly I do not fall *only* to those 3 job responsibilities as told in the post. The SharePoint Administrator’s job responsibilities doesn’t look like it would work well in all occasions.

If I (my team) am building a SharePoint WCM website, I make sure I (as a team) do everything  – create site collections, site columns, content types, libraries, lists, permissions etc., I package everything as WSPs and also write scripts that will create the site collection, sites, sub-sites, install WSPs etc., I then pass on these scripts and WSP packages to the ‘SharePoint Administrator'  who will then run those scripts, install WSPs and activate various features which will install site columns, content types, lists, permissions, libraries etc.,

Every project is different and it is going to vary on the project scope – Intranet Portal Vs WCM Website 

If you are building an Intranet MOSS website, in most cases you will end up using out of the box functionalities, except may be changing few things in branding, like the logo, site theme etc., On the other hand, building WCM website is not going to be as easy as building an Intranet Portal. A developer needs to know various SharePoint concepts before dwelling into the project. The developers also need to understand the site structure when working with SharePoint WCM projects and provide an automated way which would ease in deploying the site aspects across various environments (integrated dev, UAT, production). The only environment which has limited access to developers is the Production Environment, but that doesn’t keep the development team out of the project. In many cases, the development team lead (who is a developer) will guide the SharePoint Administrator in deployments in the production box. The team (along with developers) should also take care of content deployment as sometimes the content deployment can fail due to a small piece of code segment. SharePoint developers’ responsibilities will grow depending on the project scope and will vary from time to time.

According to me, a SharePoint Administrator is one who manages the SharePoint Infrastructure, co-ordinates with the Network Infrastructure guys on building the SharePoint Farm, enabling various SSPs, managing various updates etc.,. Testing & evaluating various new updates (like – infrastructure updates, SP2 etc.,), third party integrations also form a major responsibility of the SharePoint Administrators.

There is also the difference between SharePoint Customization and SharePoint Development

Last but not the least, don’t forget the SharePoint Consultants and the BAs who interact with your Customers and bring you money!

SharePoint: Newbie? Unable to find Developer Help?

Are you a newbie to SharePoint development? (or) Are you looking for a one place where you can find information about help in SharePoint products and technologies?

Andrew Connell has written an excellent article regarding finding developer help for SharePoint products and technologies. Discover where to find the SDKs, peer-to-peer forums, MSDN developer centers, and Microsoft TechNet resources you need as you develop with Microsoft SharePoint Products and Technologies.

Even if you know SharePoint, the article is quite helpful and worth to be bookmarked ;)


Creative Commons License
Chaks' Corner Blog by Chakkaradeep Chandran is licensed under a Creative Commons Attribution-NonCommercial-NoDerivs 3.0 Unported License.
Based on a work at www.chakkaradeep.com.
Permissions beyond the scope of this license may be available at http://www.chakkaradeep.com.