Thinking about Windows programmers

IT Conversations | StackOverflow | Episode Seventeen.

There’s a website for CSS and HTML called “Don’t meet your heroes“, which has always been one of my favorite website names. This podcast always makes me think of that phrase. I really like Coding Horror, which is Jeff Atwood’s blog about programming. It’s great, even though I don’t always agree with him. But now he’s doing this podcast about a website he’s building called StackOverflow and listening to him, he keeps losing cred with me. He’s a Windows programmer, which earlier in my life I equated with brain damage. I’m a lot less judgmental now, especially since my wife has done a lot of Windows programming, but I’m still biased against Windows if I’m honest. The problem with Jeff on this podcast, especially this particular episode which is the “Developer Episode” where they talk nuts & bolts about StackOverflow, is that the things he’s discovering are really old hat to anyone who has done development on Linux (or anywhere but Windows I imagine). I can’t tell if the Windows development environment is really stunted from basically having one IDE, Visual Studio, and the related tools from MS, or if he and his team don’t pay much attention to programming practice.

They’re really surprised about continuous integration using Cruise Control versus the MS tool which apparently requires you to install Visual Studio on your server (!!!). They all seem to be new to the very idea of MVC (model, view, controller) programming, which has been pretty standard for years, because MS is just now coming out with their approved MVC product/environment. Jeff talks about LINQ like it’s the only option for not putting SQL directly in your code, despite various ORM tools and similar things being around for quite some time. They do use nUnit, which is the .Net port of jUnit, so they do have that going for them.

But don’t even get me started on Jeff’s decision that writing tests somehow makes you less agile. Yeah, not having tests lets you write crappy code much faster. Great!

Now, I have no doubt that all 3 of the guys on the StackOverflow team are much, much better programmers than I am. Even without seeing their code I would venture to say I know they’re better than me. No slight to them personally, at all. At all. But I can’t tell if the lack of knowledge of what I consider basic standards is them or their environment and that’s bad. I guess if I’m a Windows shop and I come up against somebody who has never heard of MVC, that’ll be fine since I won’t have heard of it either. But if I’m used to people who think MVC and continuous integration and unit tests are given parts of good projects and I come up against people who only have experience with Windows stuff, they won’t seem like they’re as experienced. And I’ll have missed out on good programmers, most likely.

On the other hand, Joel Spolsky is a Windows programmer and well, he’s Joel freaking Spolsky. He and many others are probably existence proofs that I have no idea what I’m talking about.

Are Windows programmers missing out on so much good stuff because they don’t pay attention to the tools used by other programmers? Java has a rich environment of tools by many, many different parties. I have 2 different static code analyzers (just for an example of a totally niche product) in Eclipse (1 of 4 really nice IDEs for Java) telling me about bugs in my code. Does Visual Studio have anything like that? I can think of 3 different continuous integration tools. It seems like if they paid attention to other programmers’ tools, MS would have to provide more than they do or the environment of 3rd party tools would be a lot stronger.

I’m not sure what the point is of this post, I’m just trying to figure out how somebody who obviously knows a ton about programming misses out on so much of what I (and others) would consider very basic ideas. I don’t think it’s just that there’s stuff about .Net programming that I’m missing out on. I read a lot about programming in a lot of different languages and it really just seems like the Windows development ecosystem is missing a lot of things because Microsoft hasn’t put whatever-it-is out in a box with Visual Studio. Jeff even talks about using some 3rd party code diff tool, for pete’s sake. How can you use an editor to work on code with other people without a diff tool and source control built in?! I still like Jeff and Coding Horror and I’m sure I’ll love StackOverflow from what I’ve seen of it. I guess I’m just going to have to accept that different environments can produce different kinds of programmers. Smalltalk people are probably laughing their asses off at my I consider my toolset so it’s all relative.

If you’re a Windows programmer, I’d love to hear more about working in that environment in the comments. Thanks in advance.