Five Years of SharePoint

Recently I accepted a new position as a Software Development Manager, not working with SharePoint; this is an exciting new challenge for me, as I’ve been fully immersed in the technology for some time now. I started working with SharePoint at IBM 5 years ago, and since then I’ve worked with various deployments pretty much coast-to-coast in Canada, from Vancouver to Ottawa to Halifax. I wanted to make a post reflecting on 5 years of working with Microsoft SharePoint, and discussing at a high level some of the observations I’ve made of the various SharePoint deployments I’ve worked on over the years in order to help others understand what makes SharePoint a success (or failure).

Governance

“Governance uses people, process, technology, and policies to define a service, resolve ambiguity, and mitigate conflict within an organization.”
― Joel Oleson, 10 Steps to SharePoint Success

Governance has always been a hot button topic in SharePoint, and will be for some time; in my opinion, lack of Governance is one of the primary sources of frustration and failure for every SharePoint deployment. This conflict is tragic, because at its heart Governance is the simple act of planning and setting expectations, something which everyone acknowledges must be done, but all too often do not actually do.

For many organizations, Governance is the opportunity to take a moment before implementation and actually think about:

  1. How do we intend to use SharePoint?
  2. What are the limitations of  our SharePoint deployment (technical, human resources, knowledge, or self-imposed)?
  3. Are there legal implications we must adhere to, and how do we do that in SharePoint?
  4. What specific challenges will be addressed by specific features of SharePoint?
  5. What are the expectations for the various stakeholders (Executive, IT, trainers, end users, etc)?

#5 is a big topic, because this is where a lot of conflict comes into the organization. At some point, someone will think it was someone else’s job to fix/ prevent something bad that happened, and if you don’t have some kind of written policy or process, you’re asking for a round of the Blame Game, and that’s just poison in any organization.

Setting Objectives

A common objective when deploying SharePoint is “increase collaboration and communication”, “provide document sharing”, “use SharePoint as a development platform”. I would argue that these aren’t objectives, they are aspirations, because they are exceedingly difficult to measure through hard data (user surveys are difficult to count), and they represent broad, amorphous goals. Sure, there may be 400,000 documents in SharePoint, but that’s a storage metric, not a collaboration metric that indicates how, when, and if people are actually using those documents and to what effect.  How can you measure if someone is communicating more effectively? Perhaps you could infer that by seeing that people are performing more work in shorter periods of time, but maybe that’s just the espresso machine you installed last month.

An objective is something that can be measured, well, objectively, and contains two critical ingredients:

  1. What you are trying to do
  2. What will tell you that you did it

Good examples of objectives are: “Use InfoPath, SharePoint, and SharePoint Workflows to reduce TPS-421A form processing time from 5 days to 3 days.”, or “Reduce meeting minute approval time from executives from 20 days to 10 days”.

Objectives can be on the micro-scale, but tie into the broader strategy of SharePoint as defined by your Governance. As objectives are met, those successes should be celebrated, and similarly if objectives are not met, those failures should be analyzed, lessons learned, and finally addressed; either way, there must always be new objectives developed and added to the list.

Simply put, if something cannot be measured, it cannot be managed. If a system – any system – SharePoint or otherwise – cannot be managed, then you have real and serious problem on your hands.

Make the Technology Work for People, Not the People Work for Technology

There’s a common saying among a lot of SharePoint admins I’ve worked with that people have to learn to do things “The SharePoint Way”. I spent much of the early part of working with SharePoint trying to get people to change how they work towards The SharePoint Way, with mixed success. Sometimes people have been doing a process for 5, 10, or even 15 years, and they’ve seen technologies like SharePoint come and go. You can’t expect to make people’s processes change overnight, particularly if they haven’t been sold on SharePoint. When I started to see real success, it was because I accepted that people have a process that can be fit into SharePoint, and that SharePoint can be adapted to fit people as well – in essence, finding a middle ground between people and technology.

When you start showing people that what they do can work in SharePoint, and often much more efficiently than without SharePoint, you not only make people more productive, you often find internal champions that are willing to promote and teach others when SharePoint administrators aren’t around.

Finally

It’s an exciting time for SharePoint and Microsoft. SharePoint, like so many other services and applications, is jumping headfirst into the cloud. Yammer stands to change SharePoint in a fundamental and overwhelmingly positive way. With Steve Balmer leaving the big chair, and other leadership changes at Microsoft, there are some great opportunities for positive change and development – particularly in the cloud and mobile arenas.

While I may not be working with SharePoint day to day as I have been for years, I look forward to seeing how the technology changes over time and continues to meet the challenges of the various organizations and businesses that deploy it.

 

 

 

 

Don’t Start With SharePoint

A question SharePoint administrators are often asked is: “Can we make a [time entry system/ inventory tracking/ other application] in SharePoint?”

The answer is usually: Yes. Absolutely. Maybe. Sorta. Hold on a second.

Why Are We Making This In SharePoint?

Usually the response to this is “We want to strategically leverage our existing investments in technology to maximize our ROI”, which is a fancy way of saying “We want to use SharePoint because we have it.” and absolutely that’s part of the answer. If you’ve invested the time and resources into deploying SharePoint, you should use it.

Most often, however, the real answer is “Because it’s easy to make stuff in SharePoint”, which is a dumb guy (that’s me!) way of saying “Deploying a solution in SharePoint would provide a value-added opportunity for minimal development investment”.

Users know that in 10 minutes, you can have a site up and running and be creating custom lists and workflows up the wazoo. No other platform affords that level of ease of use and development. It’s one of SharePoint’s greatest strengths, and also the reason why it so often gets abused (unless you have strong governance, in which case internet high five).

Requirements Schmequirements

Since SharePoint is both easy and available (hey, wait a second..) users will often forego the requirements gathering and project definition phase and jump straight into “I gotta box a’ Lego and I’m gonna build something!” phase. This is a huge problem, not only because it virtually guarantees scope creep and Rube Goldberg-ian solutions, but also because inevitably, you run into SharePoint’s famous out of the box limitations.

Cart before the horse SharePoint Development
Whoa there, Buttercup

Achtung, Baby

In SharePoint, the out of the box features usually get you 80-90% of the way to your goal. The other 10-20% forces you to make the tough decisions:

  1. Buy a third party solution (If it exists)
  2. Develop a custom solution (Open wallet wide. Wider.. wiiiiider, that’s it. This may sting a little.)
  3. Live without it (But I really, really wanted it, dad!)

If you don’t sit down and work out your Project Management 101 type stuff (background, objective, definition, requirements, budget, etc). You are going to run headfirst into that 80/20 wall at 100 km/h. After you’ve already invested dozens or hundreds of hours, spent much of your budget, and have a mostly-working solution, you may find that options 1-3 above leave a bitter taste in your mouth and cause you to utter the fated words..

“I Hate SharePoint.”

I hear you, and I’ll let you in on a trade secret: Just about every SharePoint Administrator I know hates SharePoint. But not really. SharePoint can be a tumultuous beast sometimes. You have to keep in mind that SharePoint is like a toolbox full of tools. It’s easy to pick up and start banging around making stuff, and that’s great. However if you need to dig the foundation for a house and all you’ve got is a hammer, you’re going to have a bad time, and maybe it’s time to look at buying a backhoe.

Use Your Thinking-Meat

(That means brains, for all you rocket surgeons our there)

I’ve never been a fan of falling into the trap of when you have a hammer everything looks like a nail. I don’t believe that SharePoint is all things to all men, because frankly nothing is – if anyone tries to tell you differently, don’t believe them. It’s more important to figure out the best execution for a solution to a problem than it is to try and shoehorn the solution into the problem and hope for the best.

So sit down and work out who you are and what you’re trying to do. Write it down. Leave SharePoint out of it. Be a technology agnostic and just figure out the what the best possible solution for your project is. Once you’ve done that, you can look at how far SharePoint’s out of the box features will take you, and what it will take to get you the rest of the way.

Maybe that means deploying your time entry system in SharePoint; or maybe that means calling up SAP, I don’t know. The best thing you can do is figure this out before you’ve gone so deep down the road you’re on you’re forced to make some potentially very hard decision.

So don’t start with SharePoint. Start at the start, with requirements, and when you reach the end, stop.

List All SharePoint Site Request Access Emails In A Web Application

When a SharePoint site is created, by default the creator’s email address is automatically populated into the “Manage Access Requests”. However, sometimes the creator isn’t the site owner, and doesn’t handle the day-to-day access requests for the site.

The script below will go through all sites and site collections within a designated web application and list the site title, url, and Access Request email.

If you’d like to spit out an inventory CSV file with the URL and number of characters, just use the Out-File Cmdlet:

FindAccessEmail | Out-File -filepath C:\wherever\AccessRequestEmails.csv
Add-PSSnapin Microsoft.SharePoint.PowerShell -erroraction SilentlyContinue
 
#Starting web app
$site = "http://sharepoint.company.com"
 
# Function: FindAccessEmail
# Description: Go through a target web application and list the title, url and access request email.
function FindAccessEmail
{
	$WebApps = Get-SPWebApplication($site)
	foreach($WebApplication in $WebApps)
	{
	    foreach ($Collection in $WebApplication.Sites)
	    {
	       foreach($Web in $Collection.AllWebs)
	        {
				$siteDetails = $Web.title+'#'+$Web.url+'#'+$Web.RequestAccessEmail 
	            write-host $siteDetails
				Write-Output $siteDetails
	        }
	    }
	  }
}
#Run Script!
FindAccessEmail