I <3 Steve McConnell*
Coding Horror
programming and human factors
by Jeff Atwood

Feb 26, 2008

Douchebaggery

David Heinemeier Hansson has a problem with Windows as a programming platform.

While I can certainly understand the reasons why some people go with Linux, I have run all but dry of understanding for programmers that willfully pick Windows as their platform of choice. I know a few that are still stuck in the rut for various reasons -- none of them desire.

I would have a hard time imagining hiring a programmer who was still on Windows for 37signals. If you don't care enough about your tools to get the best, your burden of proof just got a lot heavier.

So if you haven't switched already, stop procrastinating. Get it over with. If you have any desire working for the rising rank of companies building their business on open source technologies, you don't want to carry a liability like that around on you resume. Being labeled a 2005 Switcher is bad enough.

Strong invective indeed, but that's David's style. To be fair, his larger point-- that if you care about open source programming, you'll use a platform friendly to open source software -- is reasonably valid, though I'd expect hard core OSS folks to want Freedom Zero in their operating system as well as the software they build. If I felt that strongly about OSS, I'd actually view people who held on to the platform lockdown of OS X with mild suspicion, myself.

Still, is it necessary to paint with such a broad brush? To imply that programmers using Windows "don't care enough about their tools to get the best"? I have a pretty thick skin based on the psychic scars of the thousands of petty internet religious wars I've participated in, and this one even ruffles my feathers a little. I take issue with David's claim that, when it comes to computers and operating systems, there's any "best" anything. In my considered opinion, they all suck. Sure, there are tradeoffs, pros and cons, strengths and weaknesses. But an objective best? It's all relative.

Before you jump all over David, do read his two followup posts (one, two) on the Ruby mailing list, which explain his position in a more coherent, less incendiary way. The argument that 37Signals wouldn't hire a programmer running Windows has as much to do with culture as anything else. It's like showing up to a job interview with Coca-Cola casually sipping a Pepsi. David, unfortunately, felt the need to turn this job requirement into a statement of taste. He declared Coca-Cola the morally and aesthetically superior choice, instead of the simple preference for one type of sugar water over another that it really is.

That post was written in March 2005, but David expressed the same sentiments in a 2007 technology prediction piece.

Apple will continue to trounce everyone else for the preferred geek platform. The stigma of being a Web programmer still using Windows will increase.

Here's what I don't understand about statements like this. They have exactly the opposite effect that the speaker probably intends. There are two possible reactions:

  1. Wow, David's right. I made the wrong choice in my career. It's high time I looked into OS X and Rails programming. They sound great!
  2. F****************k you.

Guess which reaction is more common? Actually, there's no need to guess, as I can guarantee every Windows programmer reading this is thinking #2 right now. As an evangelist looking to increase adoption of your platform, this is a remarkably poor strategy. When has abusing people into agreeing with you ever worked?

Of course, as David has said many, many times, he doesn't care whether we agree with him or not. Well, not in so many words, but you get the idea:

David Heinemeier Hansson: Fuck You

I actually admire this sentiment, as I've seen too many people get so wrapped up in what other people think of them that they can't bear to have an original opinion about anything. But if you accept the premise that this kind of statement won't change anyone's mind, and is ultimately ineffective-- even counterproductive-- what are we left with? What purpose does the statement "stigma of being a Windows developer" serve? I can only think of one: David gets off on putting other people down.

And that makes him kind of a douchebag.

Which also means when you're using Rails and OS X, you're using the platform of choice for douchebags.

Samurai Shodown 2 character select screen

I used to be an avid Samurai Shodown II player. I played as Earthquake, the impossibly fat, impossibly Texan ninja. I got so good with Earthquake that I could beat all comers in the small Boulder, Colorado arcade I frequented. This led a frustrated player to remark:

You suck! You're kicking our ass with the worst character in the game!

Indeed. There's nothing more satisfying than kicking someone's ass with the worst character in the game. After playing this remarkably well balanced fighting game for a while, I realized that every selectable character had their strengths and weaknesses. Playing well meant understanding your character and maximizing your strengths while exploiting your opponent's weaknesses. If you were clever and patient enough, you could beat any character with any other character. That was skill.

Don't waste time arguing about the character select screen. Results speak loudest. Show the world what you can do in your programming environment of choice.

Posted by Jeff Atwood    View blog reactions
« I Repeat: Do Not Listen to Your Users
UsWare vs. ThemWare »
Comments

Macs are for noobs and stupid people, all talented IT professionals use PHP and linux.

(great post btw)

Matt on February 27, 2008 11:22 AM

Nice post. If he really cared about "open standards" he would be using Linux not MacOS.

Lets see if the Great D(ictator)HH has anything different to say in 2008.

Sid on February 27, 2008 11:23 AM

"Which also means when you're using Rails and OS X, you're using the platform of choice for douchebags."

Great irony, you just did the same thing as David!
Good post.

ChrisVB on February 27, 2008 11:57 AM

@ Reg:
On to another topic... What is this Samurai Showdown? And where can I try it??

Samurai Shodown (omit the W, it's probably a translation goof just like "VICTOLY") is a game for the Neo Geo system, which back then was the only thing that had hardware equal to what they had in the arcade. Several SNES and Genesis games of that time were arcade ports, but the arcade versions looked better since they had better hardware. You need to get an emulator and the game's ROM to play it.

Since all Neo Geo games of that time are known, the emulator has a list of what's possibly available, and the entire package (all games + emulator) can usually be had by perusing the BitTorrent system.

Rob Janssen on February 27, 2008 11:58 AM

The Apple Mac is like tattoos

People get them because they think they themselves are cool and want to stand out from the crowd. Not realising people from street cleaners to board room directors of boring corporations have them now too.

I remember seeing an advert for a car - Toyota I think - and it's tag line was "stand out from the crowd". Carpark full of black cars, one person has silver car. Now if you go into a car park everyone has a silver car because they want to stand out from the crowd :-)

Really though, an operating system is a tool for a job, it shouldn't be a status symbol or an "exclusive/inclusive" babdge.

Tubs on February 28, 2008 1:02 AM

Terrific post and excellent way to tie in the arcade story.. The ball is in your court now David.

Nicholas on February 28, 2008 1:17 AM

I work for a company that writes a windows based application. The application is limited to Windows for a couple of very good reasons, the first and foremost being: it's what 98% of our target customers will run.

I think writing software is all about eating your own dogfood--if the application you're working on runs on *nix, you'd best get your ass off the Redmond crack. If your target application is Windows, you should know Win32 like the back of your hand.

Our application runs on Windows XP, Vista, etc, so the notion of developing on *nix is silly. I have installs of XP, Vista, and Windows Home Server, among other things. Why? Because this is the domain in which my software resides. I did not have the luxury of selecting this software; it is simply the way things are.

Do I like *nix? Oh sure. Love it. Think it's great. I would (and do) happily run a *nix desktop, participate in open source projects, etc. But I'm not here to be an evangelist: I'm here to produce software for a customer, and that customer doesn't have the foggiest idea what a shell is, how to use vi, whether or not rails is the best thing since sliced bread, or what Ubuntu is. They simply don't know, and they definitely don't care.

Eat your own dog food. If that dog food is made by Linus, so be it. If it's made by Bill, super. But be damn sure you're not in the cat food isle if that isn't what your customer wants or needs.

Jeremy Noring on February 28, 2008 1:19 AM

Your syllogism is FAIL!

"DHH" is not the class of douchebags!

Return to logic academy!

Also, you are fail!

.NET is non-free!

Do not collect freedom, instead, money!

Zack on February 28, 2008 1:20 AM

awesome. posts like this is the reason I subscribed.

Trance Henriq on February 28, 2008 1:30 AM

I use Unix that runs TextMate. Cut that lame provocation.

ff on February 28, 2008 1:34 AM

Ive coded Rails in Windows and it's not too bad. David HH must be too much of an enthuisiast to actually present an opinion in a better way.

michael on February 28, 2008 1:34 AM

I recently switched my main platform from Windows to Linux on all computers and even I though something along the lines of "f******ck you".

Joesten on February 28, 2008 1:52 AM

Got it - open source "you're either with us or against us"

When will these open source zealots get that they're competing with piracy, not with microsoft. Piracy (obviously) is winning heavily, so people start using much stronger words. Crime is what's "keeping open source down", not microsoft.

Good luck (heh), well, since this is never going to fly anyway, perhaps I should simply say enjoy the fight, since you can't win as long as you're against enforcing the law.

Tom on February 28, 2008 1:56 AM

I did enjoy this a lot actually. Nice buildup, awesome climax, and good conclusion :p.

I mean, without delving into all the thoughts you can draw from this, on a pure literary perspective also, this was enjoyable. :)

Vaibhav on February 28, 2008 1:59 AM

easily one of your best posts. well said!

Gaurav Sharma on February 28, 2008 2:04 AM

I develop web applications better than 90% of other "web developers" out there, and I do it using a windows platform. I don't mind being arrogant in an anonymous setting, my own knowledge of my product speaks for itself, and I do not need to justify with an example, take that as you would like to. If I switched to another platform or language, given a short training period, I would be as effective of a developer. The developer makes the web application, not the platform. The developer also makes the money, not the platform. Last time I checked, where I am in my career, and my target demographic, I can make more money as a windows .NET developer. That may change, and if it does, I will go to that technology. You will never be an effective developer if you are tied to a single OS/Language/Technology. :End arrogant rant:

Alex on February 28, 2008 2:06 AM

You're kidding your self with the relative argument about Windows.

Windows is a fractal failure and no amount of handwaving changes that.

Noah Slater on February 28, 2008 2:13 AM

I would refuse to work for or with a narrow minded person like that. Odds are the douchebaggery doesn't stop at the fanaticism of an operating system and language of choice, but spills over to other aspects.

But it's easier to simply ignore the arrogant web-developers who basically scale up blogging software or CMS tools. They are the teenagers of the developing world, even though many of them older than I am, and stuck thinking they have figured out what the rest of the world is clueless about.

oglethorpe on February 28, 2008 2:14 AM

Is it really worth posting this. This is what trolls want: attention. Better to let him wait for the year of the Mac/Linux whatever.

Josh on February 28, 2008 2:14 AM

Blah-blah
Only joy and usefulness for developer and end-users matters.

Vladekk on February 28, 2008 2:19 AM

1) Samurai Shodown II is not balanced. Ukyo is overpowered, particularly since his Swallow Slash allows for an extremely powerful mix of aggression and turtling. Sieger, on the other hand, is very weak against any number of tactics. Earthquake was middle of the road, if I recall.

2) Ryu and Ken are extremely popular, thus their tactics can be transparent. But those tactics, perfectly executed, still win repeatedly. At the tournament level, Zangief or Dhalsim tactics are just as well-known: security through obscurity is no security at all. I'm a Zangief guy, though, so I understand about Earthquake.

3) The Super Nintendo had better hardware and better games. But true gamers had both.

4) I use Ruby as a Swiss Army knife to do preprocessing and utility in Flex and AS2 projects. The Japanese side is, to my understand, very charming and polite. Who needs Rails?

Alan on February 28, 2008 2:21 AM

When I first read that post from DHH I stopped reading his and the 37signals blog and finally turned a critical eye on their products. I have been using basecamp for well over a year now and I think it sucks. These guys aren't the gods of the internet that they presume. Fuck them!

Jay on February 28, 2008 2:26 AM

Chris is right - I should definitely wait to meet him before calling him a douchebag. ;-)

Anyway, I hate religious nut jobs, whether they be Bible-thumpers, homicide-bombers or technology koolaid drinkers.

I 'chose' Windows because it has such a large percentage of the market share, and I wanted to build software for a living (read, paycheck) in my hometown.

Two of my first Windows (non-DOS, that is) pieces of software will turn 10 years old this year, and they are still used every day. I would like to think that I would do good work no matter the environment.

Andy on February 28, 2008 2:29 AM

This was a whole lot confusing post. Of course you can do whatever you need to do in any environment, that's what nerds do all the time. And each of us nerds finds that satisfying, crossing borders of what is thought to be possible.

But really, there ARE tools that are suitable for your particular task, and there are tools that are not. I tried to make a change in my life just a while ago. But believe me or not, I couldn't find anything to replace emacs. Emacs was my weapon of choise before, and it is that now.

There's a reason programmers often feel helpless with Windows. And there's a reason why those programmers pity those who find Windows' internals fascinating, because they know they are looking at a little boy who's found a broken tricycle, and never seen a real bicycle before.

Of course, this whole war of the best operating system is pure madness. Where's that old statement of the continuing mission: to boldly go where no man has ever been before? Why not try something new? Maybe create something new? Of course, then you'd have to leave something behind: that's the price of freedom. I'd advice to leave behind the things you least need.

For me it's this Windows thing.

Sami on February 28, 2008 2:34 AM

Whatever. As a friend of mine said, if you don't install any software written by dickheads you'll have a very empty hard disk.

Spruce Moose on February 28, 2008 2:35 AM

"Guess which reaction is more common? Actually, there's no need to guess, as I can guarantee every Windows programmer reading this is thinking #2 right now. As an evangelist looking to increase adoption of your platform, this is a remarkably poor strategy. When has abusing people into agreeing with you ever worked?"

"David gets off on putting other people down.
And that makes him kind of a douchebag.
Which also means when you're using Rails and OS X, you're using the platform of choice for douchebags."

Irony... sense... jangling...
Great post.

Tom on February 28, 2008 2:36 AM

"Heh, once you go Mac, you don't go Back. :)"

Actually, I spent two internships writing software on OSX.

I hope never to touch a Mac again.

Telos on February 28, 2008 2:38 AM

"It's not pretentious if its true that they are better then you."

Then you what?

Pretentious Asshat on February 28, 2008 2:41 AM


This whole argument is a moot point for two reasons -

a) The whole point of any project is satisfying the end needs of the user. If the end needs of the user require a *nix platform, or a windows one, the developer will code for that platform. He/She isn't going to turn round to the user and say, "sorry, but i don't code for that o/s". The same goes with programming languages. A good programmer should be able to write code in whatever language the end-user wants (allowing time for learning of said language, obviously).

b) Programmers by their very nature have preferences - these may change over time, but it is the fact that we have these preferences that make us programmers. If all developers assesed development options (platform, programming language, etc) purely by their pros and cons, we'd be managers, and that would be dire state of affairs indeed.

Kazar on February 28, 2008 2:47 AM

Hell, I'm just happy to be programming in ANY environment... and getting paid, that is...

Juris on February 28, 2008 2:55 AM

Great post.

I think that either you are a good programmer (with good ideas and skills) or not.
If I were to hire a programmer, unless I need his/her skill on a specific platform, I would find pretty stupid focusing his/her platoform of choice. That would make me a really shallow interviewer (and for that I should fire myself).

Straficchio on February 28, 2008 2:57 AM

I hope DHH is getting paid for that free advertising.

ryan on February 28, 2008 3:00 AM

Windows developers (me included) need to understand, that yes windows is the tool for the widest ranges of jobs. But it is NOT the best tool for all those jobs

Anyway, I can’t personally understand why the words of David upset you so, he and his MacRails camp is colouring this very grey windows world.

Peter Palludan on February 28, 2008 3:13 AM

Another point for not using ruby.

offler on February 28, 2008 3:23 AM

Douchebag is as douchebag does. What a great way to prove that both you and DHH are douchebags.

andrew on February 28, 2008 3:31 AM

I develop on a Mac and it's a great machine. I also use Windows and am starting to use Linux.

I love the Mac, I just hate other people who do.

devolute on February 28, 2008 3:35 AM

even though it means that i'm using the platform of choice for douchebags, i love this post.

but the reasons for my love are more, "jeff atwood calls dhh a douchebag" than "jeff atwood makes some really good points". not that your points aren't good, mind you, it's just that anything added to the mac vs pc war is pissing in an ocean of piss.

ian on February 28, 2008 3:35 AM

even though it means that i'm using the platform of choice for douchebags, i love this post.

but the reasons for my love are more, "jeff atwood calls dhh a douchebag" than "jeff atwood makes some really good points". not that your points aren't good, mind you, it's just that anything added to the mac vs pc war is pissing in an ocean of piss.

ian on February 28, 2008 3:35 AM

I'm gonna go with anser 2 here. Windows XP is pretty sweet, and so is Visual Studio 2008!

Mike on February 28, 2008 3:39 AM

I use a Mac. The built-in unix underpinnings make me more productive than a Windows user could be out of the box. Visual Studio 100 might be super awesome for editing .NET code, but what happens when you need to automate a deployment or reformat a few text files? For those types of tasks unix provides far better tools.

SSH came standard on my macbook. No need to download putty, cygwin, or whatever else to securely login to other servers (how many windows devs just use telnet and pass things in cleartext around the internet).

Mac OSX and Windows are not at all like balanced characters in some sort of software game. Mac OSX is a better tool all around for most development work.

Normally I like your insights, but I think you are way off base on this one. Macs are just better tools for the job of software development if you have a Unix background.

Nate on February 28, 2008 3:44 AM

[OT] Why do you think a character with 'Samurai' in his name would be a ninja? ;-p

nx on February 28, 2008 3:51 AM

Excellent post.
Yes, I'm a "Windows programmer"... whatever that is.

The Samurai Showdown II anecdote reminds me of something similar I ran into frequently when I played Medal Of Honor online in deatchmatch mode.

For some reason the shotgun was considered a n00b weapon there. Mainly because it's power can't be beat at point blank range, and therefore it was something n00bs that failed to aim properly ended up using a lot.

In some maps however like the Stalingrad one the shotgun was the ber pwnage choice of weaponry. The map was all about small passages and rooms leading from one ruin to another. If you turned around a corner and found yourself standing eye to eye with a nazi holding an Uzi, the shotgun was the only weapon that killed with one click of the mouse.
"OMG!! SHOTGUN N00b!!" was usually the comment I got after that.
I called it tactics though.
It was all about being smart and choosing the right surroundings for your weapon of choice, and on some maps, you pwned with that.

Rocket launchers however, now that's a n00b weapon!

n3wjack on February 28, 2008 3:58 AM

Jeff, this is the greatest post you have ever made (IMO). And that's saying alot. An instant classic that I will read again tomorrow (and perhaps the next day). Perfect title, perfect thing to call such a prick, and perfect illustrations.

Josh Stodola on February 28, 2008 3:59 AM

Every OS got its strengths and weaknesses. For those who don't agree Windows has its strengths, perhaps, they overlooked at their favorite platform.

We are flooded with developers who are not an expert in competitor's technologies but love to criticize. Worst of all, most of them just copy points from others without really think about these points. Perhaps, they just want to show off their so-called "knowledge", or, they just want to evangelize their platform but do it in the wrong way.

Good guy learn from his weaknesses, and ugly guy criticize other's weaknesses.

Thanks for the great post!

Compulim on February 28, 2008 4:00 AM

Well, gosh. I'm OK with the BSOD, and the erratic architectural swings, and even the giddy security thrills. I guess it's the demon worship and human infant sacrifice than bothers me about Windows development.

cvs dave on February 28, 2008 4:11 AM

It is fitting that you would compare the platform debate to SS2. Samurai Showdown II was not particularly known as a well balanced game. Yeah, you _could_ win with Nakoruru, but you were probably better off using Ukyo. Any character could win, and if one person knew a weak character really well, and his opponent didn't know his strong character that well, the first player might even be more favored, but there were certainly still some better characters you should use for the job.

Similarly, certain platforms are better than others for their given tasks. You could use C#/windows for web development, but you're probably better off using rails/mac. Yes, you can make some good stuff using C#, but you would be more productive using rails to do so instead.

Ryan on February 28, 2008 4:13 AM

DHH certainly isn't the only prominent person in the software industry with this opinion. Take Paul Graham for example:

"Great hackers also generally insist on using open source software. Not just because it's better, but because it gives them more control. Good hackers insist on control. This is part of what makes them good hackers: when something's broken, they need to fix it. You want them to feel this way about the software they're writing for you. You shouldn't be surprised when they feel the same way about the operating system.

A couple years ago a venture capitalist friend told me about a new startup he was involved with. It sounded promising. But the next time I talked to him, he said they'd decided to build their software on Windows NT, and had just hired a very experienced NT developer to be their chief technical officer. When I heard this, I thought, these guys are doomed. One, the CTO couldn't be a first rate hacker, because to become an eminent NT developer he would have had to use NT voluntarily, multiple times, and I couldn't imagine a great hacker doing that; and two, even if he was good, he'd have a hard time hiring anyone good to work for him if the project had to be built on NT."

http://www.paulgraham.com/gh.html

Granted Mac OS X isn't entirely open source, but being partially based on FreeBSD it's a HELL of a lot closer than Windows is. It comes wish bash, gcc, an X server, and all the other Unixy goodies. And has a appealing and usable GUI. Best of both worlds, if you ask me.

Tom Robinson on February 28, 2008 4:16 AM

Using OS X because "its unix underpinning" is lame.

Do you really think us Windows dev don't have shells, make, grep, lex, yacc and other unix tools? Or that they run "better" on OS X?

We use Cygwin or Microsoft's own native BSD-based POSIX subsystem, MS Services For Unix (i.e Integrix). Both of which are free.

We have both unix tools AND the windows-based tools

but you knew that..

Ulric on February 28, 2008 4:18 AM

My problem with Windows programmers and users is not that they exist, or are somehow inferior, but that they are so numerous (this is, of course, the near-monopoly argument). Still, I can see how it's easy to get into a "Microsoft users suck" mindset when all we really want is a couple of players to match Microsoft in the market.

Oh, yeah, I used to play as Dhalsim and Zangief in Street Fighter 2 and alpha 3. It's very easy to trounce a Ryu or Ken if you know how it should be done.

dac69 on February 28, 2008 4:22 AM

First off, loved the comparison with Samurai Showdown II. That is one of my favorite 2D fighting games. Lots of style and class in that game.

I tend to agree that the platform one chooses to develop upon can directly reflect on the tools they use. I'm most comfortable sitting behind a UNIX console with vi (actually, vim) running in several gnome-terminal windows. Others in my company prefer (or are forced to use) IRAD or some other IBM Eclipse-based behemoth on their Windows machines. For me, it's absurd the amount of resources these IDE-cum-editor choices take up is absurd, but for them it's a choice that makes their development life simpler.

Honestly, if Windows gets your job done, and you feel happy using it, by all means keep using it. Personally, I can't stomach spending hundreds or thousands of dollars for someone else to tell me what I can't do with their software. If I wanted to take vim and gcc and put it on Windows, I'm freely able to do so, but if I wanted to take certain Windows products and distribute them to a lab, I'd have to get license permission to do that. For me, that's a price I'd rather not pay.

Craig Maloney on February 28, 2008 4:23 AM

I write apps for Windows because:

1) I want other people to actually use them.
2) I don't want to force users to recompile their
OS just to install a webserver.
3) I'm over 19 and I get paid to program.
4) I don't drive a VW Micro-bus.

Kaitain on February 28, 2008 4:26 AM

"...not because the platform is technically superior in any way."

Been a long time since I could put 'technical superiority' over 'food on the table'.


DaveE on February 28, 2008 4:35 AM

Linux: Supports DRM in its Kernel. Mac OS X: Does not. Your data is not more open on Linux. The OS doesn't matter, the applications you use do. How hard is that to comprehend? The whole Freedom Zero article reads like one giant misunderstanding of what's really going on.

LKM on February 28, 2008 4:45 AM

(Also, Samurai Shodown II rules. No "w", Craig :-)

LKM on February 28, 2008 4:49 AM

Where web development is concerned, it makes sense to use the same type of OS as the server you're going to deploy on.
I.e. if you're going to deploy on a Windows server, it makes sense to develop under windows (fairly recent version).
If you're going to deploy on Linux, (which is in my opinion vastly better and definitely cheaper) then you should work on a *n*x.
Linux is best, but if you want a laptop, a Mac makes sense because Linux doesn't have a great track record where drivers for recent laptop hardware are concerned.
So i think DHH's opinion could do with a bit of refining.
Given the choice i'd rather work on a *n*x though.

elise on February 28, 2008 4:52 AM

I don't use any of those derogatory terms but you are right.

Mark Wisecarver on February 28, 2008 4:53 AM

@Ulric

Yes I am aware of how windows has so many unix tools available to download.

The built-in shell in windows is no comparison to a real shell. Cygwin is cool, but suffers from having to install if and it isn't really as compatible with the rest of your windows system. Sure you could spend a couple hours downloading, installing, and configuring a unix shell on windows - but you get all of that installed as standard on an OSX.

I've used many different systems and the unix that comes with Mac OSX is a lot nicer to use than anything I've had on Windows. Mac OSX is a better Unix than what you can get on Windows.

It's really telling that all the windows people here keep throwing out insults like lame, douchebag, asshat, and prick while trying claim a moral highground to those of use running the superior operating system.

Nate on February 28, 2008 4:54 AM

Douchebaggery or not, the real issue is what's best for the job. And.. pretty much most computer science and cutting edge development nowadays is done on UNIX-like operating systems. As a progressive developer, you should be on a UNIX-like system, whether that's OpenBSD, Linux, OS X, Solaris, or whatever.

I think DHH wouldn't care too much if you worked using Linux while at 37signals since Linux and OS X, thanks to POSIX-compliance, can work in very similar ways.. it's really just the interface that changes. Windows, however, is the black sheep of operating systems.. it's not a UNIX, and that makes it a weird, fringe system for most developers.

Peter Cooper on February 28, 2008 4:56 AM

Storm: Check.
Teacup: Check.

Andrew Russell on February 28, 2008 4:59 AM

If I was applying for a job at 37signals I would, no doubt, be running an open source OS. If I wrote software for the web I would, no doubt, be running an open source OS.

However, for those few of us writing software for Windows, guess which OS is the best tool for the job?

Brent Rockwood on February 28, 2008 5:05 AM

Argh! Keep buying that fur of yours
... never mind the poor little developers uhhh critters that get slaughtered every day making it!

Michiel Trimpe on February 28, 2008 5:09 AM

Luckily with ruby you dont have to care much about windows linux or macosx

That's the irony, isn't it? As creator of Rails, DHH should be the last person limiting the
audience for his framework by insulting a large proportion of them. Repeatedly.

Wrong assumption. In Ruby, platform does matter, a lot. Mostly due to the current stable implementation being very slow, several important Ruby projects are partially written in C.

Writing cross-platform C wouldn't be too hard, if there was a full POSIX-compatible API for Windows. Alas, there isn't, so Windows versions, when they exist, frequently lag behind the *nix code. I actually wrote some Rails projects in Rails on Windows and I can tell you the experience is similar to writing ASP.Net applications with Mono on Linux. Feasible, but not as smooth.

rubinelli on February 28, 2008 5:11 AM

Mr. Atwood, although you express reason and balance in your post, overall it is almost as bad a swipe as the post you're commenting on. In other words, you've stooped to his level. I certainly understand your desire to express your thoughts on this, but you're lowering rather than raising the discourse by participating in these blog-post flame wars.

John on February 28, 2008 5:22 AM

Mr. Hansson can kiss my Recycle Bin. He's probably critical of programming in a Windows environment BECAUSE HE CAN'T DO IT.

Apple users who criticize PC users ARE NOT SMART ENOUGH TO USE THE PC/WINDOWS ENVIRONMENT and need something a little more "user friendly".

There. I said it.

PaulG. on February 28, 2008 5:26 AM


Really - who cares?

I would say one thing however - unless you've had a significant amount of experience in both environments, you're really not qualified to judge. I expect that excludes 90% of posters to this thread (myself included), as well as 90% of contributors to the original thread.

It's simply too easy to get evangelical about the platform you know, since the platform you don't know seems alien and odd. I guess that there are very very few people who have enough experience on the platforms mentioned above to give a truly impartial review.

Thomi on February 28, 2008 5:30 AM

I'm more a designer than coder but I still read Jeff's writing every week and I was turned onto him (I seem to believe) by a Daring Fireball post. I even bought a CODING HORROR sticker and it now rests happily on my Mac.

Peace and love people, peace and love.

blip on February 28, 2008 5:30 AM

"Wow! Look at me, I'm cool because I can build a To Do list using Rails and a Mac"

Seriously, has 37Signals built anything that took more than 1000 lines of code?

Anyways, good post Jeff and thanks for sticking up for us Win programmers. It's already been said a thousand times over but a good programmer will get the job done no matter what. And one more thing...a language like Rails is fun and cool and all the rage these days but we're really comparing apples and oranges here. I mean the family of C/C++ languages have been around for a looooooong time. These languages are proven and versatile...you can write whatever the hell you want with them from embedded apps, to voice recognition to database driven crap...and yes....even a Todo list. Try doing even just a fraction of that with Rails....and..haha a Mac!!??

LAME!

Ralph on February 28, 2008 5:30 AM

"I use a Mac. The built-in unix underpinnings make me more productive than a Windows user could be out of the box. "

That's great. The downloadable free tools and professional development tools will quickly trump your out of the box productivity.

"Visual Studio 100 might be super awesome for editing .NET code, but what happens when you need to automate a deployment or reformat a few text files? For those types of tasks unix provides far better tools."

No it doesn't, it only provides better tools out of the box. Download Powershell and you have a great command shell that allows you to call all the .NET libraries, easily trumping anything I know of in UNIX.


"SSH came standard on my macbook. No need to download putty, cygwin, or whatever else to securely login to other servers (how many windows devs just use telnet and pass things in cleartext around the internet)."

None, we use RDP not telnet.


"Mac OSX and Windows are not at all like balanced characters in some sort of software game. Mac OSX is a better tool all around for most development work."

Out of the box, maybe.


"Normally I like your insights, but I think you are way off base on this one. Macs are just better tools for the job of software development if you have a Unix background."

You've only said it comes with better tools out of the box, that hardly proves it's a better overall dev platform. The professional tools you can get for Windows probably pull it ahead as a dev platform. The solidness of the .NET library, which is so good people are attempting to port it to UNIX, almost certainly pulls it ahead.

Telos on February 28, 2008 5:32 AM

Stupidest. Post. EVAR

fgfg on February 28, 2008 5:36 AM

You hit the nail on the head when you said "results speak loudest". So, when's your new standards-based platform-agnostic web framework coming out, Jeff?

Jesse Newland on February 28, 2008 5:40 AM

Amen, well said.

OS X/Rails is nice, and windows does blow, and linux will own them both someday, but in the end tools are tools, its what you do with them.

Sam Liu on February 28, 2008 5:40 AM

dhh is the author of this stupidity too:
"Unlike Christopher, I consider stored procedures and constraints vile and reckless destroyers of coherence. No, Mr. Database, you can not have my business logic. Your procedural ambitions will bear no fruit and you'll have to pry that logic from my dead, cold object-oriented hands."

james on February 28, 2008 5:43 AM

Apple users who criticize PC users ARE NOT SMART ENOUGH TO USE THE PC/WINDOWS ENVIRONMENT and need something a little more "user friendly"."

I wouldn't say that about every Apple owner, but it's certainly true for me. I absolutely, positively get confused when I use Windows on the desktop.

All these ridiculous "shame on you" responses to what was quite clearly a tongue-in-cheek joke about douchebags are too depressing for words.

It never occurred to me that Jeff would be joking. Looking at the comments, I'm not alone. However, if you can posit that Windows is an inferior platform for web development despite its popularity, you have to accept that just because you and a few thousand people take "David is a Douchebag" seriously, doesn't mean Jeff meant it seriously :-)

DHH essentially said "if you use Windows, you suck". There's no way I'd touch OS X or Rails based on DHH's "advocacy". If anything I'd double-down on Windows just to prove him wrong.

I actually interpret his remarks as saying that "if you use Windows, I won't hire you to work in a Ruby shop on OS X." I would never say never about something like that when hiring, but I also wouldn't claim that the choice of OS is completely orthogonal to the likelihood that you will be happy and productive working for 37 Signals.

But be that as it may, where you and I differ is that I am not so quick to demonize an entire platform for something like this. It surprises me greatly to mix a discussion about choosing the right tool for the job based on developer competence and this kind of highly personal clique-ism.

Liek I said, this is not your bets work and that is exactly why: you have built a strong brand based on "pragmatism." Whether I have agreed or disagreed with your perspective on the right music player, the right PC, the right OS, or whatever, I have found you to be consistent in advocating what you believe to be appropriate based on technical merit.

So this perspective, while perfectly valid--and let's face it, perfectly normal for a social animal like Homo Sapiens--dos strike me as being out of character for the Coding Horror blog.


Judge by the results; every playable character is competitive in the right hands. Unless your argument is that Windows and Windows development tools are *so* crippled that they can never produce competitive software products or websites, then we're misunderstanding each other.

There's a whole blog post to be written about this. Chris Sharma can outclimb me in construction boots. Does that mean I should stop buying specialized climbing shoes? No. But it also doesn't mean I should stop training and put all my trust in the 'superior" tool.

I think there is a grain of something very important in this post, namely about the fact that a good programmer will outperform a poor programmer under almost any circumstances, and that the very bets thing you can do to get better results is to improve yourself.

However, that does not obviate the fact that given two roughly equal programmers, the one with the better tools will outperform the one with the poor tools.

Therefore, it is fair to say that tools *are* important and that tools *matter*. Not more than programmer talent, but not so little that programmers can afford to squander their talent by using poor tools.

Reg Braithwaite on February 28, 2008 5:47 AM

So a solid developer with 15 years of experience (nearly all on Windows) should not apply to 37 Signals??

Hmm . . . but I would be productive on Rails in 6 months, right DHH?

You would be productive in Rails within 6 months because working for 37signals you would have had to switch to a solid development platform.

Apple users who criticize PC users ARE NOT SMART ENOUGH TO USE THE PC/WINDOWS ENVIRONMENT and need something a little more "user friendly".

We aren't talking about users here. We're talking about developers. And that makes your comment completely ass-backwards. Do a little research of the 'user friendliness' of unix vs windows and you'll find that windows is often the one who dumbs things down.

This is a key point. Use an os/platform with a more advanced backend + a more user friendly (easy enough for your computer illiterate grandma to use if necessary) frontend and you have yourself a nice _balanced_ system. Hmm, sounds a lot like Samurai Shodown.

The anecdote in the article is wrong, though, of course. Since in SS2 the characters are all equally powerful when used correctly. But it has become quite clear to those with their eyes open that in the Linux/Windows/OSX fight we do not have characters that are in any way balanced. It's as if 3 different team members on the SS2 game project got to design 3 characters. One was designed by the office slut, one was designed by the seasoned engineer with 40 years of industry experience, and the last was designed by the CEO's retarded daughter. I'll let you figure out which.

thedude on February 28, 2008 5:49 AM

@PaulG: It takes a special kind of person to intentionally use the difficult solution to a given problem, and then think that this somehow makes him the smart guy.

LKM on February 28, 2008 5:53 AM

yes they do color things.. with the low hanging fruits, they get by quickly using the powerful tool ruby/rails really is. The whole web2.0 and ruby/rails hype is not only about really fresh ideas, it's aswell about the tribe of ppl who get's attracted it, partly: arrogant, going after the easy money any web20 thingy gets once you manage to talk long enough about it without stopping to smile...
... on the other hand ruby/rails is cool to prototype quickly those all to fantasic ideas without burning money needed elsewhere...

Pointernil on February 28, 2008 5:55 AM

I consider the geekiest development platform I've used to be RPG II on the BABY/400. It is archaic but incredibly obscure. I can't find any online information whatsoever on the BABY/400. RPG II is a horribly cryptic language and the BABY/400 commands are equally cryptic. But I see the same kind of green screens when I go to the bank so it has a certain allure as mainframe esoterica.

Robert S. Robbins on February 28, 2008 6:01 AM

Seeing the comments of the windows-only-users here, I can totally dig what DHH is saying. When you can't broaden your horizont, you can't really break through in your programming skills. And if you've never used a Unix before, how can you judge, that DHH is wrong? That's right you can't!

And btw. he didn't say, that Windows users suck, he just implied, that they are not concerned with using the best tools for the job, and that's not what his company is looking for.

And the Samurai Showdown analogy is not appliable, because every character is designed to be equally strong. But imagine you have to press "Up, Down, Up, Left, Right, A, B, C" for a single fireball or something. That would be Java or C# then. In Ruby you don't have to press so much buttons and if that's not enough, the buttons you have to press are logically aligned, and make sense for a fireball for example.

Summary: Get to know your world, and question your beliefs daily - it's healthy and called progress.

Soleone on February 28, 2008 6:03 AM

...earthquake sucked! :-)

Anyway, great post.

....geez. You really played with earthquake? ..

geez.

Well, great post.

Toledo on February 28, 2008 6:07 AM

Who cares about what he thinks... Apples OS is just going to be a Windows bootloader in the near future anyways. Only good product they have is the ipod.

Iron Python + Silverlight is all I have too say...

AppleHater on February 28, 2008 6:15 AM

I agree with David. All the fellow programmers I know who use some variant of Linux/BSD at home are the sort of people who live to program. The Windows users more often just program as a job.

The majority of the programs you use on an OSS friendly OS, you can get the source for, see how things are done, and fix things that annoy you. This is a huge benefit for people who are always thinking about programming. Haven't you ever noticed some weird behavior in something you are using and wanted to dig into the source?

If you can't see a clear benefit to an OSS friendly OS, you just aren't a hardcore programmer. There's nothing wrong with that, but don't claim you can compete with someone who spends all day programming then goes home and spends all their free time programming when it comes to being an ideal candidate for a programming position.

a on February 28, 2008 6:20 AM

Disclaimer: I run a small website called www.dailyunixtip.com.

I think the reason Windows is looked down upon by developers who work with Web application frameworks is that web application design and coding, like so many things that comprise "the Internet", is inherently Unix-y.

I'm currently developing an as-yet unreleased Rails application on Windows, using Aptana, and it's a joy because so much is abstracted away (the benefits or otherwise of this I'll save for another discussion).

However, a UNIX-like OS (be that DRM infested OS X, Linux, FreeBSD, whatever) leads you to follow certain conventions when working with the OS that, because of the UNIXy roots of the Internet, happen to be good habits for web application development too.

I'm talking about things like paths without spaces, lowercase generally, hierarchical navigation from a common root point (be it a file system or the web server root), regular expressions - I could go on.

Sam on February 28, 2008 6:24 AM

What about Irix on Silicon Graphics? Now there was a great development environment (for what I was doing at the time, of course).

My biggest problem with Linux has been finding a really good debugger. I haven't seen the tool chain available for OS X.

Matt on February 28, 2008 6:24 AM

Yah, I was pretty happy with the post right up until then end where he, by "logical reasoning", claimed that you use an OS of douchebag choice. I don't even use those OS'es and I was offended. C'mon, you're better than that.

Pete on February 28, 2008 6:25 AM

Oh, the irony of DHH toting a mac

Noah on February 28, 2008 6:28 AM

I program Rails on a Mac and I am better than you.

Greg on February 28, 2008 6:33 AM

These anti-Windows people need to read, learn and inwardly digest Spolsky's excellent article on the different worlds of software development: http://www.joelonsoftware.com/articles/FiveWorlds.html: my personal feelings towards Windows are *utterly irrelevant* - if my company's clients require that the software we develop for them runs on Windows (as many of them do), then we must use Windows, end of. To suggest that I or my employers are imbeciles for bowing to this economic reality is really too infantile a position to be taken seriously.

tragomaskhalos on February 28, 2008 6:36 AM

Beautifully said. I've worked with all three platforms. Windows, Linux and OSX. I enjoy the OSX environment for developing OSS websites, but never deploy to a OSX server. Too many hardware limitations IMHO.

But at the end of the day I make my $$$ on Windows. Straight Up. It may be a capitalistic view, but it feeds the family and feeds them well.

There are many Mac zealots that can't see beyond the logo, even when it comes to the almighty $$$.

****

If your religion doesn't give anything back at the end of the day, it's called a government.

Gary on February 28, 2008 6:37 AM

This sentiment is indicative of douchebaggery in all aspects of life, not just software development.

I was at a BOY SCOUT camp... we were on the most difficult trip (out of 20 some pre-determined trips you could take), and every evening people would marvel at "how [we] could do such a hard trail". We told them that we were up early, walking not much after, and preferred to spend our time out of camp. Invaribly we'd tell them our wake-up time, they would try to "beat" us out of camp and fail miserably. Did we need to remind them that we "won"? Nope. We just kept our mouths shut and our heads down and did our walking for the day

Same principle here, you only need to crow your superiority if you aren't convinced of it yourself.

Wes on February 28, 2008 6:40 AM

I thought this entry title, linked from a news feed would lead me to an article describing real douchebags, like those associated with the site Coding Horror who constantly try to knock down a specific group based on a limited view they hold.

I read the blog entry posted here--though I expected nothing short of more ignorant spouting of the mouth--because of the title. 'Douchebags' is a specifically defined sub-group of the world, and though there might be many douchebags with a mac on hand, or think they kick-ass at RoR, douchebag and douchebaggery is the behavior portrayed by one Mr. Jeff Atwood and his ilk.

Server technology for many a developer/engineer/architect in our industry eventually crosses into the world of unix/linux. You can code day-after-day in .net, Ruby, Python, C++, and eventually you will need an understanding of unix/linux. When a candidate walks in the door with only windows/.Net/C++ for a job open in the IT or Development Industry, they are going to be looked at as unqualified for the job, unless said job is windows-only, or if they actually do have unix/linux experience of some kind.

This has been the case for over a decade, and it's not snobbery on the part of the hiring co., it's just a fact of life. Now to espouse this fact with gusto doesn't make you a douchebag, it makes you keen. Diversity of skills. Mac people might be cultish, whatever, people who only think in the Windows world are too far along to wake up from their cult of thought, it's a shame they lash out and misconstrue the facts of the matter just to feel self-secure with the path they have chosen.

The term, 'Douchebag' should not be used if you are a douchebag, or don't understand who the term should be directed at. This article would probably have more legs, if at least the term wasn't thrown around like a child with an f-bomb.

DouchebagHater on February 28, 2008 6:42 AM

There's a country song here!

"If coding in Windows is wrong, I don't want to be right...." 8^)

Lloyd on February 28, 2008 6:43 AM

Apple users who criticize PC users ARE NOT SMART ENOUGH TO USE THE
PC/WINDOWS ENVIRONMENT and need something a little more "user
friendly".

That made me laugh.

Anyway, I switched over to using a Mac personally about 10 months ago now and ditched my Windows PC recently because I never used it. This was coming from building and working with Windows based machines for many years.

End result is, I will not go back. Not because I was too stupid to use it, far from it, but because for what I want OSX makes sense.

However, calling people who use it stupid, only makes you look one hundred times worse. It's to do with what works for you and your situation.

That's the thing, OSX and textmate seems to a combination which just works for Rails, and certainly for me makes sense.

ps.. I'm a Java developer who uses Windows everyday, is confined to that for various reasons, chooses to use Eclipse and deploys to runs apps on Unix and Solaris servers ;)

Alan on February 28, 2008 6:46 AM

I came for the flammage and the Godwin. Mr. Atwood, I've moved your blog from my computer-advocacy folder to the entertainment folder. :-)

All this talk of "fuck you" makes me think of "Make you his bitch" backfiring advertising that hangs over John Romero.

Still, beating the drums and putting down other people gets you noticed. Remember when Linus Torvalds gave his Git talk at Google (2007/05)? (http://www.youtube.com/watch?v=4XpnKHJAok8) He totally crapped on centralized source control management systems (SCM) like CVS and by extension, Subversion. Witness more and more blogging developers pointing out his video as the catalyst for test driving Git and other decentralized SCMs now. (If you are on Windows, give "Git on Msys" a try).

I think we need more of this "shock" and opinionated attitude. Then again, this post is pretty much "Fuck You" "considered harmful". :-/

piyo on February 28, 2008 6:48 AM

'Don't waste time arguing about the character select screen. Results speak loudest. Show the world what you can do in your programming environment of choice.'

AMEN! You're my hero.

Brian on February 28, 2008 6:48 AM

my personal feelings towards Windows are *utterly irrelevant* - if my company's clients require that the software we develop for them runs on Windows (as many of them do), then we must use Windows, end of.

No, you're missing the point of the discussion. DHH is talking about web development.

thedude on February 28, 2008 6:52 AM

Before I begin I should say:
1) The company I work is not in the software business, it just needs programmers. So for example, saying "download Monad" doesn't quite work, because the IT department likes to lock things down.

2) Most of the people I work with aren't good programmers. Some were promoted from other departments when they showed a programming aptitude, but of course the ones that promoted them can't really identify WTF code*. So, you can't really apply anything I say to the general programming community.

That said, I think people who predominately program for Windows vs. Unix tend to approach problems differently. The phone number problem in that recent Phone-Screening post is a good example. The Windows users I work with wouldn't have any idea what a regular expression is.

The one thing that strikes me is how little they know beyond the programs and processes they commonly use. Only one has really made any attempt to sneak some useful tools past our IT department, and he only knew about most of them because I mentioned them. I can definitely see the possibility of a mac user who for example writes a long complicated script to do something an obscure built-in could do, but for the most part the Unix people I know have stepped at least slightly beyond their comfort zone and even if they don't know how to solve a given problem three or four different ways, they generally know that other solutions exist.

Granted, I don't work with superstars but an example is probably in order: Recently one of my coworkers (an actual CS major) was approached with a list of id's (I think five files of 20,000 or so) and asked to return a list of all of the ones that weren't in a particular database table. I'm still not sure what he was trying to do, but his first instinct was to use Excel, and he wasted about an hour with this before approaching me. My first thought was to copy the files to our Unix server and run cat, diff, and grep. His eyes glazed over. I wanted him to have a solution he could re-use, so doing it myself the easy way was out of the question. Eventually I walked him through a programming (well vbscript) solution that used a hash table (dictionary?) to store the ids from the files lists and compare that against the database list.

*One guy who majored in Economic came to his interview with nearly self-taught VB code. He recently mentioned he's curious to look at it again. Working with me on some projects has taught him some better programming practices, and he now knows he probably just dazzled the hiring manager by just having code.

Greg P on February 28, 2008 6:53 AM

LOL

';DROP TABLE Users on February 28, 2008 6:56 AM

There are many Mac zealots that can't see beyond the logo, even when it comes to the almighty $$$.

This is also quite amusing. The fanboy mac users you see on youtube aren't the people in question here.

To put it simply. I used windows when it was the better platform, it was the year 2000. Anti-mac users always use the fanboy argument but it simply doesn't apply to DHH and people like him. If linux made their life easier they would be all for linux, if windows was the superior platform, similarly they would be touting it's superiority.

In short, it has nothing to do with any logos. It's just a better OS. When it wasn't a better OS (in it's early revs in the early 2000's), I didn't use it, because it sucked. What ever happened to using the best tool for the job? Of all the programmers I know, it's the windows ones who are 'fanboys' in the sense that they refuse to even consider changing platforms. And that's DHH's point. If you're too stubborn/blind/whatever to keep up with the times and move to new and improved tools, then we don't want to hire you. And by the looks of it not many people on this blog will ever be considered for 37signals (or other modern software companies) jobs :P

thedude on February 28, 2008 7:01 AM

Metablogging and personal insults. Eww.

J. Stoever on February 28, 2008 7:01 AM

I guess I didn't take it the way everyone else did. He's looking for OSS true believers for his hires. Perhaps he could have phrased it less insultingly for everyone else, but for the people he's trying to hire this will go over better.

But mostly I agree with him. If I had my total choice, I'd probably be using Linux for my software development. Nothing against you guys that prefer Windows, but you clearly don't share my priorities and values. David's either, apparently.

I do agree with Jeff's quibble about the Mac though. If I'm going to go out of my way to free myself from proprietary software platforms, why on earth would I proceed to tie myself to a proprietary hardware platform? Perhaps if it was cheaper I could see the logic, but its not (and never will be).

I liked the video game story, but as an analogy it stinks. Presumably the game designers tried (even if they failed) to balance the characters. Pretty much the opposite happens with computing platforms. Microsoft purposely gimps theirs, so you have to pay them extra for things like compilers, webservers, file server functionality, etc. The Linux folks work hard to give you everything your geeky heart could desire, and then some. So the two platforms are not balanced. I'd be more like playing the arcade game with a faulty controller where only one of the buttons worked and some of the stick directions had a short (we've all been there, right?). Sure, an uber player might still be able to win. But a true gamer would be frustrated by not having all the options available to them.

T.E.D. on February 28, 2008 7:09 AM

«Back | More comments»

The comments to this entry are closed.

Content (c) 2012 . Logo image used with permission of the author. (c) 1993 Steven C. McConnell. All Rights Reserved.