Costco: An internal promotion trumps an MBA any day of the week

I noticed this as well, but it took a blog post in The Washington Monthly to crystallize it in my mind.

The Washington Monthly – Political Animal – The secret of Costco’s success revealed! (hint: no MBAs need apply)

… Costco does not hire business school graduates—thanks to another idiosyncrasy meant to preserve its distinct company culture. It cultivates employees who work the floor in its warehouses and sponsors them through graduate school. Seventy percent of its warehouse managers started at the company by pushing carts and ringing cash registers.

Those sentences speak volumes. They tell you that Costco is a company that values its own hard-won experience over trendy B-school subjects like management theory and Econ 101 abstractions. They’ve found a formula that works and they’re not going to mess with it. I’ve long found the typical B-school curriculum to be problematic. On the one hand, you have management “theory,” which frequently is not well-supported by rigorous research, and might be characterized as more theological than anything else — Tom Frank has often been insightful about the ideological function served by this kind of business literature.

Then, on the other hand, you have B-school economics. One of the great sins about economics as a university subject is that, particularly at the introductory and intermediate levels where people are most likely to study it, the econ that gets taught tends to be almost entirely theoretical, not empirical. Few economists understand how businesses work, because few of them have actually bothered to ask businesspeople how they make business decisions. Instead, they make assumptions. But even assumptions that seem highly plausible in theory can turn out to be wildly off-base in fact.

Getting back to Costco: the abstract theorizing that MBA students learn in microeconomics courses often has little relevance to practical business situations. The simplified textbook models teach the lesson that policies like unions and the minimum wage are inefficient and wrong — that message comes through loud and clear. Economics as it’s taught in most American colleges today more or less encourages poor labor practices.

Costco: Secrets of the cheapest, happiest company in the world

I occasionally read an article about deplorable call centre conditions, or most recently about how difficult work in Amazon’s fulfilment warehouse is. And I always think: Why not take a small hit to the company’s margins and ease things back towards being a workplace your employees don’t dread going to? (Offhand, I’m fortunate to be able to say that in my own field of software development, working conditions are usually somewhere between good to ridiculously luxurious.)

In an era of global competition it’s hard to justify not maximizing shareholder revenue, but with the below there is a spark of hope: Evidence that companies that treat their employees better also perform better.

Costco CEO Craig Jelinek Leads the Cheapest, Happiest Company in the World

Despite the sagging economy and challenges to the industry, Costco pays its hourly workers an average of $20.89 an hour, not including overtime (vs. the minimum wage of $7.25 an hour). By comparison, Walmart said its average wage for full-time employees in the U.S. is $12.67 an hour, according to a letter it sent in April to activist Ralph Nader. Eighty-eight percent of Costco employees have company-sponsored health insurance; Walmart says that “more than half” of its do. Costco workers with coverage pay premiums that amount to less than 10 percent of the overall cost of their plans. It treats its employees well in the belief that a happier work environment will result in a more profitable company. “I just think people need to make a living wage with health benefits,” says Jelinek. “It also puts more money back into the economy and creates a healthier country. It’s really that simple.”

Jelinek earned $650,000 in 2012, plus a $200,000 bonus and stock options worth about $4 million, based on the company’s performance. That’s more than Sinegal, who made $325,000 a year. By contrast, Walmart CEO Mike Duke’s 2012 base salary was $1.3 million; he was also awarded a $4.4 million cash bonus and $13.6 million in stock grants.

Costco has no public-relations staff. Jelinek conducts an interview with a journalist alone, an anomaly at major corporations, and afterward Costco Chief Financial Officer Richard Galanti calls to inquire whether the boss inadvertently said anything negative. Sinegal returns a reporter’s phone call on a Saturday morning, leaving his cell number.

Costco’s constitutional thrift makes its generous pay and health packages all the more remarkable. About 4 percent of its workers, including those who give away samples and sell mobile phones, are part-time and employed by contractors, though Costco says it seeks to ensure they have above-industry-average pay. And while Walmart, Amazon, and others actively avoid unionization, Costco, while not exactly embracing it, is comfortable that the International Brotherhood of Teamsters represents about 15 percent of its U.S. employees. “They are philosophically much better than anyone else I have worked with,” says Rome Aloise, a Teamsters vice president.

Most retailers “see their employees as a cost to be minimized and typically end up underinvesting in them,” says Zeynep Ton, an adjunct associate professor of operations management at the MIT Sloan School of Management. She thinks that ends up creating operational problems that shoppers are all too familiar with: surly employees in stores engulfed in chaos, an environment that makes ordering online look a lot better. One solution to surly cashiers is to get rid of them completely. Walmart said that this year it would add 10,000 self-service checkout systems (though it did not say whether these systems would displace workers). Costco has also experimented with self-service checkouts, but Jelinek says he’s now removing them because employees do the work more efficiently. “They are great for low-volume warehouses, but we don’t want to be in the low-volume warehouse business,” he says.

Many conscientious companies such as Costco are performing well financially. Over the last few years, Nordstrom (JWN), the Container Store, Sephora, REI, and Whole Foods Market (WFM), all of which are known for treating employees well, have outpaced rivals. “This is the lesson Costco teaches,” says Doug Stephens, founder of the consulting firm Retail Prophet and author of the forthcoming The Retail Revival. “You don’t have to be Nordstrom selling $1,200 suits in order to pay people a living wage. That is what Walmart has lost sight of. A lot of people working at Walmart go home and live below the poverty line. You expect that person to come in and develop a rapport with customers who may be spending more than that person is making in a week? You expect them to be civil and happy about that?”

Fast 404s for missing images in WordPress

If you’re looking to replace WordPress’s long load time for a 404 error page for at least the missing images on your website, consider adding the following to the .htaccess file that sits in the root of your WordPress installation airblown inflatables canada:

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png)$
RewriteRule .* /wp-content/themes/your-theme/images/placeholder.png [L]

In practice, this looks something like:

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_URI} \.(gif|jpg|jpeg|png)$ 
RewriteRule .* /wp-content/themes/your-theme/images/placeholder.png [L]

RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>

# END WordPress

Working with Nginx? No problem, here’s the equivalent commands that go into your site configuration file:

location ~* (jpg|jpeg|gif|png) {
	expires 30d;
	access_log off;

	error_page 404 /wp-content/themes/your-theme/images/placeholder.png;
}

Selectively taking commits out of a GitHub pull request

Once in a while it’s necessary to get picky and only accept one or more commits from a bundle sent over in a GitHub pull request – or maybe someone’s been working on a fork of a repository of yours and you want to pull a change or two in. The git command cherry-pick is there for this purpose.

To start, you’ll need to run git fetch on the forked repository:

git fetch [email protected]:hakimel/Fokus.git

Next, take the hash of the commit you want to retrieve files for and run the cherry-pick command on it:

git cherry-pick 00988a520bda3e365c74033a44a96941d77be86f

That should do it! Check your git log to see the commit pulled into your repository.

Source: StackOverflow – Pull in changes from a Github fork

Using XDebug with Aptana Studio 3, nginx and PHP-FPM

Instructions on how to step through your PHP code with XDebug seem to be an unholy mess online. After an hour of tinkering in Ubuntu 12.04 to get it working, I’ve come up with the ten steps listed below to get the combination of Ubuntu, Nginx, PHP-FPM, XDebug and Aptana Studio 3 working together. Here’s hoping this helps someone else out there.

1. Install php5-xdebug:

sudo apt-get install php5-xdebug

2. Edit the xdebug configuration file /etc/php5/fpm/conf.d/xdebug.ini , most notably changing the default port to 9001 as PHP-FPM itself runs a daemon on port 9000. We also change the log file location to /var/log/xdebug (remember to create this folder):

xdebug.profiler_output_dir=/var/log/xdebug
xdebug.profiler_enable_trigger=1
xdebug.profiler_enable=0

xdebug.remote_enable=true
xdebug.remote_host=127.0.0.1
xdebug.remote_port=9001
xdebug.remote_handler=dbgp
xdebug.remote_autostart=0

3. Restart PHP-FPM:

sudo /etc/init.d/php5-fpm reload

4. In Aptana Studio 3, we’ll start by ensuring that Aptana recognizes XDebug as being installed as a debugger on the system. Go to Window > Preferences > Aptana Studio > Editors > PHP > Debug. Ensure that under Installed Debuggers, XDebug is listed on port 9001.

5. While still in the Preferences window, go to General > Web Browser and change the option to Use external web browser. Leave Default system web browser marked.

6. Close the Preferences window and go to Run > Debug Configurations… Right-click PHP Web Page and select New.

7. Name your configuration whatever you’d like (localhost if you’re lacking ideas). Ensure that Server Debugger is set to XDebug. Create a new PHP Server by clicking the + button, and ensure that you set the Base URL and Document Root properly for the website you are trying to debug.

8. Almost done! We now need to Xdebug Helper in the Google Chrome browser. After it’s installed, enable it on your locally viewed web page by clicking the bug icon until it changes colour to green (if you hover over it, it will inform you that it has debugging enabled).

9. Let’s switch back to Aptana Studio 3. Under Window > Perspective, switch to Debug. We left the “Break on first line…” option under Window > Preferences > Aptana Studio > Editors > PHP > Debug, but you can just as easily double-click in the margin beside any line in your PHP script to add a breakpoint at that location. Navigate to a page that will execute that PHP script and watch as execution halts and your debugger steps in, giving you the ability to inspect variables or control execution at will.

10. Inspect the value of any variable quickly by adding the Expressions window while in Debug mode at Window > Show View > Expressions. Pop in a variable such as $page and press Enter to see the value immediately.

Need to switch back to regular coding view? Under Window > Perspective, switch to Web. Bear in mind that even outside of the Debug perspective your debugger will be active – click the bug icon in Chrome until it is grey to disable activating XDebug.

Mark Lynas repudiates the anti-genetically modified crops movement

This is a blockbuster speech – in the link, there is a video of Mark Lynas making a speech to the Oxford Farming Conference confessing that he’s been quite wrong on opposing genetically modified crops for reasons of not much more than being obstinately anti-science/progress.

It’s an incredible eye opener, and peaks the hopes that environmentalists who deride others for being anti-science when it comes to climate change indulge in some humility and take a good look at if they themselves are being anti-science in another sphere (anti-GMO).

Mark Lynas – Lecture to Oxford Farming Conference, 3 January 2013

I want to start with some apologies. For the record, here and upfront, I apologise for having spent several years ripping up GM crops. I am also sorry that I helped to start the anti-GM movement back in the mid 1990s, and that I thereby assisted in demonising an important technological option which can be used to benefit the environment.

As an environmentalist, and someone who believes that everyone in this world has a right to a healthy and nutritious diet of their choosing, I could not have chosen a more counter-productive path. I now regret it completely.

So I guess you’ll be wondering – what happened between 1995 and now that made me not only change my mind but come here and admit it? Well, the answer is fairly simple: I discovered science, and in the process I hope I became a better environmentalist.

When I first heard about Monsanto’s GM soya I knew exactly what I thought. Here was a big American corporation with a nasty track record, putting something new and experimental into our food without telling us. Mixing genes between species seemed to be about as unnatural as you can get – here was humankind acquiring too much technological power; something was bound to go horribly wrong. These genes would spread like some kind of living pollution. It was the stuff of nightmares.

These fears spread like wildfire, and within a few years GM was essentially banned in Europe, and our worries were exported by NGOs like Greenpeace and Friends of the Earth to Africa, India and the rest of Asia, where GM is still banned today. This was the most successful campaign I have ever been involved with.

This was also explicitly an anti-science movement. We employed a lot of imagery about scientists in their labs cackling demonically as they tinkered with the very building blocks of life. Hence the Frankenstein food tag – this absolutely was about deep-seated fears of scientific powers being used secretly for unnatural ends. What we didn’t realise at the time was that the real Frankenstein’s monster was not GM technology, but our reaction against it.

Read More

Profiling a MySQL query to optimize performance

The Query Profiler in MySQL isn’t something I’ve spent much time in recently – with more sites making use of popular CMSes like WordPress, query performance isn’t something that’s top of mind anymore (Automatic seems to do a good job in this area). But it’s still a useful tool when you’ve already picked the low hanging fruit off of the optimization tree.

Profiling is enabled on an individual basis for each MySQL session; when the session ends, all profiling information is lost.

To check to see if profiling is currently enabled for your session, do:

mysql> SELECT @@profiling;
+-------------+
| @@profiling |
+-------------+
|           0 |
+-------------+
1 row in set (0.00 sec)

Next, enable profiling for all queries:

mysql> SET profiling = 1;
Query OK, 0 rows affected (0.00 sec)

And run the query you’d like to see a breakdown for:

mysql> SELECT COUNT(*) FROM wp_posts;
+----------+
| count(*) |
+----------+
|   238121 |
+----------+
1 row in set (18.80 sec)

Get the numeric ID of the profile we want to see:

mysql> SHOW PROFILES;
+----------+----------+---------------------------------------+
| Query_ID | Duration | Query                                 |
+----------+----------+---------------------------------------+
|        1 | 18.80000 | SELECT COUNT(*) FROM wp_posts;        |
+----------+----------+---------------------------------------+
1 row in set (0.00 sec)

Finally, actually see the query profiled:

mysql> SHOW PROFILE FOR QUERY 1;
+--------------------------------+-----------+
| Status                         | Duration  |
+--------------------------------+-----------+
| starting                       |  0.000027 |
| checking query cache for query |  0.000041 |
| checking permissions           |  0.000017 |
| Opening tables                 |  0.000018 |
| System lock                    |  0.000008 |
| Table lock                     |  0.000037 |
| init                           |  0.000014 |
| optimizing                     |  0.000008 |
| statistics                     |  0.000016 |
| preparing                      |  0.000013 |
| executing                      |  0.000008 |
| Sending data                   | 18.802902 |
| end                            |  0.000015 |
| end                            |  0.000008 |
| query end                      |  0.000006 |
| storing result in query cache  |  0.000453 |
| freeing items                  |  0.000009 |
| closing tables                 |  0.000007 |
| logging slow query             |  0.000007 |
| logging slow query             |  0.000031 |
| cleaning up                    |  0.000005 |
+--------------------------------+-----------+
21 rows in set (0.00 sec)

To get even more in depth, check out the optional type values for the SHOW PROFILE command, or use SHOW PROFILE ALL FOR QUERY 1; and view everything MySQL’s got at once.

The definition of “startup”

A startup is an organization formed to search for a repeatable and scalable business model.

Steve Blank: What’s A Startup? First Principles, January 25, 2010

Why the liberal arts are important: Learning to reflect

I hold a degree in computer science. I’ve been employed for 10+ years as a software developer. When the occasional news story comes out about liberal arts majors having trouble finding employment in today’s economy, there’s a part of me that feels smug. It says, “Yeah. All right. Go us. We made the right choice. We were rational about the job market.” And it is indeed very easy to indulge that part of myself by lapping up news that confirms my life choices.

But I’m also something of a contrarian. (Actually what’s probably more accurate is I hate to be wrong, so I feel compelled to understand the pro-arts side of the argument to prepare for it.) What is the appeal of the liberal arts in 2012? Are they necessary? In the end, I think my final position is that the liberal arts are important, and if a comparison must be done, they’re likely to  be more important than computer science or engineering. My reasoning: Engineering may allow us to live longer and better, but liberal arts let us find understanding in others and ourselves.

As evidence, I offer portions of a piece from 1997 by the late Earl Shorris. It’s about his attempt to teach a group of impoverished Americans about the humanities. It’s really quite profound and, I think, one of the only true ways to permanently solve poverty in the world. Enjoy the read.

Harper’s Magazine – On the Uses of a Liberal Education, Part II: As a weapon in the hands of the restless poor

We had never met before. The conversation around us focused on the abuse of women. [Viniece Walker]’s eyes were perfectly opaque—hostile, prison eyes. Her mouth was set in the beginning of a sneer.

“You got to begin with the children,” she said, speaking rapidly, clipping out the street sounds as they came into her speech.

She paused long enough to let the change of direction take effect, then resumed the rapid, rhythmless speech. “You’ve got to teach the moral life of downtown to the children. And the way you do that, Earl, is by taking them downtown to plays, museums, concerts, lectures, where they can learn the moral life of downtown.”

I smiled at her, misunderstanding, thinking I was indulging her. “And then they won’t be poor anymore?”

She read every nuance of my response, and answered angrily, “And they won’t be poor no more.”

“What you mean is—”

“What I mean is what I said—a moral alternative to the street.”

She didn’t speak of jobs or money. In that, she was like the others I had listened to. No one had spoken of jobs or money. But how could the “moral life of downtown” lead anyone out from the surround of force? How could a museum push poverty away? Who can dress in statues or eat the past? And what of the political life? Had Niecie skipped a step or failed to take a step? The way out of poverty was politics, not the “moral life of downtown.”

But to enter the public world, to practice the political life, the poor had first to learn to reflect. That was what Niecie meant by the “moral life of downtown.” She did not make the error of divorcing ethics from politics. Niecie had simply said, in a kind of shorthand, that no one could step out of the panicking circumstance of poverty directly into the public world.

Although she did not say so, I was sure that when she spoke of the “moral life of downtown” she meant something that had happened to her. With no job and no money, a prisoner, she had undergone a radical transformation. She had followed the same path that led to the invention of politics in ancient Greece. She had learned to reflect.

In further conversation it became clear that when she spoke of “the moral life of downtown” she meant the humanities, the study of human constructs and concerns, which has been the source of reflection for the secular world since the Greeks first stepped back from nature to experience wonder at what they beheld.

If the political life was the way out of poverty, the humanities provided an entrance to reflection and the political life. The poor did not need anyone to release them; an escape route existed. But to open this avenue to reflection and politics a major distinction between the preparation for the life of the rich and the life of the poor had to be eliminated.

Read More

5 questions great job candidates ask

There are lots of articles like these on the Web that have terrible questions in them and exist solely as SEO bait. As a rare exception, I thought the first three of these five questions were terrific, and something I personally experienced during my interviews when I was looking for jobs in Pensacola.

Inc.com – 5 Questions Great Job Candidates Ask

What do you expect me to accomplish in the first 60 to 90 days?

Great candidates want to hit the ground running. They don’t want to spend weeks or months “getting to know the organization.”

They want to make a difference–right away.

What are the common attributes of your top performers?

Great candidates also want to be great long-term employees. Every organization is different, and so are the key qualities of top performers in those organizations.

Maybe your top performers work longer hours. Maybe creativity is more important than methodology. Maybe constantly landing new customers in new markets is more important than building long-term customer relationships. Maybe it’s a willingness to spend the same amount of time educating an entry-level customer as helping an enthusiast who wants high-end equipment.

Great candidates want to know, because 1) they want to know if they fit, and 2) if they do fit, they want to be a top performer.

What are a few things that really drive results for the company?

Employees are investments, and every employee should generate a positive return on his or her salary. (Otherwise why are they on the payroll?)

In every job some activities make a bigger difference than others. You need your HR folks to fill job openings… but what you really want is for HR to find the right candidates because that results in higher retention rates, lower training costs, and better overall productivity.

You need your service techs to perform effective repairs… but what you really want is for those techs to identify ways to solve problems and provide other benefits–in short, to generate additional sales.

Great candidates want to know what truly makes a difference. They know helping the company succeed means they succeed as well.

What do employees do in their spare time?

Happy employees 1) like what they do and 2) like the people they work with.

Granted this is a tough question to answer. Unless the company is really small, all any interviewer can do is speak in generalities.

What’s important is that the candidate wants to make sure they have a reasonable chance of fitting in–because great job candidates usually have options.

How do you plan to deal with…?

Every business faces a major challenge: technological changes, competitors entering the market, shifting economic trends… there’s rarely a Warren Buffett moat protecting a small business.

So while a candidate may see your company as a stepping-stone, they still hope for growth and advancement… and if they do eventually leave, they want it to be on their terms and not because you were forced out of business.

Say I’m interviewing for a position at your bike shop. Another shop is opening less than a mile away: How do you plan to deal with the new competitor? Or you run a poultry farm (a huge industry in my area): What will you do to deal with rising feed costs?

A great candidate doesn’t just want to know what you think; they want to know what you plan to do–and how they will fit into those plans.