Showing posts with label Best Practices. Show all posts
Showing posts with label Best Practices. Show all posts

21 March 2013

Fixing Azure Challenges - Part 1

Over the last year, we’ve built a few Azure-hosted applications (including our own web site).  Throughout that time, we’ve hit a few walls, suffered setbacks and learned a ton about how to work with both the service and the Azure SDK tools (including the sometime challenge of dealing with version differences with both the SDK and the Azure management interface).

Since we’ve been helped by the many folks that post to twitter and their own blogs, we’re hoping to return the favor to the larger community.  Here are a few of the initial challenges we ran into and how we solved them.  In all cases, your mileage may vary.  Certainly if you have feedback, a better way to do things or something else (related), please do comment.  We’ll be publishing a follow-up post with additional solutions in the coming months.

NOTE: This post was written with the assumption of Visual Studio 2012 and Windows 8, along with the v1.8 release of the Azure tools.  We’ve seen posts referencing similar problems with older tools, but these tips may be less helpful unless you’re using the same versions.

Error when publishing applications

This particular issue is fairly non-descript, since it encompasses a whole range of causes and subsequent actions on your part.  However, problems with publishing happened frequently enough that it caused some serious delays in getting new builds of applications out to the cloud.  The following are the ones that caught us most frequently.

Administrator Rights

In order to debug or publish, you need to start Visual Studio “as Administrator” or you’ll get an error stating that the current user has insufficient privileges.  The solution is to right click on the Visual Studio shortcut and pick “Run as Administrator” to fix this problem.  If you’ve pinned VS to your task bar (like I do), just right click once on the task bar item, right click again on the main Visual Studio link and then pick “Run as Administrator.”

Out of Memory

When either trying to publish your solution directly to Azure or simply trying to create a package, you may receive an error that is simply “Out of Memory Exception.”  Apparently, with only 4 Gb of RAM available, Visual Studio is unable to create the Azure deployment package.  It’s really unclear to me why so much memory is necessary, but often without a clean restart of Visual Studio, I get this message.  The solution is simple, close down all other applications, restart Visual Studio and try again.  I can occasionally get away without these steps, but if I’ve been debugging or opening lots of other applications, I can guarantee my publish/packaging operation won’t work.  I never had to restart Windows, just exit VS and start again.

Unknown Error

In the midst of publishing a package (after initiating the “update” on a cloud service), you get an error from the Azure web-based management console that states your update was unsuccessful.  For me, this usually happened after several minutes of waiting for the package to upload, then cycling the instances and, at the last minute, erroring out.  When pressed for additional details (by clicking that not-so-helpful “I” icon), there are no details.  This happened to me recently and it was the result of having both http and https endpoints defined, but without the SSL certificate referenced by the service configuration setting loaded into the target subscription (the client we were working with used multiple subscriptions to separate “production” from “QA”).

In this case, the production environment had the SSL certificate loaded, but the QA environment did not.  Because my Azure settings listed the thumbprint for the SSL certificate and both end points were defined, the update failed in QA, while successful in production.  Unfortunately, it was difficult to figure out the root cause since the management console didn’t give any details. 

Only after I looked in the log, click on the “failed” entry and then clicked the “I” details button at the bottom of the interface, did I realize the missing cert was the culprit.  Embarrassingly, it took a call to Microsoft support to figure out that the additional detail was indeed available, but double-clicking the log entry doesn’t work.  You have to click  on the details button at the bottom of the page to get additional XML-based information regarding the entry.

If the SSL certificate isn’t your issue, the logs should help you figure out what is and provide more insight into the failed update.

image image

Unable to manage subscription

More often than not, being able to manage a subscription is due to the lack of a management certificate, the fact that your Microsoft ID (aka LiveID) hasn’t been granted co-administrator rights (assuming you didn’t create the subscription) OR you’ve got a filter set.

The last one is the easiest to fix.  You set your subscription filter at the top of the management interface.  Just click the little funnel and then check or uncheck the subscriptions you want to see.  Occasionally, you’ll forget that you’ve unchecked a subscription you’d like to see OR someone will add you as co-admin on a subscription you need to work with, but don’t see it because of a previous filter setting (don’t ask me how I know this).  So, if you can’t see the subscription, just check your filter settings.

image

If you’re not filtering your subscriptions, the owner/primary administrator may have not added your Microsoft (Live) ID to the subscription.  In this case, there’s nothing you can do, but ask them to add you.

Finally, Azure requires various certificates to be loaded into the subscription to allow you to perform various functions.  These certificates are shown in two places: 1) in the settings section under “Management Certificates” and within Cloud Services under “Certificates.”

In both cases, you can upload your certificates manually through the interface.  However, the certificates have to be .CER type, not the .PFX (read about the different certificate formats for Azure here – NOTE: the older management interface for Azure is shown, but the basics should still work).  For the certificates required for Remote Desktop, you can create them dynamically through the Azure tools in Visual Studio.  This is done by choosing the “Configure Remote Desktop” option after right-clicking on your Azure Deployment project.  Clicking on the dropdown list box will show you existing certificates or allow you to create a new one.

image

After you publish, the new RDP certificate will be uploaded automatically.

Deploying different configuration settings

The Visual Studio tools are pretty decent and give you a degree of flexibility for deploying various environment-specific settings to your Azure subscription.  However, getting the hang of setting the various values took a bit.  Hopefully, if you’re challenged as I was, the following will help.

Generally, when developing an ASP.NET application, you have the option to create various build configurations directly in Visual Studio.  Each configuration is accompanied by a web.config transformation.  Each transformation is a derivative of the core web.config file, with specific XML-transformation directives to update, replace or delete various nodes within the file.  With Azure, these build configurations are handled exactly the same way, except that when you build a deployment package, you pick the configuration you want at the time you build the package; you don’t have to change the Configuration Manager setting.

In addition to build configurations, there are Azure-specific “service” configuration settings.  Much like adding Web.Config transformations, you can create various Azure service configurations, which allow you to stipulate variables like a blob storage account, certificate thumbprints, number of instances or what SMTP server to use (very similar to the AppSettings node in web.config).  Azure service configurations and build configurations are complementary.  However, build configurations (and the associated web.config settings) can only be changed when you upload a new build to the Azure environment.  Conversely, some service configuration settings can be changed through the Azure management interface (after deployment or at run-time), making them more flexible.  This is particularly handy when you have to make somewhat trivial application setting changes that would require a re-publish if the setting were housed in the web.config file (yes, yes.  You could RDP to the box, but it’s still easier to access the Azure Management console).

image

The various service configurations are managed through the Settings interface for your Azure project.   Set the drop down to “All Configurations” to establish the range of settings across service configurations.  If you click on Settings, for example, you will then see the range settings for your Azure deployment.  Each setting, while in the All Settings, any configuration setting that is configuration-specific is shown with a “select configuration” value.  Any setting that is common, simply displays the value.  While in “All Configurations” you can add or remove settings across all configurations. 

image

To change a setting for a particular configuration, just change the drop down value to the configuration you want and then click in the “Value” field of the setting.  Enter the new value and you’re done (don’t forget to save).  NOTE: You can add or remove settings within a specific configuration, so you’ll need to plan your setting approach so that all settings make sense for all configurations.

When you package up your application, you’ll be prompted to select the build configuration, as well as the service configuration. This will combine the specific web.config transformations along with service settings for the deployment you want to publish.

image

More information can be found on Microsoft’s site: http://msdn.microsoft.com/en-us/library/windowsazure/ff683672.aspx 

Finding that cursed subscription ID

As Azure has evolved, Microsoft has updated the management interface.  Where finding the subscription ID was relatively simple in early versions, later versions “hid” the subscription ID (for certain workloads) until after you publish for the first time.  If you’re also having trouble publishing, this is a double-whammy.

In truth, the subscription ID is always visible, though I’d argue the interface makes it a challenge to find if you’re unfamiliar with the management console.  To find you subscription ID, just log onto http://windows.azure.com with your LiveID.  Then click on the Settings menu item on the left (it’s the little gear thing).  Now, click on Administrators on the top menu.  This is the list of all administrators for your subscription.  Next to each individual, you’ll see the subscription name and the ID.  Just copy the ID from this interface.  If the column isn’t wide enough, just click and drag the column separator on the right.

image

 

Hopefully these tips will help you avoid challenges with Azure.  However, I’m certainly interested in your feedback.  If you have some, please comment.

Other Resources

Visual Studio and Azure: http://msdn.microsoft.com/en-us/library/windowsazure/ee405484.aspx

Setting up Remote Desktop for Azure Cloud Service: http://msdn.microsoft.com/en-us/library/windowsazure/ee405484.aspx

Running multiple web sites in an Azure web role: http://msdn.microsoft.com/en-us/library/windowsazure/ee405484.aspx

Collecting and logging data by using Azure Diagnostics: http://msdn.microsoft.com/en-us/library/windowsazure/ee405484.aspx

15 January 2013

Being a Professional

I was reminded about what I’d had been calling “a professional” by David Heinemeier Hansson at 37Signals.  He posted “Your Life’s Work” on their Signal vs. Noise blog. It was a terrific piece that, to me, really spoke to a “disposition” that professionals should possess.  I especially liked this quote: “[if] you’re not committed to your life’s work in a company and with people you could endure for decades, are you making progress …”  In essence, you have to be truly interested in the work that you do and care about the outcome – not just today, but tomorrow and beyond.  If not, as David puts it, you’d have to question whether you’d making any career progress. 

For Consejo, this concept (of a professional) is at the heart of who we want to hire and I’m glad we’re not alone.

03 December 2012

Write Better

When I started working as a consultant in the latter half of the 90's, our firm had writers that specialized in writing for the web.  These folks constantly had to help clients refine and organize traditional print copy for the "new" medium.

Recently, Jason Fried over at 37Signals published a short blog post that referenced a post by Maria Popova at BrainPickings.org highlighting writing advice from David Ogilvy, the original "Mad Man."  What I found fascinating is that the advice that Ogilvy delivered in 1982 is much the same advice our writers gave clients more than a decade later (in the context of writing for the web).

Clearly, good advice never goes out of style.

18 September 2012

Adoption: The forgotten key to Success

A solution is not just technology.  A solution is not just new features and functions.  In fact, a solution has many facets, including adoption.  While adoption is critical to the success of any solution, it is often ignored.

Organizations who are interested in successfully introducing a new technology or solution, need to spend as much time considering and developing an adoption plan as they did building the solution.  Here are a few keys to adoption success:

  • Communicate early and often with the end user community 
    Start well in advance of any change.  Start with letting folks know that a change is coming and why it’s important to them.  Create a clear connection between a challenge you know they have and how the new solution seeks to address it.   Once you reach specific milestones in the solution’s development, send out additional communications with more specific information and dates (like when folks should expect to see the solution). 
  • Introduce the new solution properly
    Spend time developing ways to acquaint your end user community with the new tool or function.  Simply sending an “informative” e-mail is insufficient; try something new.  For example, if you’re introducing a new Intranet, have a “scavenger hunt” to find specific information or content; the “winner” should get some prize for being the first to find the requested item (e.g. a gift card to a local restaurant or simple public recognition).  This helps introduce the new site, gets people to use the tool AND “tests” the new information architecture.  Feedback from the event can also help you avoid questions in the future.
  • Create triggers for using the solution
    Dr. BJ Fogg runs a persuasion lab at Stanford university.  Dr. Fogg’s Behavior Model suggests that while motivation and ease-of-use are important, people still need to be “triggered” to exhibit a specific behavior.  This means that no matter how easy the solution is to use, nor how motivated your end user community happens to be, you’ll still need to “remind” them to use the tool until a habit of use is formed.  Dr. Fogg’s research involved how Facebook uses e-mail notifications to “trigger” people to return to the site.   Think of ways to trigger your end-user community to constantly use the tool (e.g. remind them of what problem the tool solves OR how they can save themselves time by using the tool).
  • Gather feedback liberally
    Whether you’re speaking personally to people or using a more generic survey, always gather feedback.  Your solution might be fantastic, but there will always  be room for improvement.  Demonstrate you’re interested in your end user community by asking for feedback on what works, what doesn’t and how the solution can improve.  Clearly, you’ll get lots of opinions, but what’s important will be the trends you can discern; these trends will represent what’s important to the most number of users and where you should focus your attention.
  • Constantly evolve
    Once you’re done with the initial implementation… you’re not done.  Any solution will need to evolve to stay relevant to the end user community it serves.  Use the feedback you’ve gathered, combined with what’s happening in the broader organization and/or marketplace.  Create a real “road map” for the solution’s improvement.  Once you have that road map in place, start communicating that roadmap to your end user community; this too could be a trigger, as well as building support for the next release.

You will spend a great deal of time developing the right solution for your organization.  You need to spend just as much time making sure everyone uses it and that it adds value to your firm.

28 June 2012

SharePoint in Geographically Disperse Organizations

As SharePoint 2010 continues to grow in popularity among larger organizations, the collaboration platform is likewise being used by an increasing number of geographically dispersed companies that see it as a tool to keep far-flung employees on the same page. Because of SharePoint’s architecture, however, such implementations can add new administrative burdens whether you’re trying to keep workers across North America or around the world connected and communicating with one another.

SearchContentManagement just published an article I wrote on how to manage SharePoint is these distributed organizations.

04 April 2012

The Myth about SharePoint Browser Support

Microsoft posted a blog entry today that pointed readers to SharePoint’s browser support page on TechNet.  In this post, they detail what browsers SharePoint supports and any specific support limitations.  However, I want to raise an important point that seems to be missing from the conversation: browser support isn’t entirely about SharePoint.

Unfortunately, what most everyone fails to mention is that browser support is actually a combination of what Microsoft supplies and the solution that you’ve built.  In other words, Microsoft’s support, or lack thereof, for specific browsers is limited to Microsoft-supplied interfaces.  Depending on the type of solution you’ve developed, much more of your solution’s browser capability could be dependent on your development than on Microsoft’s.

Here’s a quote from TechNet:

“For publishing sites, the Web Content Management features built into SharePoint Server 2010 provide a deep level of control over the markup and styling of the reader experience. Page designers can use these features to help ensure that the pages they design are compatible with additional browsers, including Internet Explorer 6, for viewing content. However, page designers are responsible for creating pages that are compatible with the browsers that they want to support.

Obviously, this quote relates specifically to publishing sites; primarily those internet-facing sites that are primarily content serving sites as opposed to more collaborative/intranet/extranet kind of sites.  However, even in the case of sites built with other site definitions (like Team Sites), browser support can and will be affected by new master pages, custom web parts or other components supplied by you or 3rd parties.

The myth here is that SharePoint’s support for specific browsers is somehow exclusively Microsoft’s domain.  In fact, true browser compatibility is a combination of Microsoft supplied interfaces (that are used in your solution) and those solution-specific interfaces that you or a vendor create.

06 March 2012

[Good] Communication is Key

Every now and again, a really fantastic opportunity to illustrate a best practice just falls in your lap.  The opportunity, just as occasionally, presents itself through inspiration found in the most surprising places.  In my case, I found this communication example in the men’s room at a client: 

IMG_0590

This sign provides an excellent template to use when communicating with your audience: 

  • It starts by presenting the message at the time when the recipient is engaging in a related behavior
  • The messaging points out a very specific feature of the tool being used
  • A statement of community support for that feature is provided
  • An aspirational goal is included to (through implication) encourage a specific, future behavior
  • All of this is followed by a polite.. thank you!

Ignoring the specific subject matter involved in this message, this could easily serve as a model for feature-obsessed technologists and enthusiastic Intranet managers on how to encourage intranet or technology adoption.

What do you think?

[EDITED TO CORRECT SPELLING AND WORD CHOICE]

31 January 2012

Why “Search” instead of “Find”

In July 2010, I posted “Can search really solve information ‘finability’.”  Since that post, I’ve run into a number of clients who continue to insist that they need to search (even if “search stinks” in their organization).  Yet, almost universally, they report the search experience misses their expectations.  This should be no surprise, as lots of firms struggle with this very problem.  However, I’d like to suggest an alternate hypothesis: they actually want “find,” not “search.”

For better or worse (mostly worse), loads of folks closely associate the act of search with the expectation of locating desired content.  Typically, at least outside of an organization, this means assuming they should navigate to Google or Bing (mostly Google). When they arrive, they enter a few keywords and press “GO.”  At this point, they’re presented with a set of results from which they choose one that looks promising.  In part, any perceived success is just that; they don’t necessarily expect to find what they want.  If, however, they happen to find the object of their desire, they are pleased. 

While both “search” and “find” are verbs, search does not imply a goal, simply an action.  Search describes everything in the scenario I just relayed except the part where you’ve found the appropriate destination.  Find, by contrast, is explicitly the goal and characterized by viewing your content.  If you need a very concrete example, if child goes missing, the goal is not to search for the child.  The goal is to find the child.

Therefore, in regards to content, consider changing the conversation.  Use the word FIND instead of SEARCH.  In doing so, you begin to think of the goal and not of one particular approach.  Further, if we focus on finding content, we can also measure a success rate.

This orientation change opens up a whole world of opportunities.  For example, start with the simplest model: place relevant content on the first page they see on an intranet.  While this may seem wholly impractical (too much content, no context to judge relevance), this kind of solution is possible.  Use what you know about your employees/users.  If you know within what department they work, you can begin surfacing content from their department. Not specific enough? What about adding in the role they serve and surface content targeted to that role (NOTE: a good driver for metadata).

Beyond actually locating the content in plain site, try surfacing tasks associated with the desired content. For example, display tasks like “Submit an Expense Report,” instead of requiring users to search for the expense report form or “Fill out a Timesheet,” which links to the time reporting system (or simply an interface to immediately report time).  In this way we’re presenting navigable elements that are easily understood and focus on actual tasks employees/users need to accomplish without the need to search.

However, if you really must provide search, give them help.  Provide them with a targeted search facility that enables them to narrow the scope of the search (i.e. don’t return results from the entire enterprise if they’re looking for a project related document).  Give them metadata to enable precise queries like “Author = Jane Smith.”  Finally, give them “canned” or pre-developed queries created by “experts” who can construct search queries that ensure result precision.  In this way, we’ve moved away from the simply keyword-driven approach to a more intelligent model that reduces “noise” and improves precision through carefully use of the technology. As an interesting alternative, execute these queries in the background and simply display the result like other navigation on the page; in this way, the user doesn’t actually have to execute the query and you’ve just saved them a step in finding content.

In short, search (as a tool) must necessarily become one of an array of techniques used to find content.  However, it should absolutely not be the first or only approach.  We must think in terms of FIND, not SEARCH.  Find is the concrete goal and has a measurable success rate; search is simply an action that, while measurable, does not necessarily lead to your user’s goal.

24 January 2012

Multilingual SharePoint Sites–Part 2

Some months back, I wrote a post about the basics of multilingual sites in SharePoint.  The post was a good primer for anyone that needs to understand SharePoint-centric concepts regarding multilingual web sites.  Unfortunately, the post didn’t really describe important details outside of the SharePoint sphere.  In particular, the post excluded all the ASP.NET-centric details.  In this post, I want to share at least some of those additional details.

Globalization

One of the early design goals that Microsoft had for SharePoint was that ASP.NET developers would be comfortable creating SharePoint-based solutions.  The theory is that if you’re a competent ASP.NET developer, you can simply pick up the additional SharePoint API universe; SharePoint is a good .NET citizen, so this idea shouldn’t be a stretch. 

Whether or not you believe a good ASP.NET developer could easily pick up SharePoint, SharePoint does borrow very heavily from many .NET facilities.  With regard to multilingual sites, this includes the Globalization namespace

The Globalization namespace is a group of classes that are responsible for allowing ASP.NET applications to understand the numerous languages and cultures that applications can target.  It includes everything from calendar differences and languages to date/time formats and string comparisons (and a whole lot more).  It also, importantly, provides a facility to allow developers to create a resource pool of commonly referred to assets (e.g. element labels, images).  These assets are all referenced using standard labels, creating an index of asset variants for each culture.  At runtime, based on the culture of the current user (usually indicated by a browser setting), the .NET framework will dynamically select the appropriate asset/resource based on a generic label describing that asset or resource. 

Resources and Resource Files (RESX)

Resources or multilingual assets are defined in a Resource File (RESX). There’s a resource file for each culture represented in the application. All resource files use the same labels to describe the asset, but with a culture-specific value.  For example, the text shown next to the text box where a user would enter their user ID to authenticate with the application would be an example of a reference resource. 

image

Figure 1 – Resource example for Login Page

In the RESX file, which is just XML, you’ll find the following entry

image

Figure 2 – Login_UserID label in the EN-US resource file

To add, edit or delete values, Visual Studio provides a “designer” view of the file.  In the designer, you have the ability to quickly and easily define the various labels and the corresponding values.  Figure 3 shows the Visual Studio interface for editing a RESX file.

image

Figure 3 – Visual Studio designer interface for RESX file

For every culture your application needs to support, you create a specific RESX file.  Each file would be named for the culture it supports and every file would contain the same labels, with values corresponding to the specific culture.  The example presented here, the RESX file is for the culture EN-US (US English). For more information on resource files, naming conventions and details on creating the files, take a look at this MSDN article on resource files

In SharePoint terms, the RESX would correspond to a specific variation of the same culture.  In effect, you will have at least one RESX file per variation.  These files define elements of the user interface that end users do not supply.  Whereas content on any given page is created and managed by content contributors, there are also elements, like the label for the User ID field on the login page, that are “baked” into the code of the application.  RESX files provide a mechanism to define what that label will say in the context of a specific variation or culture selection (usually set by the browser displaying the page).

Information Architecture and Visual Design

Beyond the somewhat mechanical processes for inserting culture specific content into a page, a more critical aspect of multilingual sites is Information Architecture (IA).  The IA defines the navigation paths (global navigation and its relationship to other sections and pages within the site) and the overall interface layout.  This means the decisions about where various interface elements are placed, what nomenclature is used and what sort of content is shown are all made through and by the IA (both the person – Architect – and their output – Architecture).

When developing a multilingual web site, consider that the interface will be at least slightly and potentially radically different based on the language being displayed.  The simplest example is word length.  If we compare an interface in German and one in English, it’s very likely that there will be different space needs for labels in the navigation, as well as content.  As a result, the IA must anticipate interface movement and allow for enough white space to accommodate an interface that will grow and shrink based on the language’s need.  This too is a challenge for constructing HTML and JavaScript, since both components of the web page may need to “react” to language differences.  However, beyond this relatively easy challenge, presenting content is matter of having the appropriate language-specific content.

A more complicated scenario is one involving differences in how a language is read.  For Hebrew or Arabic (as two examples), the languages are read right to left.  As a result, the whole orientation of the interface needs to shift.  The main navigation will need to start from the right, global navigation elements will be positioned in the upper left and text will flow from right to left within the content sections.  As such, you may require a unique master page and page layouts for these languages to sufficient accommodate the display differences.  The same is true for languages that are read vertically instead of horizontally as in Manchu.

Continuing with the above example, you also have the challenge of fonts.  Languages that utilize radically different character sets will require the IA and the designer to consider both font face and size choices. For example, for any font size choice in the cascading style sheet, will the text be readable across all languages represented by the site.  Most European languages have characters with relatively little detail compared with Asian languages.  Font sizes that are too small or font faces that carry too much embellishment may make detailed characters muddled or simply unreadable.  As such, these choices represent both a visual design and information architecture challenge, since font size differences will also present spacing issues to resolve.

Bringing it all together

With all of the details provided in the two posts of this series, here’s a quick review of the important parts:

  • When developing your Information Architecture for a multilingual site, include the various cultures included.  Each culture, in SharePoint terms, will be a “variation.”  A culture, remember, is a combination of a language and a country, represented like EN-UK (English – United Kingdom) or PT-PT (Portuguese – Portugal).  This culture approach makes it easy to distinguish between two countries that share a broad language (e.g. Spanish), but differ in usage (e.g. Spain vs. Mexico).
  • Developing an IA for a multilingual sites involves many more decisions and test cases to resolve than a single language site.  It’s important to explore the implications for your specific IA based on the languages that need to be supported and, when the visual design is complete, any challenges a specific design might pose based on the supported languages.
  • Within SharePoint, decide what variation will act as a the “primary” or source variation.  This is the variation that will syndicate content to all other variations.  For example, if the source variation is German (from Germany), your content will start in German; once a page is approved, it will be copied to the other language variations in your site collection (e.g. EN-UK, PT-PT).  From there, each non-source variation will be responsible for translating, approving and publishing a language specific version of the German content.
  • You will have at least one RESX file per variation.  If you have lots of different cultures, you will have as many RESX files and they must all contain the same labels.  Because labels are not evaluated during compile-time in Visual Studio, you’ll only discover missing (or conflicted) labels in a resource file at run time.  This is not, obviously, a good user experience.  As a result, you should thoroughly test and control the modification of RESX files.  Take a look at this blog series from Carel Lotz regarding one approach to effective RESX management: http://fromthedevtrenches.blogspot.com/2011/04/managing-net-resx-duplication-part-1.html
  • Think carefully about the taxonomy (aka organization) of variations and labels.  As much as the IA process should define navigation, the overall taxonomy will drive label names and how labels are used in the application.  For the project example in this post, we used labels tied to interfaces (interface name prepended on label name).  This is one approach.  However, this approach neglects opportunities to leverage labels across interfaces.  Conversely, label use across interfaces can make maintenance more challenging as label changes will necessarily have different impacts across the application.  Here, experimentation and testing are key.
  • A SharePoint multilingual site is really a combination of SharePoint variations and .NET globalization.  You must necessarily implement both; end users will leverage the variations component and your developers will have to provide matching RESX files for application-specific labels and static text.

As you may have surmised, there are a lot of details to consider when developing a multilingual web application.  SharePoint does provide decent facilities to enable basic multilingual sites and the .NET framework provides loads of flexibility in implementation.   Just be sure to consider the whole picture – it’s a combination of SharePoint centric constructs (aka variations), good information architecture/design and the technical “infrastructure” to make the whole solution work for end users.

16 January 2012

The [Tools are] too much with Us

As 2012 starts in earnest, I am reminded of the poem from which the title of this post has been taken “The World is too much with Us” by William Wordsworth.   In this poem, Wordsworth laments how out of tune with nature people had become during the first industrial revolution.  In much the same way, I see too much focus being placed on tools in the era of SharePoint.  Business users and Information Technology folks seem to be so enamored by the tools and technology, they forget that the focus should be on needs and solutions.  This is especially true when discussing SharePoint and, as I said many times, SharePoint is not the answer.  

Instead, SharePoint, like any technology, needs only to be included insofar as it provides the basis for creating a solution to a specific problem (or problems).  For example, if you needed to manage documents, SharePoint could provide you with a Document Library for storing the files.  Further, you could leverage Content Types and Information Management Policies to enable more precise management of a document’s lifecycle (if that were a need).  However, your specific use of these features should and must be governed by the solution – the overall set of features, functions and the specific solution implementation  in the context of your needs and goals.

When considering how to proceed with your SharePoint project, consider this one piece of advice: start with the problem or challenge first.  Ignore SharePoint and don’t speak of it again, unless you’re discussing how some feature in SharePoint can support a solution.  Even then, try focusing on the solution (give it a name if you have to) and not the tools or features involved.

11 April 2011

Education and Training are Required

The title of this blog is a bit of a mix of themes from Mr. Nielsen’s latest post to his Alert Box.  However, the underlying message was that users don’t actually know how to find content (broadly) and that as search improves, their abilities actually deteriorate.    The implication was that insufficient training and education (both) are provided to users related to information technology.

This scary conclusion was based on research he and his firm have been doing in Asia-Pacific.  He stated that they watched “more than 100 searches for a broad range of tasks.  Only once did I see a user change strategy.”  If you immediately thought, after reading this quote, that changing keyword terms is a change of strategy, Mr. Nielsen offers this retort: “… simple query reformulations don’t count as a strategy change because they were essentially variants on a single approach.”  In Mr. Nielsen’s example, his search research subject was trying to find the differences between a cold or influenza using the symptoms as search terms.  The actual change in strategy is when the research participant started searching for the disease rather than the symptoms.

In our work, many clients try to rely too heavily on search.  They believe good content organization (taxonomy) and tagging (metadata) are unnecessary.  With many of them implementing SharePoint, they often immediately want to install FAST because of a misplaced perception that the standard search technology is inadequate.  In fact, the real challenge is that most users don’t understand how to use search in the first place and most firms don’t invest sufficiently in good content organization.  Further, clients also haven’t provided any education or training as to the use of search, taught their users how to leverage a taxonomy to find content and/or don’t leverage features of the search engine that could improve results or reinforce the right sort of search behavior. 

As Mr. Nielsen points out, search does not solve the findability problem.  And worse yet, as engines get better at figuring out what users want, those same uses continue to degrade their ability to truly engage in research on the web.  

Firms need to invest in education for their workforce if they hope to successfully use technology (any technology).  They also need to invest in training.  The difference?  Training imparts a skill within the context of a specific situation, where education teaches a concept that can be applied in many contexts.   To be truly successful, organizations must provide both.  Then and only then will firms begin to really extract the value they’ve created with the tools they’ve implemented.

14 March 2011

What to do with SharePoint when you’re not a Developer

Much of what is published and presented on SharePoint is aimed at a relatively technical audience.  If you review the myriad of SharePoint conferences, SharePoint Saturday sessions and blog content, you’ll find very little content for non-technical folks.  More importantly, much of the content that does exist, wants you to come to one conclusion – SharePoint is the right platform.

Unfortunately, if you’re a manager or an executive trying to understand the strategic choices related to SharePoint as a platform, or perhaps you’re trying to decide what to do with an existing implementation, it’s difficult to find good objective guidance.  Worse yet, if you’re evaluating whether SharePoint is even the right platform for certain requirements, how do you effectively compare your options?

Recently, the Real Story Group and Information Today developed a new conference, the SharePoint Strategy Summit.  This conference is specifically targeted at the non-technical manager or executive.  The program, just a brief two-day affair, focuses on providing you with the information necessary to help you make the strategic decisions necessary for a successful SharePoint implementation (including helping you understand when SharePoint isn’t good choice). 

During these two days, the conference covers topics including:

  • SharePoint as an Enterprise 2.0 platform

    SharePoint might seem nearly ubiquitous as an enterprise collaboration platform, yet many organizations are still in the process of deciding whether or how to adopt it as part of a broader intranet platform. In the meantime, Microsoft is heavily touting new social and community services in the latest version, SharePoint 2010. Get an objective overview of what works well—and poorly—in SharePoint 2010.

  • Strategic alternatives to SharePoint

    If you don't go with SharePoint, or chose to put boundaries around the platform, what other alternatives await you beyond Redmond? Learn the pros and cons of SharePoint alternatives.

  • Compliance and Records Management

    Records management is not a SharePoint strong point. Large SharePoint deployments represent a particular challenge when it comes to the long-term retention, disposition, and discovery of information. This session explores the limitations of the platform and the alternatives you may want to consider. What sorts of steps do you need to take to batten down SharePoint so that it passes regulatory muster?

  • The Real Cost of SharePoint

    The licensing structure for SharePoint has been a source of confusion for many customers.  However, once you buy the software, the real costs of a solution begin.  What should expect to spend?

  • Governance Models and Lessons Learned

    Everyone agrees governance is critical—even essential—to long-term success with SharePoint. But how to do it and where to start? Join a panel of consultants and customers who will outline different ways that they’ve gotten SharePoint under control within their organizations. There’s no simple answer here—but you should come away with an approach that works for you.

Unlike other conferences that tend to be heavy on PowerPoint presentations, this conference has a pretty even mix of panel-style debates, moderated roundtable discussions and more traditional presented sessions.  The goal is to create a very interactive experience and enable attendees to get closer to experts, as well as more deeply engage with other attendees.

If this sounds like the right conference for you, visit the SharePoint Strategy Summit registration page.   The conference is just two weeks away and there are just a few remaining slots available.

28 February 2011

SharePoint 2010 is not the Answer

The title of this post may be a bit surprising.  If you’re a regular reader, you know that Consejo firmly endorses SharePoint 2010 as an excellent platform upon which to build your intranet or extranet (internet sites are a different story).  However, we’ve worked with a few clients recently who seem very focused on the upgrade as a solution to their woes (mostly intranet woes).

Certainly, with every situation there’s always context.  I try not to preach to my clients (maybe a little) about why upgrading for its own sake is a bad idea.  Some may have very valid reasons for pursuing an upgrade.  Even when they don’t, many clients upgrade anyway.  However, to be clear, upgrading to the next version of anything is a bad idea if the only reason to upgrade isn’t directly attributable to platform capabilities.  SharePoint is no different.

Don’t get me wrong, SharePoint 2010 is a very robust product.  It has lots of advantages over 2007 and, if you’re a 2003 shop or an enterprise just getting started with SharePoint, I think you’ll be happy with 2010 (assuming the right implementation of course).  Further, 2010 is architecturally it is quite different from 2007 and far better at handling a more diverse set of infrastructure configurations.  It also has loads of goodies for the pedestrian user as well.  Be careful though: with all of this added capability and architectural robustness, there’s a price. 

In many ways, SharePoint 2010 is orders of magnitude more complicated to implement and not well suited for every environment (a 2007 failing as well).  There are new concepts like service applications, managed accounts, document labels, document IDs, content type hubs, external lists and a myriad of other very new and not so easily understood features.  Then there’s the idea that SharePoint can be all things to all people (e.g. a terrific web content management tool at the same time as it enables flawless document collaboration); it’s just not true.   SharePoint is good at a lot of things, but it’s not great or even capable at many more.

That said, clients, especially those in IT departments, seemed to be very taken with this new version.  Often they extol the virtues of managed metadata, better search, high count thresholds for document libraries, remote blob storage (eyes glaze on their business clients at this point) and better manageability (along with the other good stuff).  They heartedly recommend the upgrade to their business user clients and/or they simply say “if you don’t like your current intranet, blame SharePoint 2007; upgrading to 2010 will fix all of your problems and make you much happier.”  Inside of many clients, IT “owns” the intranet and issues an edict that they’re upgrading to 2010.  Worst yet, business users occasionally know that SharePoint powers their intranet and may have come to the potentially erroneous conclusion that SharePoint is the cause of their information management pain; this add further pressure to upgrade.

Honestly though, haven’t we all heard this before?  Wasn’t one of the arguments for SharePoint 2003 or 2007 that “the platform will fix all of your problems?”  Didn’t they (the ones pushing the upgrade) once tell you that SharePoint has loads of features you can use straight out of the box?  Even if part or all of the story was true, didn’t the move and/or upgrade cause you pain?  Don’t you and/or your colleagues, in some ways, have more complexity in your environment, more to manage and, potentially, more dissatisfaction with the intranet?  I suspect that at least some of you will answer “YES!!!” 

As yourself why.  Go ahead…. ask.

I suspect the answer is partially due to infatuation – SharePoint seemed (and seems) really fabulous (especially when that nice Technical Specialist from Microsoft showed you the Contoso Intranet or you attended an Strategy Briefing at a Microsoft Technology Center).  It’s also likely that you had a pretty broken intranet or a severe file-sharing problem.  Or could it have been that your organization had no previous mechanism for allowing various global business groups to share and collaboratively develop content together (save perhaps through very silly and uncontrolled file shares).  SharePoint seemed like it could work.  It seemed like “it” was simply the answer.

In practice, you now realize how much you didn’t know.  This is true for most things.  Martin White, of Intranet Focus, once quipped that “SharePoint demonstrated that most organizations didn’t know they had an information management problem because they never managed information before SharePoint.”  Once SharePoint was running, information management may have seemed even more out of control and users, in some ways, were even more dissatisfied.  This brings me back to my original point.  SharePoint 2010 is very likely not the answer to your intranet woes UNLESS you have very specific business requirements that can’t be immediately met with SharePoint 2007 (and potentially some combination of 3rd party tools); the new version is different, but it is still largely targeted at solving the same kinds of problems.

I’m not suggesting you shouldn’t upgrade.  In fact, if you can demonstrate that 2010 will actually solve your challenges in a way that 2007 and ISV products can’t, I would encourage you to upgrade.  We have a few clients that fall into this category and they’ve taken a very prescriptive approach to the effort.  Unfortunately, for most enterprises, this isn’t the case.

Here a few unjustified reasons I’ve heard for the upgrade and how I would (and have) respond:

  • SharePoint 2010 has a better search engine and our search stinks
    I hear this a lot.  This is also the same argument, phrased differently, where search is generally the solution to findability.  Search is not the exclusive solution to findability and upgrading to 2010 (or, even better, 2010 and FAST) won’t help.    In many cases, organizations haven’t done the bare minimum to fix search with the tool they have.  This would include adding metadata (as basic as descriptive titles), creating a proper taxonomy, removed erroneous results from the index, created scopes, leverage pre-canned searches, gotten rid of outdated/irrelevant content or even provided search education to their end users (yes you need a little guidance to use search properly just like any tool).  Improve search first, upgrade later.
  • SharePoint’s interface is hard to use; SharePoint 2010’s is better
    It’s true that Microsoft has radically changed the user experience for SharePoint 2010.  My colleague, Tony Byrne at Real Story Group, though questions whether the changes in SharePoint’s interfaces are really all for the better.  Even veteran users of SharePoint find the new ribbon challenging, much like the ribbon in Office.  Further, AJAX has made some interface more modern (and somewhat more reactive), much of what makes SharePoint, well SharePoint, is still very apparent.  You’ll also notice that there are still some exclusively IE features (though more compatible with Firefox and Safari), there are loads of forms for uploading things, the interface is still decidedly “SharePointy” and while you can create a theme in PowerPoint 2010, I’m not sure I would.  Good interface design should be handled by a professional designer and a good developer.  Also, end users are still going to need training (still).  You could/can create compelling interfaces in SharePoint 2007 and the approach isn’t much different in 2010.
  • We don’t want to be too far behind Microsoft’s development cycle
    I get it.  You don’t want to be stuck on the equivalent of Windows XP ten years after it first shipped.  This is a valid concern.  However, SharePoint 2010 shipped less than a year ago.  Lots of organizations are still successfully using Office 2003 or 2007, as well as Windows XP.  To be fair, it’s far more difficult to upgrade 10,000 client workstations than a few servers and I don’t think there are very many people outside of Redmond that would defend Windows Vista.  However, the “old technology” argument only gets you so far.  SharePoint 2007 is very much still technologically current relative to Office deployments (though perhaps not too “Web 2.0”).  It fully supports the more recent versions of .NET and you can absolutely find vendors who support the platform with add-on products.  If this were February or August 2012, the argument works far better.  I’d also like to bring up my previous point about search.  Like search, few organizations really spent time or money on customized user experiences for their intranet or fully developed a true application on SharePoint.  They expected business users to simply use what Microsoft provided (more of the “build it and they will come” mentality).  In some cases this worked.  Mostly, collaborative sites experienced uncontrolled growth (causing much of the information management pain) and the larger intranet application languished unloved and underutilized.  This argument is a fallacy from the beginning and shouldn’t be considered a truly valid reason, unless perhaps you’re using IBM Displaywrite 4 (you could probably benefit from the upgrade to WordPerfect 5.1).
  • We’ve already paid for the upgrade through our Enterprise Agreement with Microsoft
    This too sounds pretty reasonable on the face of it.  Your EA provides you with the ability to upgrade to the latest version of any included product; why not upgrade?  The reality is that unless you’re not going to renew your agreement during the next cycle, you’ll continue to pay regardless of what version you’re using.    It’s not going to cost you any more or less to stay put on SharePoint 2007 for a while longer (especially if you need to “fix” some of the more serious problems with your intranet).  In the end this argument is just a red herring to distract from the core issue at hand: your intranet doesn’t work for your employees.
  • We have too many 3rd party tools for our SharePoint 2007 implementation; SharePoint 2010 provides [insert vendor here]’s functionality out of the box
    Really? I’d double check.  What appears, in some cases, like Microsoft may have covered a previously missing feature, they may not have completely covered it.  For example, metadata.  Microsoft implemented a new managed metadata service that goes a long way to helping enterprises implement a proper metadata scheme within their intranet.  The existence of the service would seem to eliminate the need for tools from companies like SchemaLogic, Smartlogic and more utility-like components from firms like Bamboo Solutions and Layer2.  However, these and other vendors not only appear to have a solid business for SharePoint 2010, they’ve found new opportunities.  If anything, the explosion in add-on products compatible with SharePoint 2010 would anecdotally suggest that SharePoint 2010 continues to have functional gaps.  In truth, there’s probably a better story for ISVs, not because SharePoint has gotten worse, but the platform improvements give these ISVs a far better foundation for valuable add-ons.  Do your homework and don’t get sucked in by good marketing.

Look, I’m on your side.  I love new stuff – especially that new DVD/download smell.  However, distracting everyone from the real problems plaguing your intranet by upgrading to SharePoint 2010 isn’t going to be productive.  An upgrade will likely not fix the real concerns people have about your intranet, nor will the upgrade process be satisfying.  In fact, upgrades usually tend to be migrations; painful, painful migrations.  You aren’t just replacing binaries on the existing servers and manipulating the content database schema.  “Upgrade” usually involves building brand new servers, buying more storage (get it while the gettin’s good), installing a net-new SharePoint farm, licensing brand new add-ons (yes there are still plenty of “opportunities”), licensing/using a migration tool (please don’t try it manually) to move content to the new farm and sending the IT team to training on the new stuff (developers as well as administrators).   Again, when all is said and done, core problems are probably still not addressed, nor have users significantly altered the behavior that lead to this “bad” place; there was simply too much to do getting the “upgrade” done.

In the end: fix what you have.  Get it right now, before you upgrade.  Prove it with real measures of success, then upgrade.  You’ll be happier.

04 January 2011

Creating a Multilingual Sites in SharePoint 2010

As we start 2011 and reflect on 2010, one of the major initiatives for many clients was creating globalized, multilingual sites.   The message was especially clear when we spoke to attendees at events like the Enterprise 2.0 conference, KMWorld and J. Boye.  In particular, I was surprised at the number of attendees  planning or that have implemented “localized” or multilingual SharePoint applications.  Unfortunately, as I learned directly, the information available from Microsoft on all multilingual scenarios is uneven.
To their credit, Microsoft has done a relatively good job of making multilingual interfaces within SharePoint available.  Microsoft has released 40 language packs for SharePoint.  These language packs allow organizations to create sites and site collections in any of the languages supported by the language packs.    If your work involves intranet or extranet scenarios (externally facing collaborative sites for trust non-employees), the language packs will serve you well.  If you want a French or Arabic collaboration site, just create a new site and stipulate the language.  Individual users are free to contribute list items in the site’s language and see localized SharePoint interfaces.
NOTE: Tony Byrne, Founder of the Real Story Group, pointed out recently that one of the advantages of using software from larger software companies like Microsoft, Oracle and IBM is that there will be far broader and better tested multilingual support.  Many smaller vendors either don’t provide multilingual support at all or provide a far smaller set of supported languages.  Both issues could be particularly problematic for SharePoint deployments as many rely on 3rd party add-ons from smaller vendors.  You should do your homework on potential solutions to ensure they support the languages you will deploy.
Where documentation for multilingual sites falls short is in the internet scenarios – specifically creating multilingual “publishing” sites (think about the typical corporate web site).  There is some limited content in blogs, technet and MSDN.  However, this content either discusses language packs and variations abstractly or, in the case of most blog content, applies to SharePoint 2007.  All of it falls short of the quick reference needed by many organizations deploying publishing SharePoint sites. 
In an effort to provide some small assistance to other folks implementing multilingual sites, here is a quick reference list of sorts that provide details on some of the basic setup.
Variations
Publishing sites (SharePoint sites created using the “Publishing” or “Publishing with Workflow” site definitions) use a concept called “Variations” to enable the presentation of site content in multiple languages.  This concept has little to do with language packs and more to do with a basic copy process.  When you setup a multilingual publishing site in SharePoint, you designate a root site, a “source variation” site and other “variation language” sites.  As you create content in the source language site, a SharePoint timer job copies content (e.g. pages) and site structures (e.g. sub sites) from the source variation site to each of the other variation sites. 
The root site is merely the default URL for your web site; when web users navigate to the root URL, they are automatically redirected to the variation site that matches their browsers language setting.  As a developer, you can even change the logic used to redirect users to a specific language site by modifying the variations landing page called VariationsRoot.ASPX.  In doing so, you can enable SharePoint to handle other redirection processes like redirecting based on a previously selected language preference stored in a cookie or redirecting based on profile data (e.g. you know the user is based in Belgium and prefers French over Dutch).
Finding the Variations Setting and Beginning the Setup
There are two settings that control variations at the site collection level.  Both settings are found in Site Settings under Site Collection Administration.  To begin the process, you click on the Variations menu option.
image
By clicking on Variations you begin setting up how variations will be configured for your site collection.  In the subsequent interface, the “Variation Home” is what is called “Root Site” in this post (and what Microsoft typically calls it as well).   The variations interface is shown below:
image
Variation Labels
Once you’ve setup the global variations feature, you need to setup each variation label.  Variation labels represent every variation site you want to include in your public web application, including the source site.  For example, if you want to have a French (France), German (Germany), English (UK) and Arabic (United Arab Emirates), you’d need a total of four variations.  Of those variations, you’d pick one to be your source variation; the rest would receive content created in the source. 
When you create the labels for the first time, you start by creating the source label.  In our example, we’ll call our UK English site the source.  There are a few fields to complete:
Field Name Description Example Value
Label and Description This is essentially the portion of the URL that designates the site. If your web site URL was http://www.mywebsite.com/ the label portion would be inserted after the last slash like http://www.mywebsite.com/[variation label].  In most cases, the label is going to be the two-letter ISO code for the language, followed by the two-letter ISO code for the country.  Wikipedia has a complete list of the current ISO language codes  and ISO country codes. en-gb
Display Name This field is what will be used to not only describe the variation in the management interface, but it will also be the default name of the site when the variation site is created.  Typically the display name is the localized title of your web application.  If your web site was called “My Web Site” in English, you would enter that value for our UK English site.  For French, you might enter a display name like “Mon site Web” My Web Site
Locale Use this setting to specify the language represented by a specific variation.   There are numerous languages show in the drop down and potentially multiple versions of any given language (e.g. Spanish in Spain vs. Mexican Spanish).  You should choose the appropriate language that fits your needs.  This setting is used by SharePoint to match a user’s browser language setting to the appropriate variation. English (United Kingdom)
Hierarchy Creation This setting determines what portions of the source variation SharePoint will replicate to other variation sites. Publishing Sites and All Pages
Source Variation This sets whether the variation you’re currently defining is the source variation.  This setting is something that is set once on a specific variation and can’t be changed after you’ve created the hierarchy.  This option also sets the specific site definition used in creating all variations.  NOTE: only publishing site definitions (e.g. Publishing Site) are there by default.  Publishing Site with Workflow


Here’s a screen shot of the form in SharePoint:
image
Other Language Variants
After you’ve setup your source variant, you setup the other language variants you want to represent.  The setup process is similar to setting up the source variation, except that the check box indicating the variation is the “source” will be greyed out and disabled.
Once you’ve completed creating the other variants, click the Create Hierarchies button to begin the creation process.  NOTE: Creating the hierarchies is handled by the timer job.  As a result, you will either have to wait for the timer job to run or manually initiate the job to see the variations.  This is also true of other timer job-dependent activities like site structure and page propagation.   More information on timer jobs is provided below.
Timer Jobs
Technically there are multiple timer jobs that each handle a different aspect of the propagation process.  Each timer job runs on a different schedule.  Here is the list of variation timer jobs and the default interval:
Timer Job Description Default Execution Interval
Variations Create Hierarchies This job creates the hierarchies defined in the variation labels section of the variations settings.  As you add new labels, this job takes care of creating the corresponding variation site Every 24 hours
Variations Create Site This job creates variation sites if the automatic creation setting is disabled in the Variations section of the site collection settings. Every 5 minutes
Variations Propagate Site This job creates variation sites if the automatic creation setting is enabled in the Variations section of the site collection settings. Every 5 minutes
Variations Create Page This job creates new pages in each of the variation sites once the page has been created in the source site. Hourly
Variations Propagate Page This job updates existing pages in the variation sites once an update has been made to a source page. Hourly

Depending on your needs, you can modify the default interval to match your publishing schedule.  For example, if you publish pages frequently, you may want to increase the timing of your page propagation and creation to 30 minutes instead of an hour.
Keep in mind that there’s a version of these timer jobs for every SharePoint application (think URL).  This means that you’ll have 3x the number of application configured for variations to manage.  Thankfully, Microsoft provides a view of timer jobs per application.
A screen capture of the time job definitions for a sample site is shown below:
image
Additional Notes
Like much in SharePoint, the choices you make should be based on your specific requirements; there is usually more than one way to satisfy a need and multiple ways to develop a solution.  To that end, here are some notes about variations setup to help you make these decisions.
  • Variations can be used for more than just language versions of content.  Microsoft documentation points out that the logic to redirect users to specific variations could be used just as effectively to redirect a client to a mobile device.  In this case your label could simply be “M” for a mobile version of your site.
  • The timer jobs do not replicate other lists or libraries from one variation to another.  This means that you must create lists and libraries in each variation manually after the hierarchy is setup.  This is also true of content in those lists and libraries; the timer jobs focus on structure (e.g. sites and sub sites) and pages.  However, if secondary lists are important for your solution, consider creating a custom timer job.
  • Variations are site collection bound.  This means that all variation sites are housed in the same site collection.  If, for some reason, you think you may need more than one site collection, you’ll have to recreate your variation setup for each site collection.  Each site collection would be managed independently.
  • When possible, use features and feature stapling to modify the nature of any particular variation (if necessary).  For example, if you need a specific SharePoint list or library created in each variation, use a feature and staple it to each variation as it’s created to ensure the list exists.
  • Content contribution is a bit trickier with variations, since each variation is essentially it’s own “web site.”  As such, you will need to spend more time training content contributors and more time supporting them.
  • If you use the new managed metadata feature in SharePoint, you’ll need to provide translations for terms as well.  Since all variations are housed in a single site collection, you can even use managed metadata bound to a column vs. enterprise managed metadata to isolate terms that may be specific to your site.
  • You are required to setup a root SharePoint site for the site collection.  However, once variations are setup, no one will likely see the root site (since the VariationsRoot.aspx page will be set to the home page of that site).  As such, you don’t have to do much with it.  However, you could use the site to store more global resources, like images and documents, for use across all variations.
  • Especially during development, you should execute the timer jobs manually by going to Central Administration, go to the Monitoring section and click on Timer Job Definitions to find the right job.  When you click on a specific timer job, you’ll have the opportunity to run the job manually.  Manually running the timer jobs will allow you to see what’s actually happening within your sites without having to wait for the job to run automatically.
Please share your experiences with multilingual sites and what challenges you’ve had through comments on this post.  There is a lot more detail to setting up and managing variations, so the more feedback the better.

Continue to part 2 of this series

19 October 2010

The Wisdom of letting Users “Figure it Out”

Back in July of this year, Computerworld, Networkworld and CIO all ran an the article “Telecom Giant Takes to Web 2.0.”  It was about Alcatel-Lucent’s use of social media tools.   The article opens with a quote from Greg Lowe, Social Media Strategist and Global Infrastructure Architect.  Lowe stated that the CEO told the organization to be more “collaborative.”  What immediately struck me was the response: go buy/implement a technology.

Based entirely on Lowe’s title, it appears that he is a member of Alcatel-Lucent’s Information Technology group.  Unsurprisingly, it appears as if the first reaction to the CEO’s statement was to find a tool to “fix” the problem; based on the content of the article, it wasn’t clear exactly what the CEO meant and whether another tool would be a solution foundation.  However, the approach described was a typical pattern:

  1. Find a tool that seems to enable individuals to solve a problem
  2. Make the tool available
  3. Let the user community figure out how to make the organizational changes necessary to actually solve the problem

The trouble with this general approach is that it is often a recipe for disaster. 

Much to the credit of Alcatel-Lucent, they seem to be successful in at least getting folks to use the new tool.  What wasn’t immediately obvious, however, was whether the tool solved the problem the CEO identified.  To be blunt, does tool usage indicate the problem was solved or just that people were using the tool?  In using the tool, does it mean that quality collaboration, that fundamentally improved an individual’s ability to complete their job tasks, occurred regularly?

To CIO magazine’s credit, they did link to an article that presented a similar situation at Phillips, called “My Enterprise 2.0 Rollout: 4 Keys to Success.”  Fortunately, this article presented a far more thought out and methodical approach to using the “2.0” technologies.  The difference between the two approaches boiled down to the following (even identified as “keys to success”):

  1. Develop a good strategy
    Phillips spent time trying to understand what they wanted to accomplish – not just “we need to collaborate better.”  Specifically, what will truly make a difference in our business?  If a business can’t improve productivity, reduce expenses or improve revenue, why implement technology solutions at all?
  2. Lead by example
    At Phillips, the executives lead by example and leveraged the tools in their own work.  This approach provides a fantastic benchmark for the rest of the organization.  As the article points out, it’s not about an edict from above, but rather a way for the leaders in the firm to demonstrate usage and, in a way, also publicly learn from those lower in the organization.  Frankly, if an enterprise wants to make any initiative successful, employees need to understand that management supports their efforts and their work won’t be wasted.
  3. Work with the user community
    Unlike the Alcatel-Lucent example, Phillips actively worked with the user community to ensure success.  The work involved in and the problems solved by the tool aligned directly to challenges within the organization; there were clear metrics for success
  4. Allow a bit of “organic” evolution
    The article calls this concept “loosening the reins.”  Phillips didn’t explicitly create policies to govern the use of the tool.  While it’s generally a good idea to incorporate governance into the use of these kinds of tools, the idea of allowing a bit of usage flexibility is critical.  In many cases, there is insufficient data to truly understand what might or might not work in the enterprise.  Further, a certain trust needs to develop between the firm and employees – the firm needs to trust employees will use good judgment and employees need to trust the firm is making the tool available to improve productivity.  Ultimately, to be successful, there needs to be a good mix of established, general guidelines for appropriate use, as well as flexibility to enable “out of the box” usage scenarios.

When contemplating how to approach implementing these collaborative technologies in your organization, consider the four points above. The "build it and they will come" approach to technology doesn't work. However, it is a pattern that many in IT use to mostly their detriment. It's time to change the approach.

07 September 2010

User Surveys for Intranets

Dorthe Raakjaer Jespersen (sorry for the English spelling) at J. Boye recently posted a blog entry “New Intranet: do we really need user surveys?”  It was a good read about how user-centric research is an excellent foundation for a new intranet. 

Early in the article, she points to somewhat typical exchanges between intranet managers and company management; the archetypical intranet manager management thinks surveys will help the intranet team better understand the needs of the users.  The equally archetypical manager thinks they need to start building immediately – surveys will take far to long to complete.  Dorthe goes on to provide an excellent set of talking points intranet managers can use to encourage management to agree to use surveys and highlights some of the potential risks in forging ahead without the user data.

However, once you’ve gotten approval, what’s next?  What questions do you ask?  What sort of feedback should you expect to get from your end users?  How many individuals should be included?  The answers to all of these questions do depend on what you need from your user community, the size of your organization and the scope of your intranet.  To help you get started, here are a set of basic questions we would recommend you include in your survey:

  1. In what department do you work?
    This question provides context to the answers.  Expect every department to have different needs and desires.  The question may also give you a picture of future departmental participation and support, as well as an early indicator of departmental adoption.
  2. What is your age range?
    This sounds like a question you’d want to avoid.  However, the answer will help you evaluate responses.  Many organizations we’ve worked with recently have somewhat older populations.  The age of an employee tends to affect what features of an intranet are compelling.  Your Intranet should reflect the population age average.  If you have a somewhat younger workforce, social features like status updates or blogs may be more compelling.  Older workforces will likely be drawn to a more “traditional” informational Intranet.  Keep in mind that you cannot and should not over generalize; age, in and of itself won’t tell you a lot.  However, the data will provide another useful dimension to the analysis.
  3. How often do you use the Internet to support your work?
    In some organizations, the existing Intranet is little used or there’s no Intranet at all.  In its place, many employees will turn to public sources of content and information.  This specific question will help you gauge how much external vs. internal sources of information help people get their work done.  In fact, the answers to this question should be a limited list of options like: no access, my work is paper-based, I know the right person to ask, not interested, etc.   A side benefit of this question may be the discovery  of what services to offer through a newly designed intranet (assuming you follow-up this question with one that asks about their specific usage).
  4. How often do you use the existing Intranet?
    It’s likely if you’re checking your server logs, you already know the answer to this question.  However, getting direct feedback is helpful is validating your objective data.   Where possible, include a list of selectable ranges of time like: once a day, once to twice a week, monthly, etc.
  5. What functionality, types of information or content is important to you?
    Provide your survey participants with a list of functionality (e.g. applications), content and information that you’re either considering or have surfaced through the Intranet.  Let them choose what’s most important to them.  Use the answers to help guide your development.  More than one of our clients has chosen features or content poorly without this data (leading to community dissatisfaction with the Intranet).  Further, the answers can help validate or invalidate the inevitable “nice to have” functionality that often is introduced during development; if it wasn’t important to your user community, it shouldn’t be important enough to get included in the Intranet.  You can also follow-up this question with a free-text question allow people to suggest items that weren’t included in the list.

The preceding five questions should really be the start of about a ten (10) question or less survey.  In all cases, try to make survey questions very specific to your organization.  For example, you could ask about the location of the employee (if you have multiple physical locations), ask a matrix question that allows the participant to agree or disagree with various statements regarding your intranet (or what they’d like to see) and ask about usage outside of work (e.g. at home or through a mobile device), if those access methods are important. 

The survey should be one of the first exercises you perform when gathering requirements and/or intelligence on a new or redesigned intranet.  They generally provide very valuable insight into user behavior and needs, plus has the added benefit of allowing you to validate features, functions and “requirements” against direct user feedback. 

In closing, here are some other tips:

  • Surveys should be only one of a few data sets used to evaluate your needs.  While it’s a good foundational insight source, it can also be misleading; if someone doesn’t have a good answer for a specific question, they may simply make something up.  As a result, the size of the survey population has to be significant enough to counteract errant responses.
  • When designing the survey, keep the overall survey length to no more than 4 to 5 “pages”
  • The survey should take between 10 to 15 minutes to complete; longer surveys may work, but you’ll get lower response rates.
  • As mentioned earlier, the surveyed population should be significant, but also representative.  If you 10,000 employees, interviewing 50 people is insufficient as it represents less than 1% of your population.  Further, if you have a mix of factory employees and corporate, desk-bound employees, be sure to get people from both communities to participate.
  • Ask relevant follow-up questions.  For example, if you ask about access methods (e.g. from home, mobile devices, etc), ask if they access the Intranet from home, because they have no access in the workplace (e.g. many factory workers have restrictive work rules that may prevent access to PCs during their shifts).
  • Offering incentives for participation will greatly improve participant involvement.  Some clients offer gift cards for all participants, while others use the “win an iPod” approach with a participant chosen at random.  What you choose should reflect your culture and drive the sort participatory behavior you desire.
  • Follow-up this survey with a similar version post launch.  A follow-up survey will give you very clear measures of improvement and help to establish basic metrics for judging on-going success.  For a discussion of other Intranet metrics, see a great article by Toby Ward on Intranet Metrics.