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…’

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.

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:

They have no idea how to manage software development activities, so forcing developers to specify everything in advance relieves their anxiety that they will have to actually manage things as they go along. Instead, they can just follow “The Plan.”

They have no idea how to manage software development to a deadline, so forcing developers to estimate every activity in advance—no matter how far the activity is away—relieves their anxiety that they will have to ever explain whether a project is on target for release or not. Instead, they can simply parrot how much of “The Plan” seems to be complete and whether actual times for activities are ahead or behind estimates.

They have no idea how to manage stake holder expectations and priorities, so forcing stake holders to specify all of their requirements in advance relives their anxiety that they will have to engage stake holders in a continuous and open dialogue over the life of the project.

The road to senior management in their organization is paved with process documentation, not successful projects.

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.

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...

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.

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.