Happy Pacifists

Business rhetoric is rife with the language of war — there’s constant talk of conquering markets and dominating the competition. These tropes indicate a dangerous way of thinking that can have real consequences, intended or not, on human behavior. In this episode of the Rework podcast, two professors share their research on the impact of violent rhetoric on business ethics, and a member of Basecamp’s Support team talks about communication techniques that get us out of the mentality that everything is a zero-sum game.

Programming languages aren’t a zero sum game


Stop me if you’ve heard these before when people get to talking about programming languages…

“These features are copied this from <superior language>.”

“Nothing new here. <superior language> has done this for years.”

“This language has nothing on <superior language>, but nobody realizes it.”

<superior language> does the same thing, but better.”

I bring it up because I’ve been reading and writing a lot about Kotlin lately. And invariably someone posts a snarky comment like one those above, carrying with it a clear innuendo: my preferred programming language is better than yours.

And every time I see those I leave with the same reaction. Who gives a shit?

Now I’m not talking about people who are having constructive conversations or even just poking fun. Hell, I may have been known to take a jab at Java every once in a while. 👊

I’m talking about a subset of programmers who treat languages like it’s a zero sum game — that for one language to succeed, another (or all others) must fail. It’s like they’re on some strange crusade to prove how they were first and best at everything.

But why does it matter if a language takes the best ideas from another language and implements them? Why does it matter if another language had some feature for years and your favorite just got it? What the hell does “better” even mean when everyone has different preferences and styles?

To me programming languages are simply about doing good work, building success, and if you’re lucky, finding happiness. Many people have achieved those with Ruby, Swift, Javascript, Java, C#, Python, Go, and dozens of other languages.

I’ve been lucky enough to find that with Kotlin. It makes my work genuinely enjoyable. I find it fun and exciting to work with, and that makes me happy. But I’m no programming linguist — for all I know, every other programming language is technically “superior” to Kotlin.

But who cares? There can be many different languages that make many different people happy in many different ways. If I’m happy and having fun with a language, why do others feel the need to shit on it? Are we so insecure and unhappy that we need to tear down another language to make our favorite look better? It’s a negative, petty stance to take that has a disheartening effect on others.

Just because a language doesn’t do something brand new conceptually doesn’t mean it shouldn’t exist. If a language takes ideas and inspiration from another language, that’s a wonderful compliment to the earlier architects. And if your favorite language is “better” than mine, believe it or not, I’m super happy for you — it’s awesome that you’ve found something great!

Programming can be hard. Finding joy in work can be hard. If people can achieve success and find joy in any programming language, that’s a wonderful thing. Why not celebrate every language that can help people achieve great things (especially their own happiness!) instead of making everything a showdown?

If you really believe in your favorite programming language, focus on its merits, not the demerits of others. Avoid the temptation to make snarky comments or tear down another language. Instead, keep it positive. Spread the word on why your language is awesome. Compare and contrast fairly. Have strong opinions and challenge each other respectfully.

Trust me, there’s plenty of room for all our favorite programming languages — even Java. 😜


If this article was helpful to you, please do hit the 💚 button below. Thanks!

We’re hard at work making the Basecamp 3 Android app better every day (in Kotlin, of course). Please check it out!

What are you competing with?

You may think you’re competing with competitors, but you’re often competing with something, not someone.

One dollar bid, now two, now two, will ya’ give me two? Two dollar bid, now three, now three, will ya’ give me three?

I was recently talking to a guy who’s in the business of helping car dealers move used cars off their lot.

Turns out, over ten million of the cars dealers take in on trade aren’t actually resold directly to customers. They’re often sold wholesale at auction.

Sometimes a car sits on a lot because it’s in the wrong place. Not in the wrong place on the lot, but in the wrong region of the country. A Subaru may sell better in Colorado than in Georgia, for example. Or a Honda Accord may do better in Milwaukee than San Diego.

So they send them to auction. And different dealers/buyers from all over the country bid, buy, and redistribute cars.

When you think about it, the entire used car sales market is highly inefficient. Where a car gets traded in is totally random. It has nothing to do with demand in that specific location. A customer wants a different car that’s local, so they trade in their old one, and, to make the sale, the dealer takes it in even if there isn’t that much demand for it.

So these guys started a company to offer dealers an alternative to sending cars to auction: they’d sidestep the auctions, buy them direct off the lot, and do the trading and redistribution themselves. Sure bets rather than roll-the-dice auction prices, and a whole lot less hassle. Bottom line: They can save dealers time, headache, and money. Seems like a win.

But they’re running into resistance.

The main resistance comes from the sales managers at the dealerships. And in most cases, the sales managers would be the ones making the decision.

Turns out, saving time, headache, and money isn’t a top priority of the sales managers. You’d think it would be — especially since they always seem to hardball you when selling you a car. Seems like every dollars counts to them, right? Well, sometimes.

What’s more important to a sales manager than a dollar? A day away from the office. A break from the monotony of selling cars off the lot. A road trip to the auction. Hanging with their other sales manager buddies in a hotel somewhere far from home. A little vacay, even if it’s a working vacation.

The company that’s trying to sell the anti-auction product and service isn’t competing with the auction, they are competing with the auction experience. And that experience involves all the stuff outside the auction. Camaraderie with their buddies, time away from home, the minor adventure of hitting the road and rolling the dice.

Sales managers aren’t really incentivized to make the dealership the most possible money. They care about doing well enough to show progress and keep their jobs, but they care a lot more about the “perks” that come with getting out of the office for a day. And anything that challenges that is met with significant resistance.

After all, the sales manager doesn’t see the savings in their pocket — those dollars end up with the owner or shareholders. But the hang with their buddies? That’s for them. That’s their gain. And to hell with someone if they’re going to take that away from them.

So while this company may compete with other companies offering similar non-auction services, they’re really competing with something else entirely.


If you dig this sort of lens on competition, be sure to read Clayton Christensen’s latest book on Jobs to Be Done called Competing Against Luck. The story above is not in the book, but the ideas above are represented in serial detail in the book. Highly recommended read.