[A picture of private offices at Fog Creek Software] Alert! This ancient trifle retrieved from the Joel on Software archive is well-past its expiration date. Proceed with care.

Joel on Software


by Joel Spolsky
Monday, May 06, 2002

Why Religious Wars are Stupid

Yesterday I made what I thought was a lightweight claim about how the "choice" of languages in .NET is not as much of a choice as you might think.

Some people assume that this means I am against .NET, or I'm "clueless," because I don't understand the productivity benefit of managed code.

OK, they didn't read what I wrote less than a month ago praising the productivity of .NET.

Of course, when I wrote that, some people assumed it meant I was for .NET, and dug up an old article from two years ago in which I complained that an early white paper on .NET didn't say anything. (It was true, the white paper didn't, and .NET didn't ship for 2 years). So I'm a hypocrite because I used to be against .NET and now I'm for .NET.

Anything as complicated as .NET is bound to have many positive aspects and many negative aspects. Duh. The stupid thing about religious wars is when one person says, "you don't get as much language choice as you think" and the other person says, "you are clueless, because you're 4-6x more productive!" What a waste of time.

The World Is Complicated. Get Used To It.

Some people can't. Look at how angry Michel gets because I point out that (a) features sell products and (b) choices reduce usability. So? The whole point of design is that you have different goals that you need to resolve. Want to design a trashcan for street corner? You have to make it light so it can be emptied easily. You have to make it heavy so it won't blow away. You have to make it big so it will hold lots of trash and the trash won't blow out. You have to make it small so it won't take up too much space. You have to make it easy to throw trash in so people don't miss and litter. You have to make it hard for trash to get out so when it's windy the street doesn't litter itself. Design is all about making hard choices and, hopefully, sometimes, hitting upon elegant solutions that solve conflicting goals. But when you can't solve conflicting goals, you have to be smart enough to decide which goal to solve, and not just be a lazy punter and pretend that adding a checkbox to the options dialog will solve it.


Don't use Verisign. They suck, and there's no reason to use them. I've been using register.com for domain names (although namebargain.com is cheaper and run by register.com with the same excellent interface) and Commercelock, also run by register.com, for digital certificates. Commercelock is actually provided by Baltimore Technologies which charges a heck of a lot more for exactly the same thing.

Have you been wondering about Distributed Version Control? It has been a huge productivity boon for us, so I wrote Hg Init, a Mercurial tutorial—check it out!

Want to know more?

You’re reading Joel on Software, stuffed with years and years of completely raving mad articles about software development, managing software teams, designing user interfaces, running successful software companies, and rubber duckies.

About the author.

I’m Joel Spolsky, co-founder of Trello and Fog Creek Software, and CEO of Stack Exchange. More about me.

© 2000-2014 Joel Spolsky