(This is a snapshot of my old weblog. New posts and selected republished essays can be found at raganwald.com.)

Monday, January 29, 2007
  The false dichotomy of choosing between your values and expediency

Wil Shipley:
Sometimes the most important thing in a fight is which side you are on, and not whether that side can win or not. Sometimes we just have to believe that, eventually, good will win out, and we have ask ourselves, “How will my children judge me when I tell them the story of this time?”

When my kids ask me about the first black man who really had a shot for the presidency, will I be forced to dissemble: ‘Well, see, kids, at the time, I didn’t think he could win, so it seemed expedient for me…’
Barack Strangelove (Or, How I Learned to Stop Worrying and Love Obama)

This blog is not about politics, and it is especially not about politics in another country. If you are one of my American readers, I expect you to decide for yourself what is the right thing to do with your vote, time, and money. That being said, I quoted Wil because I admire something that he is saying there, something that is on topic for this blog.

Let’s start by dispelling one ugly myth about voting “strategically” (as we say in Canada) or for someone “elect-able” (as you say in America): It isn’t about the outcome of the election.
Let’s start by dispelling one ugly myth about voting “strategically” (as we say in Canada) or for someone “elect-able” (as you say in America): It isn’t about the outcome of the election. That’s a little white lie people tell themselves so they can do something they are embarrassed about.

They are really thinking “Here’s this thing that I ought to want to do, vote for the best man who happens to be Black, but—truth be told—I don’t want to do it. But I absolutely don’t want to admit I don’t want to do it, so… I’ll make up this story about expediency and how important it is for a Donkey to beat an Elephant, so I’ll nominate this other guy to run.”

Did you read my “Don’t Feed the Trolls” post? One of the key lessons was that people often are embarrassed about their real motivations for making decisions, so they dress them up in objections that they think sound reasonable to other people. Like winning elections. I’m going to come back to this in a moment. You are a stack-based reasoner, right? So PUSH the idea that what people say about why they are doing things rarely matches why people are actually doing things.

Let’s talk about software development

Think about your software development values. A value is something you are willing to pay for. I can’t tell you what your values ought to be, but I can tell you one thing that absolutely isn’t a value. Making money is not a value.1 It’s an expediency.

The Wisdom of Crowds explains why crowds do a better job than experts predicting the future and evaluating worth. Of especial interest is the author's analysis of information cascades and the deep flaws introduced when organizations attempt to harness the wisdom of crowds in committees and meetings.
Money is almost always a “reasonable objection to tell other people.” For example, taking a job with a consulting firm because “it pays more money.” When what you really want is the prestige of going into workplaces and telling people what to do. Without bothering to actually, you know, have any real industry experience first.

Synonyms for “making money” include “getting a job,” “sales,” “raising capital,” amongst many others.

Now we have already talked about people that have a value but can’t admit it so they tell a little white lie about “expediency.” It’s not just politics. Do you think our choices in software development are any different? Of course not. We are the same whether we are choosing mates, voting, or picking a programming language. So the way we choose is the same.

But there’s an extra dimension we are not considering. If you read The Wisdom of Crowds, you remember this idea of an information cascade, where information about other people’s choices actually makes the crowd more stupid, not more wise.

Synonyms for expedient include “backwards compatible,” “maintainable,” “easy to understand,” “easy to sell to management,” and many others.
The problem is this: when we see a bunch of people doing something, it seems like a reasonable, sane option. So do you want your fourth Java Certification? It seems reasonable, a lot of people are getting their certification, it’s an expedient way of getting a job.

Or let’s pick something that isn’t such a blatant straw man. Do you want to put your business logic into stored procedures instead of in your model objects? Or perhaps do you want to build yet another rich MVC web application instead of something REST-ful or perhaps one that is continuation-based (like a Seaside application)?

Really? Or is it just expedient to do it that way (synonyms for expedient include “backwards compatible,” “maintainable,” “easy to understand,” “easy to sell to management,” and many others).

The problem with the little white lies

So you’re a reasonable person, and you see a lot of other reasonable people doing something because it’s expedient. You value something, but you are wondering whether you ought to compromise your value in favour of expediency. Life is tough some times, and you have to grow up. What’s wrong with that?

Here’s where we go to the stack: POP. Remember, lots of those other people aren’t actually doing the expedient thing when they say they’re being expedient! They’ve got a whole ‘nother motivation, but they lied about that motivation to you. It isn’t a real reason, they aren’t being honest with you (or themselves) about why they’re doing it, and you go along with it thinking it’s a real, valid option. But it’s smoke and mirrors for other people’s frailties (bless them, they are as human as we are).

For example, the argument that BDUF is the expedient way to manage a project? Look, I’ll level with you: if what you want is to demonstrate to your manager that you have everything under control, that you are in charge, then go for it. But expedient? Sorry, that’s bunk. It’s just a little white lie a lot of people have told you because they fear telling the truth, like:

Yes, we have to grow up and consider expediency. But we also have to grow up and learn that other people are human and don’t always tell us the whole truth about why they do what they do. Which means it is difficult to judge whether something is right for us based on what other people say is right for them.

Be careful when presented with a choice between what we value and what is “expedient.” This choice is almost always a false dichotomy: the “expedient” option is usually a little white lie someone else has told us because they think it will sound reasonable.
We need to be very, very, very careful when presented with a choice between what we value and what is “expedient.” This choice is almost always a false dichotomy: the “expedient” option is usually a little white lie someone else has told us because they think it will sound reasonable, even if it isn’t what they were thinking.

Therefore my exhortation to you is this: If you really, truly want to program in Lisp, or manage your next project with BDUF, or write unit tests before you write code, because these actions reflect your values, then go ahead. I honour you for your choice, even if it’s different than my choice. Rock on!

But… if you really, truly want something else but are doing the expedient thing because that’s where the money is, or the jobs are, or there’s safety from criticism, or any of a hundred or a thousand or ten thousand little white lies, stop it right now. You need to understand that the chattering voices you hear, the ones that sound so reasonable (“Zune sucks, but MSFT always wins in the end, so buying a Zune is expedient”) don’t even reflect what those other people really think or want.

They’re just little white lies other people are telling you because they don’t have the courage to tell you the truth about themselves.

  1. If you’re reading this blog and telling me that you—to pick just one example—choose to program .NET because “that’s where the money is,” you are misguided. Sorry, but the money is actually on Wall Street or Bay Street where even the poorest analyst makes more money with convexities and gammas than you or I will ever make with objects and tables.



Comments on “The false dichotomy of choosing between your values and expediency:
Great post! All too often I hear this "we would certainly like to, I personally love that, but it's just too expensive / it's just a niche market / we don't have the resources / it works too well as it is". Makes me wonder why they don't actually try to do the things they value.

You write "We are the same whether we are choosing mates, voting, or picking a programming language" - I believe in "The Tipping Point" an experiment was mentioned that gave some surprising results, showing that people's actions (and also their ascribed traits of character) depend strongly on the context/situation/frame. Meaning there is not necessarily any consistency or consequence in how one person behaves across time.

Or maybe I just missed your point - maybe you meant "We are the same" in the sense of "We are human and make up explanations" - that could actually be a human constant...
Axel, thanks for your comment.

Considering the length of the post, the point I intended was really simple: we make up explanations, and so do other people. That's not extremely wrong or bad.

But what is wrong is taking other people's explanations as evidence.

So (for example) if you think to yourself "Mac is only a niche market" because everyone says it's a niche market, you may be doing your values a grave disservice.

Maybe everyone else has some other reason that they don't want to articulate, but simply say "niche" because it sounds more acceptable??
Fry on programming.reddit.com:

There's of course no such thing as a 'little white lie'. Just look at the sentence for a second. Two counterarguments in one sentence! First, you claim the lie is 'white', that is 'for the best'. Right... And second, you claim that when people aren't buying into the 'white' thing that it was a little lie anyway. (Or the other way around; doesn't matter).

Call lies what they are: lies.

If you ever find yourself justifying a lie saying it's 'little', or 'white', you're deceiving yourself, pretty much in the way RWald described. Classifying lies in these terms is harmful. Don't do it.

Very interesting point!
Interesting, this kind of plays into the following:

One should never walk away from a conversation without asking the question to themselves "Why did that person say that now?"

If you can thoughtfully and respectfully ferret the answers to the why question out without coming to a dead end - then their may be some merit in what was said. If you can not come to an end in the why questions or are left at the end of a chain of questions and answers still wondering "why", then there may be a very good chance that what was said was one of those "Little white lies", or as fry points out flat out lies.

I will always go with my values - and when forced by someone else go with expediency, but when it becomes true that I am sacrificing more then 50% of my values for the expediency... Time to move on.
Oh crap. Another blast of truth that'll darken my "troublemaker" stamp when I forward it to the internal development mailing list.

Excellent insight.
"Money is almost always a “reasonable objection to tell other people.”"

Great post, but your explanation of money didn't make sense to me.
BDUF is such a straw man argument... personally I don't think the choices are tied to values, but more to personal styles...

<< Home
Reg Braithwaite

Recent Writing
Homoiconic Technical Writing / raganwald.posterous.com

What I‘ve Learned From Failure / Kestrels, Quirky Birds, and Hopeless Egocentricity

rewrite_rails / andand / unfold.rb / string_to_proc.rb / dsl_and_let.rb / comprehension.rb / lazy_lists.rb

IS-STRICTLY-EQUIVALENT-TO-A / Spaghetti-Western Coding / Golf is a good program spoiled / Programming conventions as signals / Not all functions should be object methods

The Not So Big Software Design / Writing programs for people to read / Why Why Functional Programming Matters Matters / But Y would I want to do a thing like this?

The single most important thing you must do to improve your programming career / The Naïve Approach to Hiring People / No Disrespect / Take control of your interview / Three tips for getting a job through a recruiter / My favourite interview question

Exception Handling in Software Development / What if powerful languages and idioms only work for small teams? / Bricks / Which theory fits the evidence? / Still failing, still learning / What I’ve learned from failure

The unary ampersand in Ruby / (1..100).inject(&:+) / The challenge of teaching yourself a programming language / The significance of the meta-circular interpreter / Block-Structured Javascript / Haskell, Ruby and Infinity / Closures and Higher-Order Functions

Why Apple is more expensive than Amazon / Why we are the biggest obstacles to our own growth / Is software the documentation of business process mistakes? / We have lost control of the apparatus / What I’ve Learned From Sales I, II, III

The Narcissism of Small Code Differences / Billy Martin’s Technique for Managing his Manager / Three stories about The Tao / Programming Language Stories / Why You Need a Degree to Work For BigCo

06/04 / 07/04 / 08/04 / 09/04 / 10/04 / 11/04 / 12/04 / 01/05 / 02/05 / 03/05 / 04/05 / 06/05 / 07/05 / 08/05 / 09/05 / 10/05 / 11/05 / 01/06 / 02/06 / 03/06 / 04/06 / 05/06 / 06/06 / 07/06 / 08/06 / 09/06 / 10/06 / 11/06 / 12/06 / 01/07 / 02/07 / 03/07 / 04/07 / 05/07 / 06/07 / 07/07 / 08/07 / 09/07 / 10/07 / 11/07 / 12/07 / 01/08 / 02/08 / 03/08 / 04/08 / 05/08 / 06/08 / 07/08 /