Customer Experience Managers At Best Buy – A Bad Experience Turns Good

So we’re browsing around Best Buy yesterday and I see this 17″ Gateway machine that is on sale for $699. Jonna has needed a new machine for a while. The one she is using is one I bought her for her birthday about 4-5 years ago. Its a little slow, the screen is small, and the CDROM drive is on the blink, making it hard to rip music from CD to her MP3 player.

As we’re looking around, a young kid named Curt asks us if he can help us. We tell him we are just browsing, and he follows up with “if you need anything, my name is Curt, just yell if I can help you”. We nod in the affirmative and continue browsing.

There was quite a bit of debating back and forth. I was adamant that Jonna needed her own machine, that was just hers and not shared with the kids, and that actually was a little more up to date. She didn’t want to drop the money – even knowing it was on sale (a clincher for Jonna when things are in the low 2 figure ranges) wasn’t working.

So we left. We walked around the strip mall in McHenry, and I continued to persist that I wanted to get her this laptop. Finally, she relented and we walked back into the store.

I looked for Curt. He told us to grab him if we needed something. I like to grab the first person that talks to us when I have made a buying decision, so that they get credit or whatever for the sale. After about 5 minutes, I spot him across the store. I walk over to him and ask “So, do you want to sell me a laptop?”

His response floored me. It was, literally, “I don’t know, do I?”

Now, I’ve read a lot of sales books. I think the answer to this question should be “YES”. But, I guess he’s a kid and he doesn’t know any better, so I answer the question for him in the affirmative – “I think you do”.

We take him over to the laptop and I say “I want this one”. I’m one of those guys who doesn’t like a lot of cruft in the sales process. If I know what I want, you should give it to me with as little hassle as possible. Let me spend the money I’ve decided to spend, without a long conversation.

He starts to ask us what we are using it for. “School?” “No.” “Do you need MS Office”? “No, I need a laptop”. I think you can imagine how long this went on.

He disappears for a while after asking me to fill out a form. This is the first time I’ve ever been asked to fill out a form to buy a computer, but I comply. He’s gone for like, 10 minutes. He comes back and tells us that the store is out of these sale laptops, but there are 5 in Vernon Hills and other various locations. I ask him if they can reserve the inventory in the other stores, he says they can’t. Period. I guess we’re not buying a laptop. We begin to walk out.

I’m shocked that no one wants to work with me and take money that I have decided (and am adamant) to spend.

On our way out I see a guy with a name tag with the title “Customer Experience Manager”. I’ve read about these guys. Best Buy is putting them in all their stores to ensure a good customer experience. I haven’t had one so far, but I decide I’m going to give them another chance.

We go through a much abbreviated discussion with him. We find out the sale ends today, so he goes and gets next weeks flyer to see if there is anything comparable. I mention the inventory in the other stores and ask him if they can call and reserve one of them. He answers in the negative. It doesn’t work like that. We ask if they can have the inventory transferred to this store from the other one. They can, but it takes about 8 days, because the machine would go back to their distribution center and THEN to the McHenry store. I’m ready to just call it quits.

Then this guy brings up an idea. If you order it online for in store pickup, they will pull the inventory and have it waiting for you at the front when you get there. What a great idea! He takes us to their web site on one of their store kiosks, fills the cart for us, and allows me to log in and place the order. We now have the machine ordered (and the inventory reserved) and can go to Vernon Hills to pick it up.

This guy went out of his way to help us and present us with options. He didn’t try to sell us a bajillion options, he was just dealing with our problem. He was also able to think completely outside the box and came up with an idea that would get his customer what they wanted, and keep the money I wanted to spend in his store rather than have me walk out with it. More than that, I felt really good AND HELPED when I walked out to start our trek out to Vernon Hills.

Unfortunately, I don’t have this guys name – yet. I’ll be calling Best Buy today and finding this out, so that I can send a letter commending him for going the extra mile for us. I was very impressed. Not only did he solve my problem, but he did it with much less hassle than Curt did when I walked out with nothing.

So, Customer Experience Manager Guy, great job. Jonna now has a workable laptop and my wallet is a little lighter – and I feel good about my experience at your store.

Agile / Lean or Common Sense and Permission To Change?

As anyone who reads this blog regularly knows, I’ve spent a lot of time over the last 3-4 years studying agile methodologies and most recently lean concepts and principles. I have most recently been reading a couple of books by Ricardo Semler, who runs his company in a completely democratic way – doing away with all top down authoritarian management principles and allowing the employees to make decisions on dress, salaries, where they work, when they work, and most importantly, how they work.

I remember when I had first read the book Agile Software Development with SCRUM by Ken Schwaber and Mike Beedle and I had sent an email to my manager with a link to the book and the small sentence fragment “common sense codified”. We began experimenting with Scrum within my group, but it was very difficult to get other groups on the same page. We wound up with a lot of sprints that ended when things left development and entered the “normal corporate process” to finish things up and get them to production. We also had a lot of conversations around whether what we were doing was “standard process”.

As I started reading books on TPS and Lean, the same thing occurred. It struck me how most of the things that are characterized by “lean” are just common sense principles explained in such a way that they sound like a “process” that manager types can “buy into”. But really, they work because they make sense – and people have the permission to standardize and then change their work rather than having things written down and subsequently treating these processes like they are set in stone. You can’t change them unless you go through an agonizing approval process up the management chain.

Over the years, I’ve read and listened to many podcasts talking about the same things going on in other companies. People struggle to be able to change the way they work because they have to get “management buy-in” to take action. So much wasted effort just to try something new.

Interestingly, once the “buy-in” occurs, over and over again people try to “implement Scrum” or “do XP”, mostly by the book, and do not throw out things that do not work for the group. For some reason, we all think we have to be a part of some “methodology” in order to be effective.

One of the most fascinating things about Semlers company is the explicit trust and ability to control ones own destiny that the employees of Semco seem to receive. I ran across a particular section of the book where he was talking about the process improvements that “just started happening” due to this culture change and I found some interesting similarities to lean that I thought would be interesting to highlight. He starts off with:

The factory committee spun off groups that studied the plants products and how the workers made them, looking for ways to save time and make improvements. These teams weren’t created by Semco; they formed spontaneously, as the bracing winds of democracy swept through the food service equipment unit, and often met after hours or during lunch.

Interesting, employees actually wanted to do a better job and self organized because they could.

He goes on, talking about some of the changes:

One group restructured the dishwasher assembly line, changing it from a sequential assembly process to a batch concept in which dishwashers are assembled in twos and threes by teams of workers that do many different tasks and spend the time between batches prefabricating the components they will soon need. They also came up with a system in which all the parts for the dishwashers were stocked in open racks in the middle of the factory. Metal tags, green on one side and red on the other, hung on each rack, and the workers would flip the tags when they saw it was time to reorder, ensuring a steady supply. This was a big improvement on the traditional assembly line, in which dehumanized workers have no role in decisions regarding the production process.

What we see here are people electing to move from an assembly line to, basically, work cells implementing small batches of inventory with workers that are skilled in multiple areas. They even set up a “Kanban” system, though I doubt they knew it, where they had visual cues of when parts needed to be supplied.

Note that not once in these paragraphs does he mention the word “lean”. There was no implementation of “lean”, no “lean” or “continuous improvement” initiatives. This just seemed to make sense to the people doing the work and since they were allowed to do it – and knew enough about the overall process rather than just their small piece of the overall process (i.e. they were multi-skilled), they were able to see the obvious and execute it without all of the red tape – and get great results for the company.

He goes on:

The strength of these groups was their diversity. They included factory workers, engineers, office clerks, sales reps and executives. They didn’t have a formal head; whoever showed the greatest capacity to lead got the job, calling meetings and moderating discussions. In more than one group, a shop-floor worker guided professionals. Instead of a seniority system, or boxes on an organizational chart that guaranteed power, the groups were held together by a natural system of collegial respect.

Again, you hear this a lot in TPS. People are trained from the bottom up in the company and have skills in multiple areas. While there are “leads” that are responsible for a product line, everyone has the ability to lead when they are the most skilled for the job at hand.

The only vague reference to lean that Semler makes in this passage is the following paragraph, where he draws similarities and differences between what Semco did and TPS (though Toyota is not explicitly stated):

There are similarities between this system and the Japanese approach to organizing manufacturing operations, but also important differences. In our groups, younger members didn’t automatically submit to their elders. Moreover, once a team decided an issue, it stayed decided. There was no approval needed to make a change. Then again, there were no special rewards for new ideas. It was a spontaneous process; people participated only if they wanted to.

As I read this it really got me thinking. In most of the process agile / lean related books that I’ve read there seem to be a few common themes:

  • Trust people to do the right thing for the company
  • Give them freedom and authority to work the way they want to
  • Push decisions down the chain as far as possible
  • Work in small batches and change things that aren’t working
  • Allow those who are capable of leading to lead, no matter what their title or position is
  • Put quality checks in place – whether it be test-driven development, or quality checks at each step in an assembly
  • Fix problems at the core and stop the line as quickly as possible – in development this would be TDD and automated builds. Once a problem is found, find the root cause and put a test or quality check in place to ensure it doesn’t happen again
  • and finally, Trust people to do the right thing for the company

One more principle that I would add would be “tolerate mistakes”. Many of the issues that I’ve come across with other groups is that if they make a mistake they feel they will be punished. I’ve had great success with my team in articulating that I know mistakes will be made, but I want them to be made once, a lesson learned, and things put in place (usually automated) to ensure they won’t happen again. I’ve found that if people know it is expected that mistakes will be made, and everything doesn’t have to be perfect, they are more receptive to trying something new.

But I digress.

What Semler’s story shows me is that if people are given the freedom to work the way that is most effective, they will. More than that, if you invest in them with trust, they will want to do these things as their commitment to the company will obviously go up based on how they feel they are treated.

Semler uses a key phrase throughout his books that is repeated over and over. “Treat people like adults”. Semco, Toyota, Amazon and Google seem to do a really good job at this, as I’m sure most high functioning companies do. Read this article called The Google Way: Give Engineers Room and you will see the same concepts outlined in the excerpts on Semco that I have just written about. It seems to be a common theme.

So my real question. Is methodology and process really the answer, or is it deeper than that? Is it the way we treat employees that cause inefficiencies? If it is, if we took this base principal of trust and actually implemented it, would our employees come to the same conclusions as companies like Semco, Toyota and Google?

I think they would, because the principles and processes implemented by these companies are really just common sense without all of the complications of “process” and authoritarian management. They encourage workers to work outside their “box” and learn what they need to learn to be more effective. I would guess these employees feel valued, because they can constantly improve themselves rather than just “be the guy that puts the screw in the hole”. When you are allowed to improve yourself, your commitment rises to those who “allow” you to do so. What you wind up with is a highly efficient company that can change on a dime because people are allowed (and encouraged) to change and improve.

Most interestingly, the processes wind up looking “agile” or “lean”, without all the cruft of trying to follow a cook book.

Am I officially becoming a hippie, or does this line of thinking make sense? Let me know if I should go join a commune.

LDAP Enabling The Eventum Defect Tracking System

Due to a recent reorg, I have the opportunity to replace our defect tracking system, which has quite a bit of really wasteful process baked into the tool, with a new one. I’ve been looking at defect tracking software for a while, and chose Eventum, an open source project by MySQL AB for a number of reasons, some of them including:

  • Its open source
  • Its written in PHP, so I don’t have to worry about messing with fastcgi, mod_perl, or mod_python
  • It is extensible (you can add custom fields, etc)
  • It uses MySQL, rather than SQLLite or something like that, so we can integrate it into the rest of our home-grown build software
  • It supports email integration. While we won’t be using this right away, we’ll be implementing it in a later iteration
  • Its simple to use, with a very simple interface, once you get use to it. Everything is essentially on one screen.
  • It has time tracking, along with some basic reporting built in

One thing it doesn’t have built in is LDAP authentication. I wrote a previous article about all of the work we’ve done to integrate both our home grown applications and a few open source applications in with our LDAP store, to minimize the management of multiple passwords across systems, so this was very important to me. I started with many, many Google searches to see if someone else has done this, only to hit one dead end after another. At first I was being lazy and decided to just forget about it. One system not tied to the LDAP tree isn’t that big of a deal, but then my perfectionism set in. Why would I settle for that when LDAP authentication should be really easy to integrate into an Open Source package?

So I decided to spend a few hours to get it working. Since I had no success finding an implementation, I figured I could do my part and post what I have. There are a couple of caveats that I want to throw out before we actually get to the code though:

  1. It isn’t done “right”. This is all extra work for me, so I got enough done so that it would work. The right way to do this would to refactor the auth stuff out into a workflow like hierarchy that could be pluggable (see this post in the eventum mailing list). I’ll get to that someday, but right now this solution hacks the auth module to get authentication working.
  2. LDAP Settings are not configurable through the interface. I don’t have time for that, so a set of defines at the top of the LDAPAuthenticator class contains all of the configuration information for the LDAP server. Bummer, but like I said, I’m on a schedule.
  3. Users still have to be added to the Eventum database – they are not added automagically when they log in. I want control of who is in the system, so I’ve elected to leave this functionality out and just do authentication.

With these three caveats in place though, given my experience looking around for this stuff, at least this code works and will be able to be used by others. Its a starting point – which is more than is out there today. Anyone is free to use this and take the time to do it right. With that said, I’d love to receive updates if someone actually takes this up. For now though, this works for me.

So, now to the code. I wrote a small PHP class called “class.LDAPAuthenticator.php. There are two functions in it. Because Eventum uses email address as the login, we need a way to get the full user DN from the email address. This is what the email_to_dn function does. Given an email address, it returns the full distinguished name of the user. This is called by the main class function, ldap_authenticate. The ldap_authenticate function takes the same arguments as the class.auth.php function isCorrectPassword, which consist of the email address and the password. It binds to the LDAP authentication tree using the full DN of the user and the password supplied. If authentication is successful, it returns TRUE, otherwise it returns FALSE, just like the isCorrectPassword function used to validate the password from the Eventum database.

The code looks like this:

# Change these values to access another LDAP server.
define("LDAP_PORT", 636);
define("LDAP_HOST", 'ldaps://ldapserver.example.com:' . LDAP_PORT);
define("LDAP_BIND_DN", 'PUT THE BIND DN HERE');
define("LDAP_BIND_PASSWORD", 'PUT THE BIND PASSWORD HERE');
define("LDAP_SEARCH_DN", "PATH OF THE TREE TO SEARCH FOR USERS");

class LDAPAuthenticator {

# Look up a users full distinguised name from
# their email address, since Eventum uses
# email address as the login name.
function email_to_dn($emailAddress) {
$returnDN = "";

$server = ldap_connect(LDAP_HOST);

if ($server == FALSE) {
return($returnDN);
}

ldap_set_option($server, LDAP_OPT_PROTOCOL_VERSION, 3) ;

$ldapbind = ldap_bind($server, LDAP_BIND_DN, LDAP_BIND_PASSWORD);

# verify binding
if ($ldapbind) {
# find the user based on the entered email address.
$result = ldap_search($server,
LDAP_SEARCH_DN,
"(&(mail=$emailAddress))",
array("dn"));

$info = ldap_get_entries($server, $result);

# if we actually got a value back, return the users DN
if ($info["count"] > 0) {
$returnDN = $info[0]["dn"];
}

ldap_unbind($server);
}

return($returnDN);
}

# Authenticate with the LDAP server. Function returns true
# if authentication was successful, false otherwise.
function ldap_authenticate($email, $password) {
$returnValue = FALSE;
$userDN = LDAPAuthenticator::email_to_dn($email);

if ($userDN == "") {
return($returnValue);
}

$server = ldap_connect(LDAP_HOST);

if ($server == FALSE) {
return($returnValue);
}

ldap_set_option($server, LDAP_OPT_PROTOCOL_VERSION, 3) ;

$ldapbind = ldap_bind($server,
LDAPAuthenticator::email_to_dn($email),
$password);

if ($ldapbind) {
$returnValue = TRUE;
ldap_unbind($server);
}

return($returnValue);
}
}

Save this file as class.LDAPAuthenticator.php and put it in your Eventum includes directory. Modify the define statements at the top to contain your LDAP server information.

Now, to use it. Go to your Eventum includes directory and add the following line to the top of the class.auth.php file:

require_once(APP_INC_PATH . "class.LDAPAuthenticator.php");

I have this at the end of all of the rest of the require statements.

Now, replace the isCorrectPassword function in class.auth.php with the following function:

 /**
* Checks whether the provided password match against the email
* address provided.
*
* @access public
* @param string $email The email address to check for
* @param string $password The password of the user to check for
* @return boolean
*/
function isCorrectPassword($email, $password) {
return(LDAPAuthenticator::ldap_authenticate($email, $password));
}

… and VOILA. You can now authenticate off of your LDAP tree.

Now, I know it isn’t pretty, hacking the code directly – but it works, and its more of a starting point than I can find anywhere else. I hope its useful to others. Again, if anyone takes this further and does it “right”, I would be really happy to get a copy of the modifications.

One more thing – don’t forget to require SSL on the URL to your Eventum installation by using the SSLRequireSSL directive in your Apache server. You don’t want these passwords floating around in the clear across the network.

Download the Eventum LDAP hack here and happy authenticating.

Current Reading – Maverick by Ricardo Semler

While I still have a few books in the queue mainly focused around TPS, I started reading Maverick: The Success Story Behind the World’s Most Unusual Workplace, the prequel to The Seven-Day Weekend: Changing the Way Work Works.

Not too far into it yet, but riveted again. Pretty amazing story. Highly recommend both books.

I’m really curious about a lot of the ideas in these books, and how they would work in a traditional company. I know I’ve made little adjustments in this direction even before reading the books, but now I’m really curious as to how extreme you can go. Ricardo seems to have had great success going more extreme than most. I admire his idealism and his trust in people.

The Seven Day Weekend by Ricardo Semler

It’s been a long time since I’ve read a book on business that has kept me captivated through the whole thing, but Ricardo Semler’s The Seven-Day Weekend: Changing the Way Work Works certainly did.

Semler is the CEO of SemCo SA, a company in Brazil with a pretty crazy management model by conventional standards. A complete democracy. People choose where and when they will work. There are no permanent desks, no dress codes, and employees select their own salaries and bonus structures. Most ideas for new business for the company comes directly from its employees. The bottom line, the company is run on the base assumption that their people can be trusted to (and actually are motivated to) do what is needed to keep the business running and growing.

This is, oddly, the complete opposite of the normal viewpoint seen in corporations today that employees are not trustworthy, must be monitored, must be in the office during a certain timeframe and dress a certain way to ensure that they are “behaving professionally” and “productive”.

Semlers philosophy may seem weird to some, but it also seems to work, as according to Semler the company has grown from $4M a year when he took over the company from his father in 1982 to, as of 2003, an annual revenue of $212M. Reading the book, its hard to figure out what SemCo actually does, but the model in which it is run is so intriguing that by the end of the book you don’t really care.

Some of the most interesting assumptions, behaviors, and programs that I found while reading this book that SemCo pioneers:

  • People are inherently good and trustworthy – Sure, there will be bad apples, but if you create a culture in which the social norm is trust, the “bad people” will be pushed out by their peers and/or subordinates if they violate the social norms. An interesting idea.
  • Management positions are not guaranteed – All managers are evaluated openly by their teams. Think of it as a Digg.com for managers. Repeated low scoring usually results in the manager either leaving or being dismissed. I found this to be a very intriguing example of giving the teams the power rather than the management structure.
  • Employees set their own salaries – SemCo’s books are completely open to their employees so that they can see the impacts of their salaries on the companies bottom line. Each knows what the other makes, and requests for salaries that are out of the whack are run the risk of being rejected by colleagues. Its an interesting concept to allow social norms to keep behavior in check, rather than the traditional approach of hiding information from employees. Given all of the information, employees are able to make decisions based on the impact to the company.
  • Retire A Little Program – The company did a study on work productivity and found that the peak of physical capability is in ones twenties and thirties. Financial independence, on the other hand, usually occurs between age fifty and sixty, while “idle-time” peaks after seventy. The conclusion was reached that when you are most fit to realize your dreams, you do not have the money or leisure time for them, and when you have the time, and money on hand, you no longer have the physical energy to realize them. Semco allows their employees to buy early retirement time, from the company, allowing you to do the things you are passionate about while you can still do them. Another twist on the program is that for all of this time you take off, you receive a voucher for time to work, so that when you are older, you can come back and work at a proportional pay level. Brilliant.

Its extremely hard to characterize the thoughts contained in this book in a review. They are so different, and so people oriented, that the best thing you can say is once you read this book you will more than likely begin thinking about how to relocate to Brazil to be a part of it. The book is really well written and Semler has a great conversational style to his writing. It isn’t your typical business book, which would be expected being written from someone who is not the typical CEO.

Do yourself a favor and pick this book up. It will completely change the way you look at your employees and your company.

Related Links:

  • The Semco Way – section of their web site detailing their management and company philosophy

Camping Season Over – Relaxation Unit Close Up.

While camping season technically goes until next weekend, due to Homecoming activities with the kids and the like we had to close up the relaxation unit this last weekend. This has been our first year “camping” and I’ve gotten some interesting learnings from it:

  • Social networking is a lot more fun when the community congregates in person on a regular basis. We met a lot of really nice people this summer and have made friends that we would not have made otherwise.
  • I never realized how much of my weekends were spent working until I stopped doing it to go to the camper. This was probably the first summer in my career that I did not have a computer with me during the weekend. I have to say it was nice, even though it was a grim reminder of how much I used to get done on the weekends due to lack of time during the week. Scheduled time with Jonna and the kids was definitely something I don’t want to miss out on anymore though.
  • I’m lucky in that I have inlaws that I really like hanging around with. Half the fun of the summer was being able to spend quality time with them.
  • I’m more prone to do stuff around the house if the scale is smaller. Totally didn’t mind mowing the lawn at the camper this year.
  • I suck at building fires. If I was the Tom Hanks in Castaway I would have died the first week.
  • No band sucks that bad if you have enough beer around.
  • The Beer Hammer is probably the best invention since the wheel.

Evo Experience on 9/21 – Quick Post and A Few Pictures

Jonna and I attended the Steve Vai Evo Experience at the House of Blues last night. Jonna played photographer and took about 300 or so pictures. We are in a rush this morning, but I have gotten a few up. Throughout the week I will continue to sort through and upload pictures.

Real quick review, too many people at the EVO experience this time. Last time it was about 25 and was really nice. This time it seemed there were close to 40. However, given all that, watching the soundcheck and rehearsal was completely fascinating. This guy gets better every time I see him and the new band is absolutely incredible. Probably the best Vai show I’ve ever seen. Definitely check them out if they come to a town near you.

I hate the House of Blues as a venue, however. We basically stood for 7 or so hours. We were completely dead by the end of the show. All and all though, the music and the band were second to none. Best show I’ve seen so far – ever.

More pictures will be added to the set as we have time to sort through them, and I plan on putting together a more extensive post as I have time.