views:

856

answers:

10

Are there any technical benefits to Windows/Microsoft as a platform to use while developing, over a Unix dialect such as Linux or Solaris?

I know that companies choose Microsoft at times because there's simply not enough programmers available that know Unix, or that these programmers are much more expensive to hire.

So assuming all developers knew Unix and Microsoft equally well, would there still be cases where you are better off developing in Windows?

+8  A: 

Just off the top of my mind:

  • .NET (even though mono is really great)
  • Visual Studio - probably the best IDE around
  • Excellent documentation (The MSDN Library is way much more developer friendly than man pages in my opinion)
  • Huge userbase (that's more like a business thing but still it is a very important factor)
  • Binary compatability (it's much easier to support 4-5 kernels and standard C library versions than the infinite number of combinations you can find in Linux distros)
DrJokepu
i think the question isn't about the target platform; but the platform used while developing. thus, only your second point would be relevant.
Javier
Javier: even if the question was about the target platform, I think you would agree that the target platform and the platform of development are not totally unrelated.
DrJokepu
A: 

I can give you a common arguments that Windows folks might make, though not one I necessarily agree with.

  • People sometimes think that Windows boxes at production time are easier to maintain and deploy. That is because there are a lot of visual tools available to the admin. Therefore they prefer .Net or a Windows-specific development language for easy integration.

  • If your customers or internal clients use all windows desktop computers, some would argue that its less legwork to do stuff with Windows servers. This includes stuff for Microsoft Office document sharing (i.e. sharepoint) or stuff with Windows File Sharing. Obviously its easier to write a .Net application to deal with such Microsoft-specific constraints.

I can't really think of any other reasons. The latter one is probably the most valid -- there just might be some microsoft-specific technology that is hard to integrate with unless you use MSFT development tools.

Ish
+3  A: 

One of the best things you can do is keep your options open. Chopse a platform independant technology and you'll be able to have software for any O/S or implementation. From a technical standpoint, this makes a lot of sense as well as from a business one.

As for specific technical advantages to the Windows platform, other than the large developer community and development information store and widely supported IDE's like Visual Studio, I'd say you'll be hard pressed to find one. Even there, Eclipse can do just as good a job with a platform independant technology.

Mat Nadrofsky
+6  A: 

To me there's only two arguments for using Windows as a dev platform:

  1. You have to because you're doing .Net/Windows development (or because the company simply gives you no choice); or
  2. The apps, specifically Microsoft Office/Exchange. I'm sorry but OpenOffice is dreadful in comparison to Word/Excel.

Apart from that imho Linux has every other advantage including:

  • MUCH faster filesystem (particularly important when dealing with lots of small files). Last year I went from a build time of 8-10 minutes to 2-3 just by this switch (ant build of same code base);
  • Typically your dev environment then matches your production environment (if you're production environment is Windows your dev environment will be Windows almost guaranteed), which can be useful. We've had issues with Java classpath visibility because of differences between JBoss on Windows and Linux; and
  • A much better set of command line tools (yes I knwo you can use Cygwin, etc but it's not as good).

That's one reason why I find the idea of a Mac as my next dev workstation so appealling: you can look it as either Unix with applications (ie Office) or Windows with a decent filesystem (will be even better if/when OSX adopts ZFS), either way it's a win. The only thing that's really put me off is that Apple does stupid things like delay Java 6 release by a year just so they can put the Leopard Look and Feel in.

cletus
+2  A: 

Microsoft systems tend to have much better integration between different parts - there's a lot less heterogeneity to worry about if you're using binary-only software (x86 and comctl3d is a lot easier to support than everything *nix runs on).

The learning curve on Windows is shallow to begin with but has a longer overall distance. On Unix/Linux the beginning is a struggle but getting stuff done becomes easier later on, when the inner workings of the OS begin to make sense.

At least that's been my experience with them. Windows for quick payoff, Linux if you're going to be doing something much longer-term. And virtual machines if you can't decide :)

Ant P.
+2  A: 

One reason we have Windows development platforms (even though our production is on Linux or Solaris) is common environment for all.

That means all the different populations involved in the realization of a softwares:

  • are not all developers (business, functional people are also concerned with a working environment)
  • are all on the same platform (Windows)
  • use all the same tools to write/communicate (as in Word, PowerPoint)
  • can have their same environment on laptop

In short: uniformity of environment for all (developers and non-developers alike).


The other reason is depreciation: it is easy to manage depreciation for PCs, where the services are lighter than a full-scale Unix server (like a Sun Fire, a F15K or F50K, ...): the latter needs some expensive assistance service contracts (like "bronze", "silver" or "gold" depending on the level needed). A PC is easier to fix/replace, and is not as critical is a developer "mess up" on it and crash it utterly ;)

That being said, the downside of this is you do not change PC every day: it means managing a large parc of desktops, you cannot just decide to upgrade like that (and that goes for Os too).

So where the other answers are all about "virtual machine" whereas your set of PCs is from 2003, with only 40Go of hard-drive and 1, may be 2Go of memory..., you realize "virtualization" is not always an obvious solution.
Hence, some Unix "integration" server are required for developers to test their products in an environment closer to the target. In a way, this is better, since those integration servers are managed in a uniformed way, avoiding the syndrome of "it works for meTM", as opposed to virtual machine, where each developer is the own root/administrator of one's own little world/server ;).

VonC
A: 

Peripheral reasons for some specific kinds of development:

  • you need to see how things look in both firefox and explorer
  • you're working with flash (which AFAIK you can't develop on linux, and the players are terrible).
  • you're working on a project that involved MS office integration
  • you're office has some godawful mail or notes system that you can't log into any other way. ditto for some vpn setups.

I consider all of these things to be regrettable.

Steve B.
+2  A: 

I think this question presents a false dichotomy. There's no reason you have to choose windows over unix or vice versa. Virtualization is free and easy. It's the best of both worlds!

Jason Baker
this is especially true about the 'have to test for explorer' issue. develop on *nix for FireFox/Opera, test in a VM with IE,Safari,Chrome,FireFox,Opera.
Javier
A: 

Why not use both?

In either scenario, you could use a virtual machine in either Windows or Linux/Unix for basically nothing using Virtual Box or Vmware player. Or you could remote desktop/vnc to the other platform from your development box. If you develop in .net you would probably be better off on Windows for dev. If you develop for LAMP, either Windows/*nix would be fine.

jimiyash
A: 

give me apache mysql (ok postgres in a pinch) php and eclipse .. who cares about the OS ..

Scott Evernden