The Six Essential Soft Skills for IT Professionals

Not too long ago, I was approached by someone wanting to share some thoughts and information more broadly. After an email conversation with this person, I decided to take a chance and afford her a guest blogger hat.

If you feel particularly moved or inspired by the write-up that follows (regardless of direction), please let me know. If you would like to see more of this type of content, please leave a comment to that effect.

And now I turn things over to our guest writer/blogger, Lisa. Sean out!

The Six Essential Soft Skills for IT Professionals

Having high levels of technical skill in IT is great. In fact, CNBC reports that big companies like Facebook and Google are looking at skills rather than college degrees, which is a big step towards providing opportunities for deserving candidates who can’t afford college tuition.

But in any industry, soft skills are also as necessary as technical skills, since the former can ensure an enjoyable collaboration with your teammates and a better work experience overall. Unfortunately, these skills are often undervalued, and corporations don’t hold as many training seminars on them compared to hard skills. Thus, we’ve compiled a list of soft skills IT professionals should have to interact well with other people and thrive in their career.

Empathy

Often seen as a given attribute, empathy is a social skill that needs to be exercised like any muscle. However, in an era dominated by science, technology, engineering, and mathematics, the importance of social sciences is often overlooked, especially in an increasingly digital world. But make no mistake, Maryville University’s overview of the social sciences highlights how these can empower you to be better at changing society — it’s not just about the tech you build or the tools you use, but on why you do things at all. Social sciences highlight the connections that bind our society together, and help you develop a sense of empathy that will make your work not only valuable for whoever uses it, but also the wider social groups within your team and customer base.

Teamwork

Have you ever heard the phrase “teamwork makes the dream work”? While some IT professionals may prefer to work alone, being able to work well with others and recognize each other’s strengths is a skill that is invaluable in IT. Teamwork fosters a positive environment, and also motivates not just yourself, but the people around you to align with each other and get the ball rolling. After all, behind every successful project is an equally successful team.

Being detail-oriented

In the IT industry (or any industry, for that matter), it pays to be detail-oriented — and in some IT roles, this is a vital skill. This is where you have the ability to repeatedly achieve a level of accuracy, thoroughness, and consistency when doing and accomplishing your tasks. It also means making a conscious effort to understand not just the effects, but the causes of the problems you encounter. As you practice this skill, it will eventually become second nature, and you’ll end up knowing how to pay attention to all the little details without noticing it.

Creativity

Listed by LinkedIn as the number one in-demand soft skill by employers, organizations are looking for creative employees who can build new solutions and provide perspective to the workplace. You may think being creative just means thinking outside the box, but it also manifests in having the enthusiasm to approach new projects in a way that is different than you or others typically would.

Clear communication

Our founder Sean McDonough explains that communication is the most critical skill in everything we do — and this doesn’t just mean having good verbal communication, but also clear and compelling written communication skills. After all, with the sheer number of emails, proposals, and documents you have to go through, being able to communicate with co-workers and clients on what exactly has to happen is crucial.

Negotiation

Last but not least is knowing how to negotiate. When you’re working with clients or even just your boss, sometimes you’ll have to negotiate deadline extensions or even your salary — and knowing how to do this well is an essential skill to achieve a win-win outcome. People with successful negotiation skills often come in with a goal and some persuasive data, along with a ready ear to listen to the other person’s side. That’s because negotiation isn’t just about winning it your way, but about meeting halfway and reaching a compromise.

There’s no better way to start learning these skills than to simply do them. Do your best to communicate clearly with your peers, show empathy in situations, and pay attention to detail. Practice your negotiation skills where possible, and don’t be afraid to show your creativity. When you know how to appreciate and gain these skills, you’ll be fully equipped to stand out as an IT professional.

Written exclusively for SharePointInterface.com
by Lisa Martin

One Tool to Rule Them All

Microsoft released the second iteration of its Page Diagnostics Tool for SharePoint. If you have an SPO site, you NEED this tool in your toolbox!

Last week, on Wednesday, September 18th, 2019, Microsoft released the second iteration of its Page Diagnostics Tool for SharePoint. An announcement was made, and the Microsoft Docs site was updated, but the day passed with very little fanfare in most circles.

“The One Ring” by Mateus Amaral is licensed under CC BY-NC-ND 4.0 

In my opinion, there should have been fireworks. Lots of fireworks.

What is it?

If you’re not familiar with the Page Diagnostics Tool for SharePoint, then I need to share a little history on how I came to be “meet” this tool.

Back in 2018, the SharePoint Conference North America (SPCNA) was rebooted after having been shutdown as part of Microsoft’s consolidation of product-specific conferences a number of years earlier. I had the good fortune of making the cut to deliver a couple of sessions at the conference: “Making the Most of OneDrive for Business and SharePoint Online” and “Understanding and Avoiding Performance Pitfalls with SharePoint Online.”

Sometime in the months leading up to the conference, I received an email from out-of-the-blue from a guy named Scott Stewart – who at the time was a Senior Program Manager for OneDrive and SharePoint Engineering. In the email, Scott introduced himself, what he did in his role, and suggested that we collaborate together for the performance session I was slated to deliver at SPCNA.

I came to understand that Scott and his team were responsible for addressing and remedying many of the production performance issues that arose in SharePoint Online (SPO). The more that Scott and I chatted, the more it sounded like we were preaching many of the same things when it came to performance.

One thing Scott revealed to me was that at the time, his team had been working on a tool to help diagnose SPO performance issues. The tool was projected to be ready around the time that SPCNA was happening, so I asked him if he’d like to co-present the performance session with me and announce the tool to an audience that would undoubtedly be eager to hear the news. Thankfully, he agreed!

The audience for our performance talk at SPCNA 2018

Scott demo’d version one (really it was more like a beta) during our talk, and the demo demons got the better of him … but shortly after the conference, v1.0 of the tool went live and was available to download as a Chrome browser extension.

So, what does it do?

Simply put, the Page Diagnostics Tool for SharePoint analyzes your browser’s interaction with SPO and points out conditions and configurations that might be adversely affecting your page’s performance.

The first version of the tool only worked for classic publishing pages. And as a tool, it was only available as a Google Chrome Extension:

The Page Diagnostics for SharePoint extension in the Google Chrome Store

The second iteration of the tool that was released last Thursday addresses one of those limitations: it analyzes both modern and classic SharePoint pages. So, you’re covered no matter what’s on your SPO site.

What Can the Tool Tell Me?

For one thing, the tool can get you the metrics I’ve highlighted that are relevant to diagnosing basic page performance issues – most notably, SPRequestDuration and SPIisLatency. But it can do so much more than that!

Many of the adverse performance conditions and scenarios I’ve covered while speaking and in blog posts (such as this one here) are analyzed and called-out by the tool, as well as many other things/conditions, such as navigational style used, whether or not content deployment networks (CDNs) are used by your pages, and quite a few more.

And finally, the tool provides a simple mechanism for retrieving round-trip times for pages and page resource requests. It eliminates the need to pull up Fiddler or your browser’s debug tools to try and track down the right numbers from a scrolling list of potentially hundreds of requests and responses.

How Do I Use It?

It’s easy, but I’ll summarize it for you here.

1. Open the Chrome Web Store. Currently, the extension is only available for Google Chrome. Open Chrome and navigate to https://chrome.google.com/webstore/search/sharepoint directly or search for “SharePoint” in the Chrome Web Store. However you choose to do it, you should see the Page Diagnostics Tool for SharePoint entry within the list of results as shown below.

2. Add the Extension to Chrome. Click the Add to Chrome button. You’ll be taken directly to the diagnostic tool’s specific extension page, and then Chrome will pop up a dialog like the one seen below. The dialog will describe what the tool will be able to do once you install it, and yes: you have to click Add Extension to accept what the dialog is telling you and to actually activate the extension in your browser.

3. Navigate to a SharePoint Online page to begin diagnosing it. Once you’ve got the extension installed, you should have the following icon in the tool area to the right of the URL/address bar in Chrome:

To illustrate how the tool works, I navigated to a modern Communication Site in my Bitstream Foundry tenant:

I then clicked on the SharePoint Page Diagnostics Tool icon in the upper right of the browser (as shown above). Doing so brings up the Page Diagnostics dialog and gives me some options:

Kicking off an analysis of the current page is as simple as clicking the Start button as shown above. Once you do so, the page will reload and the Tool dialog will change several times over the course of a handful of seconds based on what it’s loading, analyzing, and attempting to do.

When the tool has completed its analysis and is ready to share some recommendations, the dialog will change once again to show something similar to what appears below.

Right off the bat, you can see that the Page Diagnostics Tool supplies you with important metrics like the SPRequestDuration and SPIIsLatency – two measures that are critical to determining where you might have some slowdown as called out in a previous blog post. But the tool doesn’t stop there.

The tool does many other things – like look at the size of your images, whether or not you’re using structural navigation (because structural navigation is oh so bad for your SPO site performance), if you’re using content delivery networks (CDNs) for frequently used scripts and resources, and a whole lot more.

Let’s drill into one of the problem items it calls out on one of my pages:

The tool explains to me, in plain English, what is wrong: Large images detected. An image I’m using is too large (i.e., larger than 300KB). It supplies the URL of the image in question so that I’m not left wondering which image it’s calling out. And if I want to know why 300KB is special or simply learn about the best way to handle images in SharePoint Online, there’s a Learn More link. Clicking that link takes me to this page in Microsoft Docs:

Targeted and detailed guidance – exactly what you need in order to do some site fixup/cleanup in the name of improving performance.

Wrapping-Up

There’s more that the tool can do – like provide round trip times for pages and assets within those pages, as well as supply a couple of data export options if you want to look at the client/server page conversation in a tool that has more capabilities.

As a one-stop shop tool, though, I’m going to basically start recommending that everyone with an SPO site start downloading the tool for use within their own tenants. There is simply no other tool that is easier and more powerful for SharePoint Online sites. And the price point is perfect: FREE!

The next time you see Scott Stewart, buy him a beer to thank him for giving us something usable in the fight against poorly performing SPO sites.

References and Resources

  1. Company: Microsoft
  2. Browser Extension: Page Diagnostics for SharePoint
  3. Microsoft Docs: Use the Page Diagnostics for SharePoint tool
  4. Conference: The SharePoint Conference North America
  5. Presentation Resource: Making the Most of OneDrive for Business and SharePoint Online
  6. Presentation Resource: Understanding and Avoiding Performance Pitfalls with SharePoint Online
  7. LinkedIn: Scott Stewart
  8. Blog Post: The Five-Minute Page Performance Troubleshooting Guide for SharePoint Online
  9. Blog Post: Caching, You Ain’t No Friend of Mine
  10. Tool: Telerik Fiddler
  11. Web Page: Chrome Web Store Extensions
  12. Microsoft Docs: Optimize images in SharePoint Online modern site pages

Running As Administrator All The Time.

In this post, I review the process of creating Taskbar and Start Menu shortcuts that automatically “Run as Administrator” with a left-click or two.

UPDATE (6/9/2019): Jonathan Mast, who happens to be a pretty sharp guy and friend of mine, saw this post and enlightened me with another tip (which I've tried and verified). If you want to launch an application as an Administrator, you can also press <CTRL><SHIFT> while left-clicking the shortcut. Microsoft officially lists this shortcut among its list of Taskbar keyboard shortcuts here. It just so happens that Jonathan now works for Microsoft!

This post is nothing earth-shattering, and my only hope is that it exposes a person or two to a less-than-obvious technique that might yield some incremental time savings when building shortcuts.

I was building some virtual machines the other day, and I was dropping shortcuts onto the Windows Start Menu and the Windows Taskbar with abandon. Creating shortcuts is relatively easy, but I wanted the applications associated with the shortcuts to run with Administrator privileges.

To launch an application from an associated shortcut, we typically do one of the following:

  • Single left-click an application shortcut icon (for applications on the Start Menu or Taskbar)
  • Double left-click an application shortcut icon (in the case of a desktop application shortcuts)

We’ve been doing this for decades now to execute an application. But when we want to launch an application within the security context of an account with Administrator rights, we’ve got to do that right-click thing to select “Run as Administrator” from the list of menu options we’re presented with. It’s a trivial step, I know, but it’s annoying as all get out. My index finger wants to do the clicking, dammit …

Well, there’s a better way to handle this situation. Wouldn’t you like to set up your Start Menu and Taskbar shortcuts to automatically “Run as Administrator” whenever you launch them in the standard left-click (or left double-click) fashion?

The Task at Hand

This is actually relatively easy to do, but I’m sure that there are at least a few out there for whom this will be new knowledge.

For Taskbar-pinned application shortcuts that you always want to launch with Administrator privileges, perform the initial right-click that you normally would to select “Run as Administrator” as demonstrated in the image above and to the right for the Windows PowerShell icon I have pinned to my Taskbar. Instead of clicking “Run as Administrator” as is normally the case, right-click again on the name of the application you want to set up to run in the context of the Administrator account.

In the case of my example, that’s Windows PowerShell. So, I’d right-click once to open the context-sensitive menu seen above, and then I’d right click the “Windows PowerShell” option to open the second context-sensitive menu seen on the left.

Upon selecting “Properties” with a left-click from the second context sensitive window shown above and to the left, the Properties dialog box would appear for the application (as shown below).

Upon seeing this dialog box, you should left-click the “Advanced …” button that appears approximately 2/3 of the way down the dialog on the right. When you click that the “Advanced …” button, you’ll see an “Advanced Properties” dialog open as seen below.

At this point, simply click on the “Run as administrator” checkbox and click the “OK” button on all of the open dialogs to apply your changes. From this point forward, whenever you left-click on the Taskbar shortcut you’ve just configured, the associated application will launch in the context of the Administrator account!

What About Start Menu Items?

Setting up Start Menu shortcuts to “Run as Administrator” is really just a variation on the theme we’ve already established. As with the Taskbar shortcuts, we begin by right-clicking the desired shortcut. In this example, I’m going to use  “.Net Reflector 9.0” shortcut:

After the first right-click, I then hover over or expand the “More” menu item and select the “Open file location” option:

This will open Windows Explorer to the location in the local file system of the shortcut we’re interested in configuring.

From this point onward, it’s the same as it was with the Taskbar shortcuts. Simply click the “Advanced…” button and check the “Run as Adminstrator” box for the shortcut to have the associated application launch in the Administrator context.

Wrap-up

This post wasn’t rocket science, but when I was reminded of the shortcut configuration process (by the recent creation of a new batch of SharePoint 2019 VMs and all of their shortcuts), I figured sharing it out might help a person or two. And after all, that’s what it’s all about! Besides, it gave me the chance to write something up, so I consider it an all-around win. I hope that you feel the same way

 

My Foray Into Office Feng Shui

Sometimes reorganizing a space, like a home office, generates greater benefits than just a more organized space.

Just to level-set at the start: this is not a technical post, and I’m talking about my personal office – not Microsoft Office. Now, with those disclaimers out of the way …

What Exactly Am I Writing About?

When we moved into our current home six or seven years ago, one thing I felt I needed was a proper office. In our old house, I worked out of our unfinished basement, and I’ll be honest: it was depressing. Despite my attempts to “liven up the place” with things like Christmas lights, the only natural light I received while working was provided by three small glass block windows.

And when I say the basement was “unfinished,” I really mean it. Through sheer dumb luck, the table I worked at was also the location of some sort of recessed drain access in the cement floor. I managed to get my office chair wheels stuck in that recess about half a dozen times a day. My chair would nearly tip over whenever that happened.

I think the image I’m painting is bleak enough. I’ll spare you from additional details, like when our sewer line collapsed and the resulting back-up invaded my “workplace.”

I Needed A Proper Office

Hopefully that point is obvious.

The criteria I had when we were looking for a new house six or seven years ago was an office that (a) was at ground level (or higher), and (b) had a proper window. Nothing too excessive, and easily met by my current office.

Below are some images of how my office was set up when we first moved in. Many people say it kind of looks like a college dorm room with the Christmas lighting – a point I can’t argue against.

This configuration worked well enough for a while, but over time I grew more and more dissatisfied with it for the following reasons:

  1. I didn’t make particularly good use of the space I had … and over time, piles grew on every exposed surface.
  2. I used the filing cabinet (it came with the house), but I hated the filing cabinet and the way it jutted out into the room.
  3. My wife regularly registered grievances with the one-off, mismatched furniture. And she hated all the cords everywhere. And the fact that my lighting choices were circa 1995.

Why Did I Do It That Way In The First Place?

If you’re asking that question, it’s a good one. The reason, quite simply, was time. The week that we moved into our home was also the week my wife went in for breast cancer surgery. After the surgery came chemotherapy and then radiation treatments. If you’ve never been with someone going through cancer treatment, then I’ll give you the short version: it knocks them on their ass.

Brendan and Sabrina: Easter 2012

Our children were only about five at the time, and they were still in daycare on the west side of Cincinnati – a good 30-40 minutes away. So, with my wife out of commission, I’d have to run them to daycare in the morning, come back, and then do the reverse in the evening. Between taking care of the family and trying to find time to work, reorganizing my office was the last thing I had on my mind.

But redoing my office was a topic that kept coming up again and again. And so at the start of 2019, with encouragement from my wife, I decided it was finally time to do something.

Office 2.0: The Plan

About the only aspect of my office that I really liked and wanted to keep was the Ikea furniture that I purchased and put together just before we moved in (a desk and a corner table).

Step one of “my plan” was to start getting rid of a lot of old books and associated materials. Technology consulting is a brutal field to be in from the perspective of trying to stay up-to-date on changes and new trends. Most of the books on my shelves weren’t just old, they were ancient.

For example, as much as I loved Practical Standards for Microsoft Visual Basic, it was published about 20 years ago. The things I learned from reading it are still applicable today in slightly modified form (lots of good information/guidance on code readability, documentation, etc), but extended support on VB6 ended in 2008 – over ten years ago.

I ended up getting rid of most of the books I’d bought and inherited over the years. Any that other authors and friends had signed were spared (couldn’t let those go!), as were copies of books that John Ferringer and I co-authored. Other than those that met the narrow range of criteria, any books that were clearly out-of-date were expunged.

With the books gone, I was able to start removing the ugly bookshelves. In truth, it wasn’t a seamless process by any stretch. I had to stage a lot of my office content in the entryway and living room just so I had room to maneuver and manipulate the office space.

Rebuilding from the Ashes

No fires were set; I’m speaking metaphorically when I say “ashes.”

With the old bookshelves gone, I was able to put in new ones that did a much better job utilizing my limited office space. And I was also able to address one of my wife’s standing grievances; i.e., that nothing (or very little) in my office matched.

I again decided to look for bookshelves on Ikea’s site (since my computer desk and corner table were of Ikea design), and I landed on the Brimnes Bookcase. By my rough math, I could get four of them in the office, they were available in black, and I thought they’d work equally well for both books and storage.

When my wife and I got to the Ikea store in West Chester, though, Ikea only had two of the four bookcases in stock that I had come to pick up (despite me doing an inventory check before coming up and successfully purchasing four for pickup). So the remaining two bookshelves were delivered about a week after I got the first two, and I got to work on the two bookcases I had once we got home:

Below is a comparison of the front of my office both with and without the new Brimnes bookcases. I could have used a little more clearance on the sides of the bookcases nearest the office doors, but things went in pretty well.

Let There Be Light!

There were two more things I was hoping to achieve with my office reorg. One of them was being able to finally have some clear desk space, because I always had junk galore on every surface. I didn’t want to keep things that way indefinitely, but I simply had no place to put everything with the old office.

Once I had a place for everything in my office (and quite a bit of extra space, actually), then I should be able to adhere to a “clean desk policy” – or as close as I could get to it – with a little discipline. And I’m happy to report that I’ve largely been able to do that.

The other thing I wanted to do was “grow up” a little bit – at least with my lighting. I am in my mid-to-late 40’s, so I figured it was high time I upped my lighting game.

The immediate problem was that I really still loved multicolor lighting! With some hunting, I managed to find something that nailed my needs straightaway in a very adult/grown-up fashion: Philips Hue Lighting.

Hue Lighting is incredibly flexible. I opted for the bulbs and system that supports changing colors, and it’s wonderful. Let me be clear about an important fact, though: Hue is NOT cheap. It seemed that the cheapest way to buy a bunch of bulbs was to buy a few starter kits, so I have a couple of extra lighting bridges (to tie the lighting into the home wifi) I’m not currently using. If my existing Hue bridge ever goes south, I have a couple of backups.

Since Hue ties into Alexa, I control everything from the Amazon Echo devices we have in nearly every room. And the Hue App for smartphones makes editing lighting configurations easy – and comes with some defaults that produce nice results regardless of the number of Hue bulbs you might have active in the room.

The Results

Below are some office shots with all the bookshelves in place and nearly everything the way I wanted it. Even though I’ve got my lights turned on, these were taken during the day.

To see the true effects of the Hue colored lights, I had to take some night shots:

The last three shots in the series immediately above are of the same office corner; the only real difference is the Hue lighting preset I activated in the system before taking the shots.

Conclusions

In addition to now having an office that fits me better, I discovered a thing or two I really wasn’t expecting as I undertook the overhauling and process:

  1. For me, a cluttered office contributes strongly to my feeling of being unorganized. When I started clearing my desk off and putting things away more regularly, I felt much more “with it.” The effect was almost tangible in a way I never would have expected.
  2. Having room to actually put things away is important to maintaining control over your office environment. Heck, I would argue that addage is true in most rooms and environment. The saying “out of sight, out of mind” holds its weight for me.

Now that I’ve had my office squared away for a few months, I’ve begun the process of organizing the unfinished part of the basement which acts as my server room and hardware workshop. That area needs organization probably worse than my office ever did … but I’ll save that for another time and another post.

References and Resources

  1. Book: Practical Standards for Microsoft Visual Basic
  2. Microsoft: Search Product Lifecycle
  3. LinkedIn: John Ferringer
  4. Ikea: Brimnes Bookcase
  5. Product: Philips Hue Lighting
  6. Amazon: Philips Hue Starter Kit

Obtaining Performance Metrics for SharePoint Online Modern Pages

In this post, I’ll show you how to obtain page performance core metrics from Modern SharePoint Online pages. It’s easier and more reliable than trying to obtain the same data from classic pages.

Background

It was quite some time ago that I wrote my Five-Minute Page Performance Troubleshooting Guide for SharePoint Online – a little over a year-and-a-half ago, actually. Since that time, SharePoint Online (SPO) has continued to evolve relentlessly. In fact, one slide I’ve gotten into the habit of showing during my SPO talks and presentations is the following:

FiveYearWarning

The slide usually gets the desired response of laughter from attendees, but it’s something I feel I have to say … because like so many things that seem obvious, there’s some real life basis for the inclusion of the slide:

OldPost

The exchange shown above was the result of someone commenting on a post I had shared about limitations I was running into with the SharePoint App Model. The issue didn’t have a solution or workaround at the time I’d written my post, but Microsoft had addressed it sometime later.

BestBeforeDateThis brief exchange highlights one of the other points I try hard to make while speaking: PAY ATTENTION TO DATES! It’s not safe to assume (if it ever was) that something you read online will stay accurate and/or relevant indefinitely.

In any case, I realize that much of what I share has a “born on date,” for lack of a better label. I’ll continue to share information; just note when something was written.

End of (slight) rant. Back to the real topic of this post.

Modern Pages

Since I had written the previous performance article, Microsoft’s been working hard to complete the transition to Modern SharePoint in SPO. I feel it’s a solid move on their part for a variety of reasons. Modern pages (particularly pages in communication sites) are much more WYSIWYG in nature, and SharePoint Framework (SPFx) web parts on modern pages make a whole lot of sense from a scalability perspective; after all, why assume load on the server (with classic web parts) when you can push the load to the client and use all the extra desktop/laptop power?

As good as they are, though, modern pages don’t obey the standard response header approach to sharing performance metrics. But not to worry: they do things more consistently and reliably (in my opinion).

Performance on a Modern Page

SPRequestDuration (the amount of time the server spent processing the page request) and (SP)IISLatency (the amount of time the page request waited on the server before getting processed) are critical to know when trying to diagnose potential page performance issues. Both of these are reported in milliseconds and give us some insight into what’s happening on the server-side of the performance equation.

Instead of trying to convey these values with response headers (as classic pages do – most of the time), modern pages share the same data within the body of the page itself.

Consider the following page modern page:

PerfPage

If this were a classic publishing page and we wanted to get the (SP)IISLatency and SPRequestDuration, we’d need to use our browser’s <F12> dev tools or something like Fiddler.

For modern pages, things are easier. We turn instead to the page source – not the response headers. Grab the page source (by right-clicking and selecting View page source) …

PerfPageSource

… and you’ll see something like the following:

SourceMetrics

Now, I’ll be the first to admit that you’ve got to have some sense of what you’re seeking within the page source – there’s a lot of stuff to parse through. Doing a simple <CTRL><F> search for iislatency or requestduration will land you on the content of interest. We’re interested in the metrics reported within the perf section:

PerfUpClose

The content of interest will be simple text, but the text is a JSON object that can be crunched to display values that are a bit easier to read:

Metrics

The other thing you’ll notice is that a lot of additional metrics are reported along with the page processing metrics we’ve been looking at. In a future post, I’ll try to break some of these down for you.

Conclusion

“Modern” is the future of SharePoint Online. If you haven’t yet embraced modern lists and pages, consider dipping your toe in the waters. As we’ve seen in this post, Modern also makes it easier to obtain performance metrics for our pages – something that will make page performance troubleshooting significantly more predictable and consistent.

References and Resources

  1. Blog Post: Five Minute Page Performance Troubleshooting Guide for SharePoint Online
  2. Office.com: SharePoint Classic and Modern Experiences
  3. Office.com: What Is A SharePoint Communication Site?
  4. Microsoft.com: Overview of the SharePoint Framework
  5. MDN: Response Header
  6. Telerik: Fiddler
  7. JSON Viewer: Code Beautify

Threatening Outlook to Restore Drag-and-Drop Functionality

Have you ever experienced a loss of drag-and-drop functionality with the Microsoft Outlook client? If so, I might have a solution …

Yes, that’s right. I said threaten Outlook.

Angry Woman
Don’t make me come over there, Outlook …

I’m not a violent person, but I can become rather … colorful … when my drag-and-drop functionality stops working. And when that happens, I know how to threaten Microsoft Outlook to restore it.

Let me back up for a second and ask: have you ever been clicking away inside of Outlook, reading messages, cutting through email and discovered that drag-and-drop functionality had stopped working? If you’re like me, I receive tons of email each day. I count on being able to use drag-and-drop to move things out of my inbox and into designated folders so that I can retain what little sanity I have left.

My typical email triage routine entails me reading new messages in my inbox, determining if I can address or somehow close out whatever is being asked of me within the email, and then shuttling the email to a folder for future reference. That “shuttling” part, for me, depends on drag-and-drop functionality.

Microsoft Outlook normally works fine for me (we’re buddies), but every now and then something happens and drag-and-drop stops working. For instance, I’m trying to drag an email message into a folder and Outlook simply doesn’t comply with my orders. Maybe the mouse cursor changes to let me think I’m dragging-and-dropping, but in reality the message movement never happens.  The email remains in my inbox, and I’m left without an expedient way to organize messages.

I discovered, quite by accident, that there was a way to fix the problem – to restore drag-and-drop capability to Outlook. What is the way, you ask?

Well, I say give it the three-finger salute. Yes, that’s right: <CTRL><ALT><DEL>!

I don’t exactly understand the mechanic myself, but the <CTRL><ALT><DEL> sequence seems to do something to get drag-and-drop back to a functional state.

DragAndDrop

I thought I was crazy when I encountered this and that the usefulness of this information might be limited to just me, but my wife convinced me otherwise. She was banging her head against the same drag-and-drop problem I had, and simply hitting <CTRL><ALT><DEL> fixed it for her, as well.

I want to be clear here: I’m not advocating for a <CTRL><ALT><DEL> to reboot your system, or anything like that. I jokingly say that we’re threatening to reboot. Simply press the three keys, and then cancel out of the screen that appears. No logging out, and no launching into Task Manager required.

If you depend on drag-and-drop in Outlook like I do, and you find this trick works for you, please leave me a comment or let me know. I’d like to get an idea of how widespread this problem is so that I can give some feedback to Microsoft.

Good luck!

The Five-Minute Page Performance Troubleshooting Guide for SharePoint Online

I regularly hear from SharePoint Online customers that their pages are slow … but they don’t know where to start troubleshooting. Is it the SPO servers? The network? Their page(s)? In this post, I’ll show you how to determine the general source of your slow pages in five minutes or less. It won’t solve your slow page(s) problem, but it will give you enough direction to know where to focus further analysis.

UPDATE (3/20/2018): As most of you who have been following-along in your own tenants know, this issue wasn’t actually truly resolved last September. For a while, in some cases, it looked like the SPIisLatency and SPRequestDuration headers came back. But the victory was fleeting, and since that time I’ve continued to get comments from people saying “but I don’t see them!” And while I had the headers for a while in my tenant, I haven’t seen them in any predictable fashion.

The good news is that after much hounding and making myself a royal pain-in-the-tuckus to Bill Baer and others at Microsoft, it looks like we FINALLY have the right engineering and dev teams engaged to look at this. We got traction on it this week, with multiple repro scenarios and Fiddler traces being passed around … so I’m truly hopeful we’ll see something before long. Stay tuned!

ItsBack

UPDATE (9/2/2017): As I was preparing slides for my IT/DevConnections talks, I decided to check on the issue of the missing Page Response Headers (SPIisLatency and SPRequestDuration). I went through three different tenants and several pages, and I’m happy to report that the headers now appear to be showing consistently. My thanks to Microsoft (I’ll credit Chris McNulty and Bill Baer – I had been pestering them) for rectifying the situation!

“Why is it so slow?” That’s how nearly every performance conversation I’ve ever had begins.

No one likes a slow intranet page, and everyone expects the intranet to just “come up” when they pop the URL into their favorite browser. From an end-user’s perspective, it doesn’t matter what’s happening on the back-end as long as the page appears quickly when someone tries to navigate to it.

SharePoint Online is a big black box to many of its users and consumers. They don’t understand what it takes to build an intranet, nor should they have to. The only thing that really matters to them is that they can bring up a browser, type in a URL, and quickly arrive at a landing page. The burden of ensuring that the site is optimized for fast loading falls to the folks in IT who are supposed to understand how everything works.

If you’re one of those folks in IT who is supposed to understand how everything works with SharePoint Online but doesn’t, then this blog post is for you. Don’t worry – I know there’s a lot to SharePoint Online, but performing some basic troubleshooting analysis for slow pages in SharePoint Online is pretty straightforward. I’ll share with you a handful of techniques to quickly ascertain if the reason for your slow pages is due to the content within the pages themselves, if the issue is network-related, or if there might be something else happening that is beyond your control.

Your Toolset

The first step in your performance troubleshooting adventure begins by opening up your browser from a client workstation. Everyone has a favorite browser, but I’m going to use and recommend Internet Explorer for this exercise because it has a solid set of development tools to assist you in finding and quantifying performance issues. In particular, it is able to chronologically list and detail the series of interactions that take place between your browser and the SharePoint Online web front-ends (WFEs) that are responding to your requests.

When recommending IE, some people ask “how come you don’t use Fiddler?” It’s a good question, and when I first started showing people how to do some quick troubleshooting, I’d do so with Fiddler. If you’re just starting out, though, Fiddler comes with one really big gotcha: operating inside an SSL tunnel. To get Fiddler (which is a transparent proxy) working with SSL, there is some non-trivial setup required involving certificate trusts. Since this is intended to be a quick and basic troubleshooting exercise, I figure it’s better to sidestep the issue altogether and use IE (which requires no special setup).

The Setup

To make this work, let us assume that I am attempting to profile the Bitstream Foundry (my company) intranet home page in order to understand how well it works – or doesn’t. My intranet home page is pretty plain by most intranet standards (remember: I’m a developer and IT Pro – not a designer), but it’s sufficient for purposes of discussion.

Step 1. Open Your Browser

I start by opening Internet Explorer and navigating to the Bitstream Foundry intranet home page at https://bitstreamfoundry.sharepoint.com. Once I move past the sign-in prompts, I’m shown my home page:

Bitstream Foundry Intranet Home Page

My home page has very little on it right now (I’m still trying to decide what would go best in the main region), but it is a SharePoint Online (SPO) page and it does work as a target for discussion purposes.

Step 2. Access the Developer Tools

Accessing the developer tools within Internet Explorer is extremely simple: either press F12, or go to the browser’s gear icon and select F12 Developer Tools from the drop-down that appears as seen below:

Accessing the IE Developer Tools

Doing either of these will pop-open the developer tools as either a stand-alone window or as a pane on the lower half of the browser as shown below:

Internet Explorer F12 Developer Tools

Step 3. PREPARE TO CAPTURE

When the developer tools first open, they’re commonly set to viewing the page structure on the DOM Explorer tab. For purposes of this troubleshooting exercise, we need to be on the Network tab so we can profile each of the calls the browser makes to the SPO WFE.

Select the Network tab and then select the “Always refresh from server” button as highlighted below in red.

Prepare for Capture

The Network tab is going to allow us to capture the series of exchanges between the SharePoint WFE and our browser as the browser fetches the elements needed to render the page. The “Always refresh from server” button is going to remove client-side caching from the picture by forcing the browser to always re-fetch all referenced content – even if it has a valid copy of one or more assets in the browser cache. This helps to achieve a consistent set of timing values between calls, and it’s also going simulate someone’s first-time visit to the page (which typically takes longer than subsequent visits) more accurately.

Step 4: Capture the Exchange

The next step is to capture the series of exchanges between IE and SPO. To do this, simply refresh the page by pressing the browsers Refresh button, pressing , or going to the browser’s address bar and re-issuing the page request.

The contents of the window on the Network tab will clear, and as content begins to flow into the browser, entries will appear on the screen. For every request that IE makes of SharePoint Online, a new line/entry will appear. It will probably take a handful of seconds to retrieve all page assets, and it’s not uncommon for a SharePoint page to have upwards of 75 to 100 resources (or more) to load.

Capture the Exchange with SPO

Strictly speaking, you shouldn’t have to stop the capture once the page has loaded, but there are several reasons why you would want to.  First, you will eventually retrieve all SharePoint assets necessary to render the page. If you continue to capture beyond this point, you’ll see the number of requests (represented in the bottom bar of the browser – the number is 83 requests in the screenshot above) continue to tick up. It will slowly go up over time and it’s not due to the contents of the SharePoint page – it’s due to Office 365.

If you look at the last entry in the screenshot above, you’ll see that it’s a request to https://outlook.office365.com/owa. In short: this is due to a background process that allows Exchange to notify you when you receive new messages and calendar/event notifications. See how the Protocol and Result/Description columns indicate a (Pending) state?

If you get to this point and additional SharePoint elements are no longer loading, press the red “recording stop” button in the toolbar of Network tab. This will stop the capture. Not only does this help to keep the captured trace “cleaner,” but it also prevents excessive distortion of certain values – like overall time to load and the graphical representation of the page load (shown on the far right of the Network tab) as shown below.

Page Timeline Distortion

Step 5: Find the SharePoint Page Request

At this point, you should have a populated Network tab with the entire dialog of requests that were needed to render your page. Of these requests, the overwhelming majority of them will be for JavaScript files (.js), cascading stylesheets (.css), and images (.png, .gif, and .jpg). Only one of them will be for the actual SharePoint page itself (.aspx) … and, of course, this is the request that you need to find in the list.

My intranet home page is named Home.aspx (as can be seen in the browser address bar), so I need to find the request for Home.aspx on the Network tab. I got lucky with this dialog attempt, because Home.aspx is the first entry listed. Note that this isn’t always the case, and it’s not uncommon to find your page request 10 or 20 down in the list.

Select the ASPX Page

When you locate the entry in the list for your .aspx page, click on it to select it. You can confirm that you’ve selected the right entry by verifying Request URL on the Headers tab to the right of the various requests listed for the exchange with SPO (highlighted in the image above).

Step 6: Analyze the Headers

At this point, we need to shift our focus to the HTTP Response Headers that are passed back with the content of the page. Much like the request headers that the browser sends to the server to provide information about the request being made, the response headers that are sent from the server supply the browser with all sorts of additional information about the page. This can include the size of the page (Content-Length), the payload (Content-Type), whether or not the page can be cached (Cache-Control), and more.

Making sure that you have the Headers tab selected, locate and record the three response headers as shown below:

Response Headers of Interest

The three values we want to record are:

  • SPIisLatency. This is a measure of the amount of time (in milliseconds) that the request spent queued and waiting to be processed by IIS (Internet Information Services – the web server). Ideally, it should be zero or very close to zero. In my example, the SPIisLatency is 3ms.
  • SPRequestDuration. This is the amount of time (again, in milliseconds) that it took to process the request on the server. Basically, this is the end-to-end processing time for the page. Healthy pages range from a couple hundred milliseconds to around a second depending on the content of the page. In my example, the SPRequestDuration is 249ms.
  • X-SharePointHealthScore. This is the value, from zero to ten, that indicates how heavily loaded the SharePoint Server is at the time when the page was served. A score of zero means the server is not under load, while a score of ten means the server is overloaded. As the X-SharePointHealthScore goes up, the server begins to selectively suspend work designated as “low priority,” like some Timer Service jobs, Search requests, and various other low-priority tasks. ideally, this value should be zero – or close to it. In my example, the value is zero.

We can infer a great deal about the page processing and network traversal of our page request with just these three values and a final number.

A quick note (2017-07-06): For some reason, a variety of SharePoint Online sites have been returning pages without the SPIisLatency and SPRequestDuration headers lately. I don’t know why this is happening, and I’ve reached out to Microsoft to see if it’s a bug or part of some larger strategy. I don’t think it’s deliberate, because the headers provide some of the only insight end-users can get into SharePoint Online page performance. When I hear something from the product team, I’ll post it here!

The Magical Trio: SPIisLatency, SPRequestDuration, and Total Trip Time

So, you’ve now got three numbers – two of which are helpful for page profiling (SPIisLatency and SPRequestDuration), and a third number (X-SharePointHealthScore) which will tell you how stressed the server was when it served your page. What can you do with them? As it turns out, quite a bit when you combine two of the three with a fourth number.

What is the fourth number? It’s the total trip time that is reported for the page being loaded, and it represents the elapsed time from the point at which the page was requested until the time when the last byte of the page was delivered. For example, I profiled my Bunker Tuneage site. It’s a SharePoint Online site (yes, I know – I have to get it moved to another location soon), so it makes a good target for analysis:

Bunker Tuneage Page Profile

In the above example, the three numbers we’re most interested in are:

  • Total Trip Time: 847.47ms
  • SPRequestDuration: 753ms
  • SPIisLatency: 0ms

If we think about what the individual values mean, we can now reason that the total amount of time spent to get the page (847.47ms), minus the total amount of time spent waiting or processing the server (753ms), should be roughly equal to the amount of time spent “elsewhere” – either in routing, traversing network boundaries, on proxies and firewalls, etc.

So, considering our numbers above, the equation looks like this:

Performance Equation

Based on our equation, this means that approximately (this isn’t exact) 94.47ms of time was spent getting from from the SharePoint Online server to our browser – not too shabby when we consider it.

The Permutations

The numbers could come out a variety of different ways when doing this, so it’s best if we try to establish a general trend. Variability between any two runs can be significant, so it’s in your best interests to conduct a number of runs (maybe a dozen) and come up with some average values.

Regardless of the specific values themselves, there are some general conclusions we draw about each value by itself – and when it is compared to the others.

  • High Total Time. The total end-to-end times can vary dramatically. The examples I’ve got shown thus far demonstrate sub-second latency (i.e., hundreds of milliseconds), and any time you can get values like that, it’s nothing to complain about. When your total round trip time climbs to two or three seconds, your generally still doing pretty good. If you hit five, six, or seven+ seconds, it’s time to move on to what to see what SPRequestDuration, SPIisLatency, and the time-spent-elsewhere values say.
  • High SPIisLatency. If you observe consistently high SPIisLatency values, they point to there being something wrong server-side, since a high SPIisLatency suggests that requests are backing up on the server. Although I’ve never seen it, I believe you could see high SPIisLatency for a brief period of time … but during that time, I’d also expect SharePoint Online to be spinning-up additional WFEs to deal with the effects of high user load. I’ve only ever seen SPIisLatency values in the single digits before, and they’ve never lasted beyond a request or two.
  • High “Time Lost ‘Elsewhere.'” If you crunch the numbers in the performance equation and come up with a significant amount of time being lost “elsewhere,” it suggests that the traffic between SharePoint Online and your computer is being slowed down for some reason. It doesn’t specifically indicate what is causing the slowdown, but the slowdown could be due to any number of network conditions: excessive routing, web proxies, egressing to the Internet out-of-region (a form of excessive routing), firewall issues, or a whole host of other conditions. What represents “excessive” time spent elsewhere? Again, I can only speak to trends here, but I tend not to get too upset about anything under 1s (1000ms) being lost to other factors. When time lost elsewhere grows to be high – especially compared to SPRequestDuration – that’s when I get concerned. For example, an SPRequestDuration of 800ms with a time-lost-elsewhere value of 2500ms makes me wonder what’s happening between SharePoint Online and my computer.
  • High SPRequestDuration. A high SPRequestDuration value can be caused by a variety of factors, and in truth the diagnosis tends to become a bit contentious. Since a high SPRequestDuration means that a page is taking a long time to process on the server, the most common response I frequently encounter (especially among those new to SPO) is that “there’s something wrong with SharePoint Online.” I hate to be the bearer of bad tidings, but repeat after me: “The problem isn’t with SharePoint Online, it’s with my site.” That 9000ms SPRequestDuration probably has very little to do with SPO and everything to do with how you customized SharePoint, your choice of navigation style, the fact that there are two dozen “expensive” web parts on the page, or something related to that. I’m not willing to rule out a problem with a SharePoint Online tenant, but in truth I have yet to encounter it.

What Can I Do About a High SPRequestDuration?

If you don’t believe me and instead feel that the problem is with the SharePoint Online environment, the good news is that there’s an easy way to tell one way or the other … and I highly recommend doing this before calling Microsoft Support (trust me, they’ll thank you for doing so).

Believe it or not, SharePoint Online is also where OneDrive for Business data is stored. A OneDrive for Business page, at its core, is a SharePoint page with nearly no customization. Using someone’s OneDrive for Business page becomes an excellent A/B test when the performance of SharePoint Online page is sub-par. Simply load up their OneDrive for Business page and compare performance numbers to the page in question.

OneDrive for Business Performance

Revisiting my Bunker Tuneage site example, you can see that the OneDrive for Business landing page is served from the same tenant as the earlier page. If I were to compare the SPRequestDuration value of the OneDrive for Business page (223ms) with the SPRequestDuration of the SharePoint page in-question (753ms), I’d note that the values differed … but are they different enough to think something is going awry in the SPO environment?

Roughly half a second (~500ms) is indeed a difference, but it’s not enough for me to think that the online environment has problems. When I see SPRequestDuration values like 9000ms for a SharePoint page but 500ms for OneDrive for Business page, that’s when I begin to suspect something is amiss. And again: with such an extreme disparity in values, SharePoint Online is healthy (500ms), but there’s clearly something wrong with my page (9000ms).

Practical Advice

When it comes to diagnosing the root cause or causes for high SPRequestDuration values, the good news is that there are plenty of fixes that range from the simple to the quite invasive. Microsoft has taken the time to compile some of the more common causes, and I highly encourage you to take a look if you’re interested.

At the end of the day, though, sometimes you just want to know where to begin troubleshooting so that you can focus remediation efforts. If you follow the steps outlined in this blog post, I think you’ll find that the five minutes they take to execute will help to focus you in the right area.

References and Resources

  1. MSDN: Discovering Windows Internet Explorer Developer Tools
  2. Company: Bitstream Foundry
  3. Telerik: Fiddler Web Debugging Proxy
  4. Fiddler: Decrypting HTTPS-protected traffic
  5. Mozilla Developer Network: HTTP Headers
  6. SPO Public Site: Bunker Tuneage Online
  7. Blog Post: Save Your SharePoint Online Public Site from the Chopping Block
  8. Office Support: Tune SharePoint Online Performance