Is the SharePoint Community an incubator of entrepreneurship?

 

Editor’s note: Contributor Jose Antonio Morales is the Chief Innovation Officer at NYCP. Follow him @joseamorales.

2011-12-29-SPEntrepreneur-01.jpgIdentifying if the SharePoint community hosts entrepreneurs would be a valuable discovery. It would allow us to expand on the topics we discuss and eventually benefit the growth of business opportunities.

During the past year I met a few management and leadership gurus. I’ve met fascinating managers and business leaders. I’ve also been close to the work of many others I have not yet met.

Entrepreneurship here, entrepreneurship there. I’ve heard that word so many times… Even more often than innovation!

When talking with SharePoint pros I normally hear other words: enterprise, community, mobile, strategy, consulting and innovation.

That realization makes me wonder why I don’t hear the word “entrepreneurship” more often.

The SharePoint Community is very resourceful and creative. Always finding cool ways to get around challenges and even more outstanding, sharing their knowledge with the rest of us. That sounds to me like a great incubator for entrepreneurship!

If your heart beat takes you to happy mode when you risk taking calls, when ideas seem realizable or when the opportunity for improvement exists, it is likely that you are a born entrepreneur.

I’m sure that there is a community of SharePoint entrepreneurs out there. Are you one of them?

I’ve created a one question survey to see how our community responds to the question: Are you a SharePoint Entrepreneur? http://www.surveymonkey.com/s/6SDDBSV

Format DateTime in SharePoint 2010 based on XSLT 1.0

 

Editor’s note: Contributor Hai Nguyen Tuan is a Developing Lead at Bamboo Solutions Corporation. Follow him @tuantomy.

If you were bored with the date time format that appears in a SharePoint list and you think it should be changed to an easier view, here’s a tip. The difficulties come from a lot of problems especially XSLT in SharePoint 2010 as it was never upgraded from SharePoint 2002, still using version 1.0 until now.

Of course, there are many options for developing on SharePoint. For example, you can use the ContentQuery Web Part to correct the date time format like FaceBook or Google Plus:

2011-12-28-FormatDateTime-01.jpg

However, to do that, now you just follow up this instruction to customize your XSLT and see how it shows on the page.

Click here to download the library.

1) Copy the content of the file after downloaded, paste it into the file named "thread.xsl" in folder 14/Template/Layouts/Xsl

2) Go to the line for template called "StatusBar" (<xsl:template name="StatusBar">) and remove all the code for Modified date time. Or replace by:

<xsl:call-template name="Bamboo_FormatDateTime">
    <xsl:with-param name="theDate" select="$thisNode/@Modified."/>
    <xsl:with-param name="theDateFormat" select="$thisNode/@Modified"/>
</xsl:call-template>

3) Save and reset IIS

Note:

  • You can put the code anywhere if you want to show the time stamp more easily.
  • Only the StatusBar column has a defined "Modified." field in the schema, it’s the original value of Modified column. So, if you do not find out the value of "Modified." that means, in the schema file, the field did not create a reference to the original value Modified.
  • You also don’t care about the LCID of site or user locate, because the value of "Modified." always returns the value in 1033 regional and the format function based on this column to show easily.

Got REST? Querying SharePoint List data using REST services client-side: Part 1

 

Editor’s note: Contributor Craig Pilkenton is a Senior Microsoft Consultant at CDW.

So you need to get some data out of SharePoint, show it to your users in a non-utilitarian way, but don’t have time to build a full .NET Web Part? Find a List DataView too limiting and XSLT too painful? SharePoint (with JavaScript/jQuery) has your back.

Since SharePoint 2003 we have always had client-side ASP.NET Web Services we can query to pull List data out to show as we wish (http://Server04:50000/Examples/_vti_bin/Lists.asmx), but no matter the query language we used, you’ve always had to create and receive SOAP (Simple Object Access Protocol) packets using XML-based CAML (Collaborative Application Markup Language) over the wire.

Below is just a simple example of a packet we would need to send to SharePoint after ensuring its validity using a 3rd party toolset. If the CAML query is wrong SharePoint will only return a vague CAML error.

Looks like fun, huh? I thought not, and that’s just the initial POST request!

To make querying easier, Microsoft implemented REST (Representational State Transfer plus HTTP) into the SharePoint 2010 platform using ADO.NET Data Services to make client-side data retrieval easier and more lightweight. What is REST, you ask? It is the Web itself as it was originally intentioned, a client either in transition between application states or "at rest“, able to interact with its user, but creates no load and consumes no per-client storage. It is also security-trimmed just like everything else in the SharePoint platform.

So what does that really mean? It is simply SharePoint data, or any oData-compliant (Open Data Protocol) information, output to the client like an RSS feed.

2011-12-27-GotRest-01.png

Note: if you are not seeing the SharePoint List information as XML in the browser then you’ll need to turn off RSS feed reading. In Internet Explorer 7 or greater, go to Tools–>Internet Options–>Content tab–>Feeds and Web Slices-settings

2011-12-27-GotRest-02.png

Here’s an example from NetFlix’s oData feed of their movie catalog. Note the QueryString variables and XML format of the data returned.
http://odata.netflix.com/Catalog/Titles?$top=10&$orderby=ReleaseYear desc

2011-12-27-GotRest-03.png

Well that looks pretty simple, doesn’t it? We can just view it in any current browser without any custom tools. So how do we access it? For SharePoint 2010, we change our Site URL to access the always-on service.
http://Server04:50000/Examples/_vti_bin/ListData.svc

2011-12-27-GotRest-04.png

So what are we seeing here? By loading that Site URL with the service extension we are automatically calling SharePoint’s REST service for that specific site (without a SOAP packet) and receiving a quick, light-weight output of all the Lists for that site with little effort.

Note: interacting with the REST service is case-sensitive for the List name and the QueryString variables. If you aren’t receiving any data back, check your values for typos as this is the ‘error screen’ you will see.

2011-12-27-GotRest-05.png

Now we’ll target a specific List by copying the name of our target List from the page (to avoid typos) and appending it to our URL, telling the REST service to ‘target’ that list for output. This will then show details of the List itself and all the entries we’ve previously entered (10 in my example).
http://Server04:50000/Examples/_vti_bin/ListData.svc/EmployeeDirectory

2011-12-27-GotRest-06.png

That’s great and all, but your users probably want to see only a subset of the records, maybe even with a filter. Using the ADO.NET Data Services guide (search for ‘Structure of Web Data Services URLs’), we’ll begin passing some QueryString variables against the List. The primary ones you will probably use are $orderby, $top, and $filter with some Logical Operators.

Note: Interacting with the QueryString requires putting a ‘?’ before the first variable passed and ‘&’ before each subsequent variable after that.

Let’s first only pull the top 2 of the records back as that’s what the business is looking for.
http://Server04:50000/Examples/_vti_bin/ListData.svc/EmployeeDirectory?$top=2

2011-12-27-GotRest-07.png

That’s good, but we forgot to sort by anything to control which records are returned. We’ll now add an order by clause to correct that.
http://Server04:50000/Examples/_vti_bin/ListData.svc/EmployeeDirectory?$top=2&$orderby=Modified desc

2011-12-27-GotRest-08.png

And finally the business decided they don’t need to see certain individuals, in this case Inactive Status, so we’ll filter by that.
http://Server04:50000/Examples/_vti_bin/ListData.svc/EmployeeDirectory?$top=2&$orderby=Modified desc&$filter=StatusValue eq ‘Active’

2011-12-27-GotRest-09.png

And that’s all that’s needed to get the data back, with all the ‘data source debugging’ done in the browser. In the next part of this series, we’ll take our querying of the SharePoint data to the next level and begin consuming it with JavaScript/jQuery to display on a Site for our users.

SharePoint: People and Groups Pagination

 

Editor’s note: Contributor Stuart Blank is a Senior Consultant at Sogeti. Follow him @stuartblank.

I found a SharePoint group that contained over 100 users however I was unable to click through and see all the members of this group. The culprit was that the view of the group wasn’t properly configured to display items in batches or in other words, pagination was not setup.

To reconfigure the view of this group normally you would edit the group view however you’ll quickly find that this isn’t possible at the subsite level. Go to the settings page at the site collection level and click on the People and Groups link to see the available SharePoint groups within this site collection.

2011-12-26-SP2010PeoplePagination-01.png

Click on the SharePoint group in the Quick Launch that is having the pagination issues (note: if the SharePoint group isn’t on the quick launch, click on More… to reveal all available SharePoint groups within this site collection). Once in that particular group, click on the List Settings option under the Settings menu (note: if List Settings is not an option, either you are not at the Site Collection level or you do not have the appropriate permissions).

2011-12-26-SP2010PeoplePagination-02a.png

Once on the List Settings page (listedit.aspx) click on the view to edit the one that has the pagination issues.

2011-12-26-SP2010PeoplePagination-03.png

Then select the "Display items in batches of the specified size." and increase the number of items to display per page.

2011-12-26-SP2010PeoplePagination-04.png

Fairly straight forward however, why would we be able to only make these changes at the site collection level?

Creating a SharePoint Vision using the Gamestorming Cover Story Technique

 

For those of you that read this blog you will know that I am a huge fan of the book “Gamestorming: A Playbook for Innovators, Rulebreakers and Changemakers

I use many of the techniques presented when running requirements gathering workshops for SharePoint and one that I am particularly fond of is the Cover Story game.

A clear, compelling vision for SharePoint is a must if want to have the best chances of success. However simply asking a bunch of stakeholders the question “So what is the vision for SharePoint?” is probably not going to get you the results that you are hoping for. An effective way to get users to describe their vision for SharePoint is the Cover Story game. As taken from the Dave Gray’s blog:

Cover Story is a game about pure imagination. The purpose is to think expansively around an ideal future state for the organization; it’s an exercise in visioning. The object of the game is to suspend all disbelief and envision a future state that is so stellar that it landed your organization on the cover of a well-known magazine. The players must pretend as though this future has already taken place and has been reported by the mainstream media. This game is worth playing because it not only encourages people to “think big,” but also actually plants the seeds for a future that perhaps wasn’t possible before the game was played

The reason that this works particularly well for SharePoint is that there are a number of possible visions that an organization may have for the platform. The Cover Story game gives you enough structure to ensure that you get tangible examples without constraining users from being able to really explore the many possible end states.

Running the game

In order to play the game you break down your users into groups of between 4 and 6. Ensure that each group has markers and get them to fill in the template below which is usually printed on a big poster stuck to a wall.

2011-12-23-SPVision-01.png

Explain the object of the game is to define each category on the template:

  • Cover: Tells the story of their big success
  • Headline: The substance of the cover story
  • Sidebars: Interesting facts about the story
  • Quotes: Quotes from potential end users of the solution
  • Brainstorm: documenting initial ideas (this is important!)
  • Images: Supporting the content with illustrations

At the end of the time period, usually an hour, get the groups to present their cover story, essentially their vision of SharePoint, to the rest of the groups and then discuss.

Real World Example

I ran this game with a large financial organization (let’s call them FinCorp) that was implementing a search solution on the SharePoint platform. Seeing how search can be leveraged in different ways to address different needs I was interested to determine the vision of the search solution. Here are some of the results:

Headlines

  • “FinCorp Search provides slick, smart service”
  • “FinCorp search promotes knowledge sharing with other departments thus driving down costs”
  • “FinCorp search reduces the time to find experts and allowing greater customer satisfaction”
  • “FinCorp search allows users to find what they need and allow them to express the opinions on search”

Some pretty interesting statements there and after drilling down further a number of different possible visions presented themselves. If you notice search was leveraged in a few different ways: promoting knowledge sharing, finding experts, and allowing people to express their opinion on search. It was not all about just ‘Search will help me find stuff quicker” but it was really more about being able to connect people and share knowledge easier. All great information for the SharePoint Analyst when the time comes to prioritize the areas for requirements elicitation.

Quotes

  • “Not only can I find WHAT I need, but I can find WHO I need as well”
  • “I love it that I can connect with other employees to find a running partner through our people search”
  • “As a new employee I can put a name to a face quickly so I become part of FinCorp’s family quicker”
  • “I knew that we had the information somewhere inside FinCorp, now I know where”
  • “Not only did I find what I was looking for, but I also found related content that led me to new ideas”

Once again the quotes were interesting. A strong theme that emerged was that searching for people was just as important as content (great information for you search requirements gathering plan as a focus area) and that finding related content was almost as important as the content that you were looking for.

However some other interesting themes emerged. For FinCorp helping people connect, both socially and professionally, was very important and search can be leveraged for that as well. In addition this organization was trying to become more agile and innovative in its practices. Exposing related content and popular keywords was also very important.

The Outcome

So what was the outcome of this workshop for us:

  1. We knew that since people were just as important as content that we really had to target requirements gathering activities at content but also all the elements for a successful people search solution ( User Profiles, Taxonomy Terms, Custom Profile Fields and so on)
  2. We found that by introducing a ‘Related Keywords’ webpart on the search result page that users will be exposed to other items of interest, encouraging them to explore topic areas outside their immediate interest
  3. We allowed users to rate their search experience and suggest best bets which was hugely popular

Of course I haven’t done a great job in explaining the many details of the game but I would encourage you to buy the Gamestorming: A Playbook for Innovators, Rulebreakers and Changemakers book and read it for yourself. The Cover Story exercise really promotes people thinking outside the box in an environment that allows for great conversation and ideas to come forth.

If you are starting on your SharePoint journey and need your stakeholders to articulate their vision for SharePoint then try using this technique, you will find that it will product some fantastic results.

3 things SharePoint 2013 can learn from rival products

 

2011-12-21-SP2013-01.pngNo one really knows what SharePoint 2013 is going to look like, how it will function, or indeed if it will even appear in 2013. Well, no one outside of Microsoft. Oh and a few people with very strict NDAs. But basically no one really knows much about the direction Microsoft might choose to take. That doesn’t stop a little bit of speculation though. So what are the 3 biggest lessons SharePoint 2013 can learn from rival products? Let’s have a look:

1. Better integration with external (social) platforms

SharePoint 2010 lets me pull in data from external systems, using a number of methods. I can use external lists, specific webparts, or custom code if I have to. But SP2013 really needs to take a lead from the likes of Facebook, LinkedIn, and Twitter and improve how it talks to other platforms. Twitter has lead the way here, and now integrates into a wide number of other sites and applications (even your iPhone). Facebook is trying, and seeing considerable success, to make itself the defacto authentication method on the web.

SharePoint MySites are a prime area for improvement here. I don’t want to post an update, I’ve already done it on Twitter. Why can’t it be pulled through automatically? All my skills and biography information can be found on LinkedIn, why can’t I select parts of that to populate my MySite with? There is so much potential in this area that is simply not being exploited.

2. Dropbox style document management

SharePoint 2010 is a very good document management system. It is a core strength of the product. But in all my years, I’ve never seen consistent use of document libraries mapped to network drives. Getting documents into SharePoint is key to its success as a DMS. Mapped drives make it easy, but it always seems like a big deal to sort out.

SharePoint 2013 should come with Dropbox style apps for a whole host of platforms (At least Windows, Mac, iOS, and Android). Each app installs on the appropriate platform and connects to a SharePoint implementation. The user gets to select the relevant sites and document libraries (SharePoint permissions allowing of course) and these are created as folders on their file system. Any documents dropped in the folder is automatically synced to the relevant library in SharePoint. This makes files easy to add in the first place, available across different devices, and also available offline. What’s not to like?

3. Better email integration

A client I have recently worked with would like their Outlook Inbox to ‘sync’ with a SharePoint library. There are a number of ways of doing something close to this, but nothing really jumps out as the perfect solution.

Many social and enterprise platforms now include their own ‘internal’ messaging systems. Facebook is a notable example. It is not uncommon for its (albeit generally younger) users to give up on email altogether and stay inside Facebook to send messages. Huddle has recently added a new feature in this area, though they are going in a different direction. They are allowing users of Zimbra to connect directly to Huddle from within their email client. If a user gets an email from Huddle they can interact with Huddle functionality directly from the email. Contacts and content can also easily be moved from Zimbra to Huddle.

SharePoint 2013 needs to do something similar with Outlook and Exchange. There is already a degree of integration but it doesn’t go far enough. Why not build a version of Outlook webmail directly into SharePoint 2013? Let me manage and deal with my email as though it were an extension of SharePoint itself. Make it a part of my MySite and let me file content directly into libraries and lists. SharePoint is often trumpeted as the centre of ‘digital working’ (I’ve done it myself). For this to be true, email needs to come right into the centre. After all, despite some over excited tech journalists, email is not going anywhere for a long while yet – if ever.

How To: Configure SharePoint 2010 BCS connection information with PowerShell

 

If you worked with BCS in SharePoint 2010 you know that you can configure your BCS models and connection information right in the model configuration file, and that’s something developers will create for you. But once your model has been deployed to the server – all of the configuration information stays there. Some of the model details you can change using SharePoint Designer, some others you just can’t get to.

One of the most common things you’d want to change is connection information for your LOBSystem. There is no SharePoint out-of-the-box UI for it, but thankfully PowerShell can access and change BCS LOB System connection configuration.

Just so we’re on the same page, I assume you already have BCS model installed in your farm. Let’s assume your BCS system instance (LobSystemInstance) has the name of My.Project.BCSInstance; this is important to change in the commands below.

To get your LobSystemInstance value, also used in the script below, navigate to Central Administration -> Manage Service Applications -> click Business Data Connectivity Service -> switch the view to External Systems

2011-12-20-SP2010BCSConnections-01.png

In the same screen you will find your External System Name (in our case it’s My.Project.BCSSystem).

To find out External System Instance Name (in my case My.Project.BCSInstance), click on the BCS system name from the screen above and grab a value of External System Instance Name

Also, I assume you’re connecting to a SQLServer machine with the machine name of MySqlserver, you can also change that in the script below.

Open SharePoint 2010 Management Shell and execute the following script, substituting variables with your own.

That’s it – the script above will connect to the BCS system instance and change any provisioned variables with the ones in the script.

Essentially, we’ve updated the connection information to our SQL Server backed BCS connection to use a new username and password.

Loooot’s more on BCS configurations with PowerShell you can find in my newly published book!

Enjoy!

This article was originally posted on Yaroslav’s blog at http://www.sharemuch.com/

SharePoint: Making Documents Unique – Part 3

 

Proving that it all works

The first thing to do is to add a new document to a document library and ensure that the Document ID is being assigned. To do this, navigate to a document library and upload or create a new document in the normal way. Once you have uploaded the document, select the document drop down menu from the document library and select View Properties.

2011-12-20-MakingDocsUnique-Part03-01.gif

You should now see that the document properties contains a new Document ID property as shown below.

2011-12-20-MakingDocsUnique-Part03-02.gif

Modifying the View to show the Document ID

It would be useful to be able to see the Document ID in the Document Library view so let’s add it now. If you notice, there is a small downward facing arrow to the right of the Library name in the breadcrumb trail. If you click on this you get a quick context menu from where you can modify the view. Select Modify this View.

2011-12-20-MakingDocsUnique-Part03-03.gif

A form will appear showing which columns are selected for the current view; ensure that the Document ID property is checked and then click on OK.

2011-12-20-MakingDocsUnique-Part03-04.gif

The Document ID will now appear as a column in your current view.

Adding the Find by Document ID web part

There is a new “Find by Document ID” search web part that you can use and which appears by default in Document Centers and Records Centers. This enables you to immediately locate a document via its Document ID, no matter where it resides in the Site Collection.

To add the web part to the current page, click on the Edit Page button 2011-12-20-MakingDocsUnique-Part03-05.gif and then click into the page where you want to insert the web part. You will notice that the Ribbon is enabled so click on the Insert heading on the Ribbon and then click on Web Part as shown below.

2011-12-20-MakingDocsUnique-Part03-06.gif

Click on the Search category in the left hand list and then select Find by Document ID in the Web Parts list.

2011-12-20-MakingDocsUnique-Part03-07.gif

Then click on the Add button and hey presto the web part will appear on your page. Click on the Page heading on the toolbar and then click on the Save & Close button to exit from editing mode.

2011-12-20-MakingDocsUnique-Part03-08.gif

Have a go and type in a Document ID and then click on the icon to the right of the search box 2011-12-20-MakingDocsUnique-Part03-09.gif, the document will then be automatically loaded in the appropriate application.

Manual Searching

When you activate the Document ID Service, it adds a new ASPX page in the layouts directory called DocIdRedir.aspx. This page accepts one querystring parameter which represents the unique Document ID as shown below.

http://<sitecollectionurl>/_layouts/DocIdRedir.aspx?ID=LEGAL-1-1

This URL defines a permanent link to the document, even if it is moved within the Site Collection. You can try this yourself by cutting and pasting the above into the browser and substituting the Document ID with one of your own.

In the next and final article we will look at how to use the Document ID within documents.

SharePoint’s Sweet Spot as a Web Delivery Platform

 

2011-12-19-SweetSpot-01.jpgEach Web Content Management (WCM) platform has a sweet spot, and making the right technology decision really depends on what is at the heart of your online business model. Understanding the business model for your website is fundamental in understanding whether Microsoft SharePoint 2010 is the right WCM platform for you.

Should the website provide brand awareness? Should the website connect people with people, products or services? Should the website drive revenue directly through online commerce? These are just some of the questions that should be asked, but are so often overlooked, before deciding on which WCM platform suits your requirements.

SharePoint 2010’s sweet spot

The last 18 months have seen mixed reviews around SharePoint 2010 and its WCM feature set. There are however, a number of circumstances where SharePoint is hard to beat for WCM. An often over-looked fact is that very large organisations built their public facing websites on a SharePoint platform before Microsoft took SharePoint seriously as a WCM platform. We should give credit to both Microsoft and SharePoint for this and try to understand why, for these organisations SharePoint made sense.

The questions that need answering are; where is SharePoint at its best as web delivery platform, and when should SharePoint be deployed and used as a fully-fledged WCM platform? Here are the business scenarios where SharePoint 2010 WCM really does make sense:

SharePoint 2010 as a public facing application delivery platform

As websites become more focused around providing end users with tools, software, services and interactivity, SharePoint’s vast array of out of the box features prove more and more sense. Many organisations are looking to expand their ‘brochure-ware presence’ and provide site visitors with more value through interactive services that deepen the user experience, resulting in an action being taken. SharePoint’s ability to deliver social features; including user profiles, blogs, wikis and discussions boards, is a good example of how organisation can quickly build their own online community and provide end users with a richness of information that strengthens both customer relationships and their brand.

Search driven web experiences

Everyone is talking about search driven experiences that enables easier discovery of content and makes content personal and relevant to the end user. The business case is quite simple. The quicker people can find what they are looking for on a website the more likely they are to engage and take an interest one step further. Using the search technology that is baked into SharePoint, as well as FAST search (which can be implemented on top of SharePoint), it is possible to provide end users with powerful search based experiences.

Microsoft centric organisations

If an organisation is already embedded with Microsoft through the use of both server and client products, like Microsoft Office 2010, then SharePoint as a WCM platform obtains an even stronger argument, with compelling benefits. In these instances, the IT department has a single platform to support and maintain, and end users only have one set of authoring tools to get to grips with. The familiar design and development tools aid a quicker time to market. This, together with an overall lower cost of ownership can have a huge economic impact on an organisations digital initiatives.

Development heavy business requirements

Our online experiences are becoming much more complex and personal. As a society, our online expectations and demands are increasing and a direct result of this is more reliance on custom development features and functionality. Whilst anyone entering a website or software delivery programme should keep the ‘KISS’ principle (keep it simple stupid) in the forefront of their minds, development is usually inevitable. It’s therefore important to carry out development in a structured environment using best practice methodology to minimise risk. SharePoint by nature is a very open and malleable platform; it provides one of the most open API’s around. The added value of its solution and feature framework means that development can be carried out in a very structured and organised way, minimising project risk and on-going maintenance, and virtually eradicating downtime for upgrades.

In conclusion, SharePoint is not always the right technology for WCM and there are certain cases where it makes no sense at all (well, not until the next release of SharePoint anyway). It is however, a true web delivery platform that can be sized and shaped into pretty much anything that an organisation needs. Whilst there are many WCM point solutions, SharePoint is a ‘one size fits all’ solution for the enterprise.

My Two Cents on the “What Is a SharePoint Developer” Debate

 

2011-12-16-SPDevDebate-01.jpgAlthough I’m relatively new to the SharePoint Community (I just started blogging and actively tweeting earlier this year), I’m not new to SharePoint, or more specifically, SharePoint development. I’ve been developing on SharePoint for over 4 years now, first with MOSS 2007 and now with SharePoint Server 2010. So I feel like I’m qualified to add my two cents to the ongoing debates going on lately regarding what constitutes a SharePoint developer, and the different roles that are needed in SharePoint.

There have been several articles posted within the last year that touch upon these subjects. A couple that grabbed my attention are a recent article by Kerri Abraham, and a rebuttal by Mark Freeman. Kerri’s article contains links to a few other notable articles on the subject, so I’d highly recommend reading those as well for a complete background and context of the debate.

So What is a SharePoint Developer?

A few months ago I was having lunch with Kerri and she told me about an article that she was in the process of writing, in which she asserted that Laura Rogers and other power users who build solutions in SharePoint could be considered "developers", even if their changes only involved out-of-the-box usage of SharePoint or SharePoint Designer modifications. I must admit that I was taken a bit by surprise when she first threw this revelation at me. I mean, isn’t the term SharePoint Developer reserved for those of us who crack open Visual Studio and actually write code?

As Kerri was explaining her position, and after I pondered it more in the coming days, I realized that I was taking her use of the term "developer" too literally (this was even before I had read her article). You see by trade I am a developer, having started in Classic ASP and then moving on into ASP.Net and C#, followed by the transition into the world of SharePoint development.

When I develop a solution or a website, SharePoint or otherwise, there are certain processes that occur before I even start writing any code or begin implementation. At a high level – after requirements have been gathered I analyze them fully, looking at the complete picture, and then I design a solution. This could include anything from diagrams to formal design documents to proofs of concept to complete working prototypes, or any combination of those depending on the complexity of the need and the audience. And then I build it.

Since moving to SharePoint development, some of these steps are much easier, but the process is the same. I have created several SharePoint solutions that were done completely using out-of-the-box features. I have built some that are out-of-the-box and use a little SharePoint Designer. And of course, I have built many using Visual Studio. The only difference in my process for all these solutions was the implementation portion. Some involved writing code, others did not. The steps leading up to implementation were the same.

I think people who build solutions in SharePoint, those who don’t actually have the word developer in their title or function, really need to go through this same type of process. You need to think about the entire process flow when building a solution, even extremely simple ones. For example, we recently created a feedback site for users to submit feedback about our newly-released company Intranet built in SharePoint. Someone made the comment that it was just a simple SharePoint list, insinuating that it only literally took five minutes to build. But it did not. The list itself took about five minutes, but I also created a custom "add" form in SharePoint Designer so the users would only see the fields that they needed to fill out. I also changed the form action on the submit button to redirect to a custom Thank You page after the form is submitted (by default, SharePoint just takes you directly to the list after submittal). And of course I had to create that custom Thank You page that I redirected them to. I also added web parts to the Feedback home page that showed the user what the status was of their outstanding feedback requests (we set it up so users could only see what they submitted). This was an incredibly easy solution using the SharePoint UI and Designer, but I think it proves my point. It definitely didn’t take "just five minutes" to implement, and it required analysis of the complete user process flow up front to ensure the best user experience.

I think management or people not that familiar with SharePoint often make the incorrect assumption that if something can be done out-of-the-box, that it is always very quick and easy to implement. Not so! I’m currently trying to make this very point at my company (not sure I’m having a lot of success right now on that front). I think an article on this subject is forthcoming!

The Other Side of the Debate

Being the diplomat that I am, I also agree with Mark Freeman when he says that we need a true definition of the different SharePoint roles and why it’s important to do so. Wait… what? How can that be? How can I agree with both Kerri and Mark when they seem to be in total disagreement with each other?

I think it’s definitely important to understand all the roles that are required for maintaining and leveraging SharePoint for business solutions. Employers need to list specifically what SharePoint skills they are looking for, and not merely a title, because titles are so vague. It’s precisely because there are so many different aspects of SharePoint and skill sets necessary that it’s all the more imperative that specific skills be listed on job postings.

And herein lies the problem: unless a company already has a SharePoint expert on staff who understands all the different aspects of SharePoint and the roles required to implement/support it, most companies aren’t going to have a clue as to what they need. That’s why there needs to be a comprehensive list that everyone agrees on, that explicitly lists out the roles and responsibilities. Will there be crossover? Likely. A commenter to Mark’s article listed out her definition of the necessary roles needed, including Application Developer, SharePoint Developer, SharePoint Designer, and Site Solution Creator; and then she lists the specific skills that each role entails. For the most part I think it’s an accurate assessment, but a lot of companies aren’t going to have that many different SharePoint people on staff, so one or two people could likely be performing any or all of those roles. I actually fulfill all four of those roles at my company, and that is what our definition of a SharePoint Developer tends to be, perhaps incorrectly so. We may reach the point someday where we have power users who become Site Solution Creators, and we may have non-developers who become proficient with Designer and can fill that role. At the current time we just aren’t there yet.

What’s In a Name?

In her article Kerri explicitly points out, more than once in fact, that she is not advocating that Laura or any other power user who creates solutions in SharePoint put the title SharePoint Developer on their resume. What she is saying is that anyone who creates solutions to solve a business need is developing the platform.

There’s that word again, develop. Ultimately I think the real issue here is one of semantics. A power user who labels someone that creates out-of-the-box solutions in SharePoint a developer is likely to rub some "true" developers the wrong way (myself NOT being one of them; personally I don’t care what you call yourself, it won’t offend me). Perhaps we should call them Solution Builders (or Site Solution Creators as the aforementioned commenter suggested). If you create an out-of-the-box solution in SharePoint, one that solves a business need, aren’t you building a solution, even if said solution did not involve writing any code? The answer in my opinion is a resounding YES!

I do think we need to qualify, however, exactly what constitutes solution building in SharePoint. I’m not talking about someone who simply creates a team site and uses all the out-of-the-box lists and libraries to collaborate with their team. Or even someone who creates a custom list to track something. I’m referring to those who create end-to-end solutions; perhaps it utilizes content types, workflows, calculated columns, the data view web part, page layouts, or custom master pages.

At my company we subscribe to the mantra of first try to build it out-of-the-box; if that doesn’t work then try it using SharePoint Designer, and then Visual Studio. In fact, our governance plan states exactly that under the Customizations section. Yes, we consider out-of-the-box solutions to be customizations, along with SharePoint Designer and Visual Studio solutions. Our plan clearly states that developers must first attempt to design the solution using out-of-the-box techniques. If that isn’t sufficient or becomes too timely/costly, try designing it using SharePoint Designer. If, and only if, the customizations required are beyond what the previous two methods can handle, only then do we get to crack open Visual Studio.

Some developers have a hard time with this concept and want to jump directly to writing everything in Visual Studio. The issue I have with this is that a lot of what developers write could have been done more quickly and easily either with Designer or through the SharePoint UI. The key is knowing exactly WHAT can be accomplished out-of-the-box. That is why I strongly believe that all SharePoint developers (and when I say developers, I mean the ones who actually write Visual Studio code) first need to be power users of SharePoint so that they will have this understanding. This will likely be a topic for another post as well.

In Conclusion

Whatever label you want to attach to it, the SharePoint community has some fabulous power users out there who are utilizing SharePoint to its fullest to create solutions for their users. I’m constantly amazed at how creative these power users have become in figuring this stuff out. I have a lot to learn in this area. For me it would probably be easier to do something in Visual Studio, just because that’s my mindset and where my comfort zone lies. But for those who don’t have access to Visual Studio or even Designer, they have truly figured out how to maximize the SharePoint framework and create some brilliant solutions. Because in the end, that’s what it’s all about anyway: creating solutions for your users that solve a business need and provide value.

This article was originally posted on Wendy’s blog SharePointWendy.