Monday, November 22, 2010

Two Weeks of #SQLAwesomeSauce Over - With More To Come

What a stellar two week jolt of SQL Server goodness.  SQL Connections in Las Vegas the first week of November, then the "big kahuna" of SQL conferences - the PASS Summit in Seattle.  It was fantastic to run into people I'd met at the last Summit (in both places!) and meet some new people interested in SQL Server and Integration Services.  It's taken me this long to recover and get back (almost) on top of "regular" work.
SQL Connections Fall 2010
Of course, the main reason I was in Vegas was to do some presenting, and overall was very pleased with the turnout and participation of the audience.  My third session (on Script components) really felt too rushed to me - and it won't surprise me at all if that's my lowest rated.  For those of you who do want to see the slide decks and sample code from those sessions, here they are:
PASS Community Summit 2010
The following week was the pinnacle event of the SQL Server world, and was my "best Summit ever."  Among a ton of things, some highlights for me were the Birds of a Feather lunch, and building towers with the SSIS Dev team with post-it notes.  Of course, it wasn't all play, or that's what they tried to tell me.  I had a chalk talk on debugging SSIS packages, and participated in a very fun Lightning Talk session with six other fabulous speakers, including the comedian of the SQL world, Rob FarleyKendal Van Dyke was also very gracious in letting a bunch of us "help him out" with his speaking and blogging session.  I hope we didn't derail him too much...
The chalk talk has a slide deck with a few suggestions on it - we only got to investigate a very few - 40 minutes is SHORT.  Take from it what you will, it's not your typical deck.  Also very atypical was my lightning talk deck - 23 slides, seven words... I guess you had to be there.
Coming Up Next...
This Tuesday, November 23rd, the BI Virtual Chapter of PASS is hosting my session on Loading Dimension Tables with SSIS.  Very similar to what I did at SQL Connections, but focusing only on dimension table loading.  Brush up on slowly changing dimensions before you attend - I'm presuming you've experienced the joy and pain of loading them prior.  I'll walk through alternatives to the SCD Wizard, giving you a good feel of what you should try to get by its limitations.  (UPDATE 2011-11-30: the recording is now available on their website.)
Just around the corner from that - SQL Saturday #65 in Vancouver on February 26th!  I don't have any sessions submitted yet - but I'll get to that.  It's looking like a very special SQL Saturday - Scott Stauffer brilliantly picked the weekend before the MVP Summit in Redmond.  Just a couple weeks after announcing the date, MVPs Bill Pearson, John Welch, Denny Cherry, Gail Shaw, and Aaron Bertrand have submitted multiple sessions each, as well as MCM Robert Davis from Microsoft.  I expect that there will be many more MVPs and Microsoft folks presenting and attending, not to mention the fantastic speakers that don't (yet) have those letters to tag after their names (but ought to).
See you on a monitor, or in-person soon!

Friday, November 19, 2010

Branding - The Reason You See Me

Jen McCown of MidnightDBA fame decided to re-mix Adam Machanic's T-SQL Tuesday franchise into a (hopefully) semi-regularly-recurring set of blog posts on non-SQL topics.  For the first such round, she's picked "branding" and invited the SQL online community to blog about it.
In my case, the only reason I started out "talking" online was to build a brand.  That realization came from how effortless it was for me to find my current job, almost six years ago.

How are your droid-finding skills?
 Getting a Job Is Easy
I should say "was easy" - REALLY easy.  I say that it was easy - but it's probably more accurate to say I was lucky.  Insanely lucky.  I'm sure you'll think so too.
I'd had a bad week at my old job, filled with challenges that I just didn't sign up for.  I realized it wasn't likely to get better, so I finally decided I was going to seriously look for options.  Not just looking at job postings.  Not just uploading a resume on Monster, or Dice.  We all do that from time to time.  "Seriously" meant I started contacting people in (at that time) my mostly off-line network, and letting them know I was looking.
It's Not What You Know, But Who You Know
I called a buddy from my time in university who is now running a very successful company that provides managed internet access. It was my second phone call in my "help me find a job" contact list.  I gave him a fifteen-second redux on what I'd done the past ten years, and the very first thing he said was: "You won't believe this - but a good friend called me an hour ago looking for someone that sounds just like you. Where can he get your resume?" Guess where I'm working now?  True story.
Always Be Prepared
After having my eyes opened with that experience, I started to wonder how lucky I was going to be next time.  Because there will - more likely than not - be a "next time."  Working for someone isn't like marriage - both parties have the option of moving on, just about any time they want to, and for just about any reason.  The last time, it was I that decided it was time to change after a ten year ride.  The next time, it may be me again - which would give me as much time as I needed to prepare for the change...  But it could just as likely be my employer deciding to outsource, reorganize, or change focus.
Think Different
With that in mind, I reviewed my resume, and decided that I didn't like it at all.  Why?  It looked (to me) like everyone else's.  I had education that everyone else had, qualifications (I think) that are easy to get, and experience that didn't sound that special.  On top of all that - it was just one piece of paper that was filled only with claims from an obviously biased source - and no evidence.  Any time I had reviewed job applicants, the purpose the resume served was to disqualify people - not to qualify them.  I always attempted to research their work, test their capabilities, and interview them - both to weed out "exaggerations" on the resume, and to try to discover intangibles that just don't show on paper.
Touching Intangibles
Those claims and intangibles were probably the thing that bothered me most.  How could a prospective employer possibly believe it when I say I'm "focused" or "produce quality product"... if they had no evidence of that?  How could they even truly believe my own hand-picked references?  Wouldn't I pick the best ones, and leave out any possible bad apples?  Everyone does.  I wanted something that was less prone to hyperbole, and more verifiable.
Bread Crumbs - But More Permanent
For all those reasons, I decided that I needed to leave a more permanent and evidentiary record of my work, so I started to blog.  I put more effort into forum posts.  I started to publish projects on CodePlex.  I started to present to the local user group.  Those three things started to lay down an independently verifiable resume for me.  If or when the time comes that I (or my employer) decide I should move on, prospective future employers will have more to work with.
15 Minutes Of Fame?
For me, this isn't about being a known "hub of expertise" on the internet, or to develop a cult of personality.  Don't get me wrong - I love it whenever someone steps up and says hello at a user group or conference.  And a big part of developing my brand is showing that it's not all spin.  Being able to point to forum threads, comments on my blog, and discussions on my open-source projects - from you - give me credibility.  (Thank you.)
It's not even about "standing out from the pack."  I think it would be great if everyone published some sort of professional record that was easy to find.  I don't think it would crowd me out - just like I don't think standing in the long shadows of SQL MCM Brent Ozar or SSIS guru Jamie Thomson does.  Neither of them want, can apply to (or accept) all the jobs I'd (hopefully) be considered for.
My branding is about giving any possible future employer the ability to easily see historical evidence of technical capability, professional growth, and an insight into how I solve problems - and that I do, in fact, solve some.  When or if the time comes, I'll try to do the same kind of checking on their organization, resulting in both of us being comfortable entering into a working relationship.
In SQL Terms: Disaster Recovery
Although this is an UnSQL Friday post, I'll put this in terms most of you will relate to.  Building my brand is my DR plan.  Ten years ago, my DR plan was like everyone else's - written on paper, with no evidence it would work.  By pure luck, it exceeded its design.  Now I'm much closer to having a robust DR plan that includes evidence about the work I do.  But like all DR plans, this kind of branding needs constant testing and feedback to make sure it's ready.  The best part is that all of you are a part of it - and that lets me sleep soundly at night.

Monday, November 15, 2010

UPS Customer Service Failure


This is Brown
 You can pull out all the procedure manuals you like, UPS employees and supervisors - it doesn't change the fact that your delivery service failed me, and your customer service was designed to be impotent in fixing that failure.  I'm not holding my breath that UPS will change its policies, nor am I deluded enough to think that UPS is the only shipping company that has inane procedures.  I can only hope this serves as a warning to companies and individuals - including myself - that doing things "by the book" does not mean you're doing them in a way that you and your customer come away happy about.
So I have a little story to tell about how "not to do" customer service.  Let me know if you think I'm overreacting... I'm curious.
The Message
A few weeks ago, Joey DeVilla of Microsoft went out of his way to send me a Windows Phone 7 test device for my WP7 app.  After a week of testing, I attempted to send the phone back via UPS on November 2nd.  Late last Friday (November 12th), I received a voice mail message while I was at the PASS Summit telling me they couldn't deliver the package, and it was very urgent that I call them as soon as possible. The message said they couldn't find the address I was trying to ship the package to.
At this point, I assumed they were calling me to verify that the address they were shipping to was the same as where I'd requested the package to be sent.  I also assumed the worst - that they did have the address I gave them... but I'd given them bad information.  In either case, I was preparing to ensure I gave them the correct address so that they could deliver the package.
At this point, I was slightly annoyed that it had taken them 8 business days to report to me that they were unable to do a job I'd asked them to do overnight.  I was completely willing to take responsibility for giving them bad information, but couldn't understand why it would take them so long to contact me about it.
The Phone Call
I called back Monday morning (November 15th) to find out exactly what the problem was - and the UPS store clerk told me they couldn't locate the address I'd shipped it to. Fair enough.  Like I said, maybe I got it wrong.  I asked for a customer service number so I could try to clear this up.
I called UPS directly, and explained that there seemed to be an address problem.  I rehashed the information with the service rep for a second time, but this time she explained their delivery failure process.  It was one I was familiar with, being on the receiving end of deliveries, and missing the delivery driver.  The driver would try to deliver the package three times over three business days, leaving post-it notes on the door with time windows of when they'd try delivering the next day.  If that failed, UPS would send a postcard through the mail to inform the recipient a package was waiting for them.
But I still didn't understand why it took UPS eight (business) days to get back to me about a bad address since that procedure didn't seem to apply to my situation, so I asked her when they had first tried to deliver the package.  She said November 3rd - the day after I'd shipped it.  It seems to me that if I'd given UPS a bad address, the driver would have realized it then, and started some corrective action.  At this point, I began to understand that the service rep and I were having a failure to communicate.
Apparently they did take corrective action... but that action was according to their (generic) "delivery failure procedure".  The service rep explained to me (again) that since the driver couldn't deliver the package on the first attempt, they would have left notes, and tried two more times.  Since those attempts failed, they mailed a postcard to the address instructing the recipient to call them for pickup instructions.
At this point, the call went from bad to worse.  When UPS didn't receive any call within five business days, the package was rerouted through their system (and is now on its way) back to me.  So not only did they take two weeks to not deliver the package - they contacted me too late to help them fix the problem.
The Failure To Think
I have to say I have absolutely no problem with attempting redelivery and sending a postcard - but only when the cause of the delivery failure is that the intended recipient was not at the destination to accept the package.  In that situation, attempting to "get the attention" of the intended recipient is the goal, and those post-its and postcards are valid tools.
But this is your procedure when you can't find the address?  Seriously?  Put the package back on the delivery truck for two more trips, because somehow, the destination will suddenly magically appear on the street?  (Or because you're assuming that the driver you trust to make deliveries was incompetent enough not to locate it the first day?)  When banging your head against that wall doesn't yeild results, you send a postcard to an invalid address, because Canada Post will somehow be able to locate an address that doesn't exist better than your driver can?  Seriously?
Since I still had the service rep on the phone, I started off by validating to her that their "failure to deliver" procedure was just fine for an unreachable recipient, but then said it didn't make much sense for an unreachable address.  In an attempt to jumpstart the thinking process, I asked her to clarify the procedure (again).  When she reached the point about attempting to deliver the package for three business days, I interrupted (politely) and asked where the driver would place the post-it note to inform the recipient they were unable to deliver the package.  The service rep paused briefly, apparently handling my "illegal argument" by ignoring my question, and pressed onward to explain that they then sent a postcard.  I interrupted again and asked them how would Canada Post find the address if they couldn't?  No answer.
I asked for a supervisor and we basically did the same dance.  I refused to accept that their procedure was valid for the situation, and they refused to accept that the situation didn't benefit from their bulletproof procedure.  I specifically asked what I could do to help them deliver the package and was told that I couldn't do anything (now) except for pay them to ship the package again, once I'd received it.
The Failure to Serve the Customer
Despite reaching a higher authority, I didn't reach a higher cognitive capability at the call center.  I'm almost convinced it simply doesn't exist at UPS.  The "procedure" crutch was used several times.
If the horse isn't quite dead yet, here's the "procedure" they applied:
ProblemCourse of Action
Driver "fails to deliver the package" the first timeLeave a post-it, and attempt another delivery the next business day
Driver "fails to deliver the package" the second timeLeave a post-it, and attempt another delivery the next business day
Driver "fails to deliver the package" the third timeSend a postcard to the destination address
No response from the recipient within five business daysReturn the package to sender, inform sender delivery failed
Again, I have no problem with that process if "failure" is (specifically) "there was nobody there to deliver the package to."
But isn't the situation a little different if they couldn't find the address?  Why waste everyone's time (and gas) trying to find something that (apparently) doesn't exist two more times?  Why try sending a postcard to an address that you've just confirmed doesn't existOn top of all that rediculousness, UPS calls me after they've started the process of sending the package back to me.  It's already on the plane back to me.
Is This Rocket Science?
ProblemCourse of Action
Driver determines the given address doesn't existContact the shipper to confirm delivery address
Unlike people that "don't make it" in Query Optimization, those that "don't make it" in the package delivery business don't fall back to building rockets.  Seems like they fall quite a few rungs down and go to work for UPS.
I won't be using UPS (by choice) any more.  (At least until FedEx or Purolator screws up worse, I suppose - I'm a realist.)  On top of UPS' failure to deliver my package, they failed to service their customer properly.
The result is that they can gleefully check off all the little "customer service" boxes they want to... but in the end:
  1. They shipped a package twice across the continent... after only being paid to do it once.
  2. They wasted several trips for the delivery driver trying to drop a package off... to a non-existent address.
  3. They wasted call center time leaving me a voice mail message telling me there was a problem with my package... that I could do absolutely nothing about.
  4. They wasted 30 minutes of call-center time explaining a procedure... that didn't apply to the situation.
Bottom line - UPS lost money on this transaction.  Do you agree with my conclusion that they needlessly lost a customer too?
UPDATE 2010-11-29: I just checked what happened to the package I resent using Canada Post - and lo and behold... it's delivered.
I received the package back from UPS on the 18th, and sent it back out again via Canada Post on the 22nd.  Canada Post didn't update their tracking information to show me when it left their local depot, so I stopped watching - but they show the package was delivered on the 25th - in three days time.
I gave them exactly the same address as I did to UPS.  This only serves to validate my opinion that some part of UPS is (or multiple parts are) incompetent - and they should be avoided.