Monday, November 23, 2009

Don’t Let Yourself Be the Bug in Your Software

Have you ever heard the old joke about the guy who was such a bad dancer that they asked him to stop because he kept throwing off the music?  (If you know who told that joke originally, please let me know).

My wife had an interesting experience today in much the same vein.

Our children’s school system uses a web-based software system to schedule quarterly parent/teacher conferences.

For the elementary school, the scheduling is pretty straightforward, because you only have to schedule with one teacher.

For the middle school, however, it’s more complicated, because there are a half dozen or more teachers to potentially meet with for our one student. 

Because of this, conferences are limited to 10 minutes, per the rules indicated in the software system, and you can – in fact, you are encouraged to -- schedule back to back conference slots with different teachers, such that you can get through, say, six conferences in 60 minutes, in theory, with one scheduled right after another.  My wife scheduled her times a couple of weeks ago, and had no trouble with the software.

So far, so good.

Now, given that this is scheduling software, it only stands to reason that the offline elements of the scheduling process should be aligned with the software’s scheduling rules and vice-versa.  Unfortunately, this was apparently not the case.

My wife showed up 10 minutes early to her first scheduled conference.  She was told that she was 10 minutes (a whole session, mind you) early, and asked could she wait until the other parent(s) showed, or didn’t show, so everything could stay on track.  Smart thinking.  Despite my wife being early, the teacher recognized the potential downstream impact of breaking with the “business rules” so to speak, in this one case.

But, for some reason, certainly meaning no harm, the teacher said, just a moment or two later, that my wife might as well sit down and get started with the conference, so my wife obliged, even though only about half of the appointment timeslot remained. 

But, about 6 or 7 minutes into the other parents’  appointment time, the other parents actually did arrive, and the teacher then told my wife that she would have to abruptly end the conference that had only just begun, because she had to keep things on track schedule wise. 

In effect, she, again, meaning no harm, gave the other parents my wife’s slot and shortened the previous slot that my wife had “taken” at the teacher’s own request.  As a result, my wife got only about 2-3 minutes for that first conference, and didn’t have an opportunity to ask questions or discuss.  This is what is referred to as an  unsatisfied customer.

According to my wife, bells were not used to mark the hard cutoff for the 10 minute cycles, so she simply went on to the next room on her schedule, only to find that the teacher in that session was backed up, running about a session behind schedule.

This issue cascaded through several other conference timeslots, and apparently, occurred for others in parallel, until at one point my wife happened to be passing a school administrator in the hall, who was earnestly trying to keep things flowing properly.

The administrator, certainly meaning no harm, asked if my wife was having challenges with the schedule due to the fact that all of the teachers were running behind by 1 or 2 appointment slots by now.  My wife indicated that yes, the schedule was now off track, and the administrator, trying to help of course, said she would call the last teacher on my wife’s schedule and tell her that my wife would be on her way, but that her schedule was thrown off by earlier delays.

It is not clear whether the administrator actually reached the teacher to relay that message, but when my wife showed up, 15 minutes after the originally scheduled time, due only to the delays elsewhere, the teacher seemed completely irritated by the delay, and made it clear that she held my wife responsible for it.  The ensuing conversation was equally frosty.

My wife, to reiterate, was at the school early for her first appointment of the day, and simply tried to go from conference to conference per the schedule she had established with the website software a few weeks earlier.

So, considering my wife’s case alone, the software worked perfectly, but one appointment got cut short and thereby rendered essentially meaningless, all others got delayed, and the final one included some insulting attitude for good measure.

Now, I’m sure, at no point in this process did anyone think they were causing any harm.  And yet, major breakdowns occurred.

You can’t blame the software.  It did what it is meant to do.

You can’t blame the people for being ill-intentioned.  No one meant to cause any trouble.  Okay, maybe a few people could have been more pleasant, and/or followed through better.  But that’s just humans for you.

Regardless, there was definitely a process breakdown.

Looking at it after the fact there were a few key breakdown points that were noteworthy:

1) In my wife’s case, to stick with the process as well as possible, the first teacher should have either

a) not seen my wife until her scheduled appointment time, so she could politely let the late-arriving parents know that that time was booked, thereby hopefully keeping the subsequent appointments on track

b) seen my wife, and when the other parents did arrive, flip-flopped their appointment time with my wife’s so both got their full time and the teacher’s attention

or maybe even c) simply rescheduled the other parents’ appointment for later on in the day, for example

2) The administrator, rather than trying to call individual teachers and put out mini-fires, should have addressed the root problem – in my opinion, without the use of the school’s bell system to clearly indicate that appointment times had ended, parents and teachers apparently went over their allotted time in many, many cases, which had a cascading effect on delays.

3) The final teacher, when told by my wife that her delayed arrival to that last conference was the result of the aforementioned breakdowns, should have been more understanding, but that is really a matter of opinion, frankly.  You can’t count on people to be nice or understanding, I’m afraid.

The reality is, if parents and teachers had been more successfully influenced to stick to their appointment times, aligning the real-world process more closely with the software, then, the delays might not have occurred, and thus, the last teacher, despite her attitude, would have had little to complain about with respect to my wife’s arrival time at her conference.  And, the user, my wife, would have had a much more pleasant experience, and she’d be singing the praises of the school’s efficient method of handling conferences.

The moral of the story?  Don’t invest in software to simplify a relatively complex process, only to then be the bug in your own software by neglecting the real-world aspects of the process the software is supposed to help you streamline! 

Oh, and whatever you do, don’t piss off the end user.  Especially when she’s my wife.

This post originally appeared at

Reprints with attribution are welcome, feedback welcome.

Friday, November 20, 2009

Jeff Becraft Interviewed by Microsoft Architect Evangelist Kirk Evans on Microsoft’s Channel 9!

I want to thank Kirk Evans, Architect Evangelist for Microsoft, who recently interviewed me about AT&T’s managed SharePoint hosting services.

P1360841Kirk is a very knowledgeable guy with great connections to people doing fascinating things with the technology, so if you’re working in the Microsoft space, you should definitely follow him on Twitter @kaevans, and watch for more of his “Water Cooler” shows on Channel 9.

Tuesday, November 10, 2009

Benjamin Franklin’s Thoughts On Cloud Computing

I’ve recently been reading the Autobiography of Benjamin Franklin, and have been marveling at the timelessness and broad applicability of many of Mr. Franklin’s nuggets of wisdom.

A surprising number of them I find quite applicable to Cloud computing, the application service provider model, Software as a Service, or whatever you wish to call your particular flavor and brand of server management handled off-premises by an external vendor.

As I too infrequently do, before writing this post, I actually Googled my topic “Benjamin Franklin cloud computing” just to make sure no one had already identified this connection, and sure enough someone had.  But, hopefully, this post is entertaining and insightful nonetheless.

"I was not discouraged by the seeming
magnitude of the undertaking, as I have
always thought that one man of tolerable
abilities may work great changes and
accomplish great affairs among mankind if he
first forms a good plan, and, cutting off all
amusements and other employments that would
divert his attention, make the execution of that
plan his sole study and business."

What Mr. Franklin is telling us here is that focus and experience are key factors when considering a cloud computing vendor or application service provider.  Do you want to go with a company that has decided recently to offer their services in a hastily constructed cloud computing model, or someone who has made providing services in that model “their sole study and business” for years?

"Partnerships often finish in quarrels, but I
was happy in this, that mine were all carried
on and ended amicably, owing I think a good
deal to a precaution of having very explicitly
settled in our articles everything to be done by
or expected from each partner, so that there
was nothing to dispute, which precaution I
would therefore recommend to all who enter
into partnerships."

Here Ben is pointing out that when you put your data and solutions in the cloud, you are deliberately handing off responsibilities to the vendor.  You and that vendor owe it to yourselves to make sure that you have carefully ironed out the details regarding who is accountable for what, and where the line between included services and extra costs really is.

"In the first place, I advise you to apply to
those who you know will give something; next,
to those who you are uncertain will give
anything or not, and show them the list of
those who have given. And lastly, do not
neglect those who you are sure will give
nothing, for in some of them you may be

Even in the mid-1700s, it was clear to the Founding Father that cloud computing providers can’t effectively spring into action and achieve success throughout the market overnight.  It takes years of disciplined building and refactoring of the entire operating environment, customer service organization, and billing systems to get it all just right. 

Early adopters will naturally light the way for those who are more risk averse, and only after those two groups are satisfied with the results will the masses be swayed.  If you are choosing a cloud computing provider, it behooves you to learn how long they’ve been offering services in that model.

"Human felicity is produced not so much by
great pieces of good fortune that seldom happen,
as by little advantages that occur every day."

Ben is telling us that the key to being happy when handing over the management of your data, your security, your applications, your entire solution, to your vendor is feeling as if you are getting consistent, high value every day. 

Sure, it’s great to see your cloud computing provider swing into action and save the day when there is that rare crisis, but don’t overlook the confidence you develop day by day as the system remains stable, the patching gets done quietly and uneventfully, and the functionality and/or performance are enhanced on an ongoing basis. 

Also consider how well the provider has adapted their customer service people’s work style to suit your company’s needs, as opposed to the other way around.  What greater advantage can a provider offer you than their ability to seamlessly integrate with your own team so you can get mutually ensure that each other’s work on your behalf gets done quickly and effectively.  

"How few know their own good, or knowing
it, pursue. Those who govern, having much
business on their hands, do not generally like
to take the trouble of considering and carrying
into execution, new projects. The best public
measures are therefore seldom adopted from
previous wisdom, but forced by the occasion."

Leave it to Ben to point out that cloud computing offers a tremendous advantage over traditional delivery models in that you can get to work quickly without having to first procure your own hardware, networking, data center racks, etc.  The easier your provider can make it for you to get your application up and running quickly, the easier it will be for you to get approval for that opportunistic project your team just identified.  Cloud computing becomes a valuable addition to your toolbox in this sense, because it gives you an option where previously, all you had were processes and delays.

"When men are employed they are best
contented... [As with] the sea captain whose
rule it was to keep his men constantly at work,
and when his mate once told him that they
had done everything, and there was nothing
further to employ them about, 'Oh?' says
he. 'Make them scour the anchor.'"

Let’s face it.  There is always more to do.  You are never going to have plenty of time to get it all done.  Why NOT take a big chunk of the stuff you have to do but which does not materially push your business close to its goals, and push that off to your cloud computing provider?  That way, you can focus on what is going to make your business more successful, and let your provider worry about making the process of managing your system more efficient.

At the same time, your provider is going to be able to work night and day on making the process of carrying out those tasks in the most optimal, efficient, repeatable way possible, in order to maximize their margins and minimize the effort involved.  You can only benefit from this constant and never ending cycle of improvement and refinement.

"Such extreme nicety as I exacted of myself
might be a kind of foppery in morals which, if
it were known, would make me ridiculous --
that a perfect character might be attended with
the inconvenience of being envied and hated,
and that a benevolent man should allow a few
faults in himself to keep his friends in

The irony of the cloud computing model is that when it’s working, it doesn’t draw attention to itself so no one thinks about how well the provider is executing on a good day,DSC_0011RedBarnFarLeft_100dpi but when it’s not working, oh boy, does it draw attention to itself, and all manner of eloquence is spoken about the provider, as if systems never hiccupped when the solution was in-house. 

Alas, while you will hit that 99.9% or higher SLA on average, when that occasional fluky thing happens that takes the system offline for a blip, and your provider not only fixes the problem promptly, but calls you to inform you of what happened before you even receive any complaints from users, take that responsiveness as a blessing, rather than overly focusing on the fact that the issue occurred in the first place.  No system is perfect, but if you and your provider have planned ahead properly, these flukes will be a relatively painless reminder of how well the relationship is going both day to day and in times of crisis.

Wednesday, November 4, 2009

Web Part Page Bombing? Enter Web Part Maintenance Mode To Fix It

Quick tip to SharePoint customers and end users who are working with a web part page that is bombing out before they can do anything to it.


Append the above to the end of the URL of the web part page (you can use the right click on the hyperlink, Copy Shortcut method to get the URL into your clipboard without going to the page and repeating the bomb out), and load the page again.

You will enter web part maintenance mode, giving you a chance to remove the offending web part without having to kill the whole page and create it all over again from scratch.

Unfortunately, this doesn’t give you a magic bullet for resolving the underlying problem, but it does at least allow you to preserve the page as it was prior to adding the offending web part.