Wolf Bytes

On annoyances, interests, and general thoughts that may or may not be of interest to the general public.

Tuesday, January 26, 2016

A Thank You Letter to Chevrolet Buick GMC Cadillac of Murfreesboro

I am writing today to thank you for the excellent service I received as my car was being repaired between 12/18/2015 and 1/25/2016.

I brought my 2008 Saturn Vue Green Line in on Thursday 12/17/2015 so it would be ready for the appointment the next morning.  My power steering had quit working and I was told by my regular mechanic that they couldn't fix it and I would have to take it to a dealer.  I chose CBGC of Murfreesboro to do the work.  This turned out to be one of the best decisions I have ever made.

Very quickly on 12/18/2015 I was called and told that the power steering module was in need of replacement.  Your representative informed me that even though my car was just a 2008 model that the replacement part was no longer available anywhere.  Not to worry, though, he had located one at a dealership in Kentucky and, on my word, would have it sent out that afternoon via overnight delivery and that it should be ready early the next week.  An estimate of "about $800" was given.  This was slightly disappointing as I had been hoping the repair would take much longer, but I decided that I would be able to deal with the inconvenience of such a timely repair.

Little did I know that my wildest dreams would soon come true.

On Tuesday the 22nd, I texted the number I was given and inquired about my car.  I received a very terse answer (my favorite kind) that simply said "STILL WAITING ON THE PART."  I was especially grateful for the use of all capital letters as I hadn't been yelled at yet that day and was beginning to feel a little too sure of myself.

Despite the attempt to put me back in my place, over the next few days I recovered and was certainly feeling much too self-important.  Gratifyingly, CBGC of Murfreesboro had just the prescription that was called for in this instance.

Since it was the holiday season, I expected to hear something on the 23rd before everyone left for break, but I didn't.  I decided that I would just let it go (like Frozen) and wait until after Christmas to try to find anything out.  So, I texted on the 26th to get an updated status.  I didn't really expect a response and was rewarded when CBGC would not be drawn into participating in my attempt to build myself up.  Instead they remained silent in a move that I can only describe as brilliantly refreshing for a Customer Service department.  I was certain that this was the coup-de-grace of putting me in my well-deserved place, but I am now ashamed that I didn't give enough credit to the psychological brilliance of CBGC.

Not only did CBGC continue my therapy the next week, they upped the dosage!  I called three or four times that week trying to get a status update.  I spoke to three or four different people who all gave me the same answer.    If anything, I have to give CBGC credit for consistent training techniques.  All four (one of whom claimed to be the service center manager) told me that my service manager was on vacation and they didn't know the status of my car.  Each said that if I would give them an hour, they would find out the status and would then call me back.  At this point, suffering from the effects of Stockholm Syndrome from information about my car being held hostage for so long, I began to identify with my captor and subsequently believed that I would receive a call back each time I was told that.  However, the cunning cleverness of CBGC would not be matched.  No calls were received that week and our family had to borrow a friend's car (since CBGC, in another stellar move, didn't offer a loaner car) to make our New Year's plans out of town.

On Saturday the 30th, CBGC decided to trickle a tiny bit of information to keep the therapy going.  That day I was told that the part wasn't there because GM hadn't released it yet.  I, of course, asked what that meant, but there wasn't really an explanation.  I began to suspect that the FBI or perhaps the CIA were involved in this epic level of information hiding.  I wondered what my car had been involved in.  Human trafficking?  Smuggling?  Piracy?  Espionage?  I began to understand the CBGC was performing a public, nay, a national service by keeping this information only available to those with the highest security clearance.  I felt happy that those in a high governmental position needed access to a car with broken power steering and that I could fulfill my nation's call by providing mine for the cause.

On Monday the 4th, my patriotism was rewarded.  I was granted enough clearance for my service manager (fresh off a two week vacation) to call me and tell me that the part that he originally ordered had been earmarked for someone else, so he wasn't able to get it.  Furthermore, I was graced with the information that the factory was making a shiny brand new part just for me but that I still wasn't of a high enough security clearance to know when that part would be done.  Someone would call me and let me know when it was finished.  I was assured however, that when the part was finished and shipped to the warehouse (location withheld due to insufficient security clearance) that it could then be sent via overnight delivery to the dealership who would complete the repair posthaste.

This, of course, built me up and made it once again necessary for CBGC to take therapeutic action.  During the next two weeks I received almost daily calls to tell me that the part still wasn't ready and that there was no ETA on when it would be ready.  Well done, CBGC!  The old carrot and stick routine.  Well done.  At this point, after mentioning that this was becoming quite the inconvenience I was offered a loaner car which I refused because we still had the borrowed car.  Besides, I didn't want to put CBGC out any at all.  My service manager promised a discount to "make it right."

Being the industrious fellow I am, I looked the part up myself to see if it was as scarce as I had been led to believe.  And found it here: http://stores.revolutionparts.com/gmpartsdirect.com/saturn/vue/25883854/2008-year/green-line-trim/2-4l-l4-electric-gas-engine/electrical-cat/electrical-components-scat and at a 36% savings.  I also noticed that the same part is used in the 2008 and 2009 Chevrolet Equinox and in the 2007 - 2009 Pontiac Torrent.  Could it be that this web site is lying?  Hmmmmm.  My faith in CBGC was almost shaken, but in another timely move, I was told on the 14th that the part had been released, was at the warehouse, and would be shipped out to the dealership.  Taking to heart what I had been told previously (that the shipment from the warehouse to the dealership would be overnight), I excitedly expected my car to be repaired early the next week.

But, either overnight doesn't mean what it once did or CBGC decided my therapy wasn't quite complete.  On Friday the 15th I was told that the part had shipped but would take "several days" to get to them.  I was extremely pleased to learn that when my boss wants something by tomorrow (overnight) I can now wait a week to fulfill that request as I didn't hear anything the entire next week.  On Friday the 22nd I texted and asked for a status update.  But, I would have to endure my curiosity through the weekend because no response was made.

Alas, on Monday the 26th CBGC decided to end my therapy, but not without a some more parting lessons.  That morning I received a text that said "your part is hear [sic] and i will have your car ready by noon."  I texted back that they should inform me when it was ready.  I received a response of "Ok" and then nothing.  At 2:00 I texted and asked if it was ready.  The response was "by 3:30 it will be ready."  This was lesson #1: Time doesn't matter.  Noon.  3:30.  What's the difference?

I made arrangements to leave work at 3:30 to go pick up the car.  After a wait of five and a half weeks for this repair, I expected there to be apologies, perhaps a chat with a manager, and a substantial discount as promised.  What I got was lesson #2: a begrudging 10% should be good enough for anyone.  No talk with a manager.  No apology.  The total (with the discounts) still came out to be more than $800 (exactly the price of the original estimate).  But, by this time I was fully engulfed in my Stockholm Syndrome and had come to realize that I deserved the abuse.

As I drove away, I noticed one more lesson.  Before I took the car in, there were a few worn places on the steering wheel but it was intact.  Now, there is a nice large rip that will serve to remind me daily of what great customer service means.  I'm pretty sure they gave me the rip for free.  Just another excellent service they provide at CBGC of Murfreesboro.

I will definitely be using CBGC again as I expect I will soon, once again, think more highly of myself than I should.

If you would like a refreshing new take on customer service or if you are just a masochist looking to be taken down a notch I would heartily recommend CBGC of Murfreesboro.  If, however, you are one of those whiny people who like to be informed and updated of the service you are paying for, you will want to steer clear of these folks.  They aren't for you.

I regret that I am only able to give one star.  I just can't allow my fake appreciation to reach as far as giving a fake 5 star review also.

Monday, August 22, 2005

Take Command

Occasionally, all developers have to write a command line tool. I've had the need to write several in my career, and the part that is always the worst, is parsing the command line. I can't stand that part. It seems like it should be easier.

But time and again, I wrote it because I didn't have the time to come up with a better way.

Well, now there is one.

I ran across this on my latest foray into command line tools. I started my search for code (as I always do) at SourceForge. Here is what I ran across:

http://sourceforge.net/projects/cmdlineparser

This dandy little tool makes command line parsing easy. All you have to do is write a class that has public properties (or for you Java folks out there, Accessors and Mutators) around private member variables. For instance:


class ApplicationSettings
{
private bool help = false;

public bool Help
{
get
{
return this.help;
}

set
{
this.help = value;
}
}
}

Then, you just attribute the property like this:

[CommandLineSwitch("help", "Show usage information", @"h", @"\?")]

Basically, this says that there should be a command line switch named "help" that has two aliases named "h" and "?". It's description is "Show usage information."

So far, so good. Then in your main program, you do this:

private ApplicationSettings Options = new ApplicationSettings();
CommandLineParser commandLineParser = new CommandLineParser(this.Options);
commandLineParser.Parse(System.Environment.GetCommandLineArgs());

This will populate the ApplicationSettings object with the switches that were entered into the command line. It even casts them correctly. You can then just check your object for the switches.

This tools can even output usage information automatically by doing this:

Console.Write(commandLineParser.Usage);

Pretty cool, huh?

This little gem cut my command line tool development at least in half and also removed the most boring part of the development.

Enjoy!!!


Friday, July 22, 2005

Various and Sundry

First of all, I'd like to comment on OOPLord's post about poetry. Just a couple of comments:

1. Thanks for the plug! I have always thought that good code is art form. It has to grow instead of built. More about that in a minute.
2. OOPLord is 100% correct. Listen to his wisdom, young ones.

In my opinion, great artists are born (not trained). They just have a knack for it. Great developers are also born. The way computers work just comes naturally to them. There are also levels of this skill in the development world. Some developers are born to be procedural developers. Some are born to be OOP developers. Some are born to be legacy Cobol developers (although, hopefully, this is being bred out of our world).

Unlike OOPLord, I have wanted to be a developer all my life (well, after I went through wanting to be an astronaut). It's pretty much all I have ever been good at. I have also had the pleasure to teach developers, and throughout all of this there has been one constant.

Code = Art!!! This can't be denied. I have watched poor developers and I have watched great developers and the two are drastically different. Let me explain:

I can't draw. OOPLord is an amazing artist with pencil and paper. Me? No. I can draw a few geometric shapes, various faces, simple stuff. But, don't expect me to turn out a comic book cover. Just not going to happen. When I watch a poor developer code, it reminds me of me trying to draw. Every line, either pencil or coded (like that? pretty cool little double meaning there, don't ya think?), is extracted painfully from the source. Every line is slightly wrong. Either it is in the wrong place or it doesn't contribute properly to the whole. It's apparent.

Now, I have watched master programmers write their code. It reminds me of watching a good artist paint or draw. Every line flows smoothly from the source. Each line contributes to the whole in such a way that the final product is more than the sum of its parts.

Also, as with most good artists, the final product grows as the creation process takes place. One again, I will explain:

Everyone is probably familiar with Bob Ross. He was the painter that used to have a show on PBS. Well, do you remember watching him? I was always amazed by the way that he painted all over the canvas. He didn't stick to any one place for too long. It seemed like there was no possible way he could use so many colors in such a willy-nilly fashion and produce a recognizable picture.

Well, good developers code this way. It's just natural. I used to have a co-worker that hated to watch me fix a problem or code new functionality because they couldn't stand to watch me open 15 programs and flip back and forth between them fixing things as the thoughts occurred to me. This is what I mean by a "grown" program. It's an organic process. Not a building process.

Many people laughed at the line in the movie Swordfish and at a similar line in the Matrix where characters claimed to "see the code in their head". But, that's mostly truth with good developers. Hang around them long enough, and one of them will at some point describe an epiphany they had while coding. When asked how they knew that, many of them will say they don't know. In these case, they "saw the code" in much the same way an artist often claims to see the picture in their head before they paint it or a song writer sometimes claims to have heard the song in their head before writing it.

Ok, so what does all of this mean? Well, I use it mostly as an admonition to management when asked for estimates. When asked how long some project will take, one of my favorite responses is "How long did it take da Vinci to paint the Mona Lisa?" The answer to both: It takes as long as it takes. You can't rush art.

If you don't let the art flow naturally, you end up with junk.