views:

1434

answers:

12

I recently made the move from Linux development to Windows development. And as much of a Linux enthusiast that I am, I have to say - C# is a beautiful language, Visual Studio is terrific, and now that I've bought myself a trackball my wrist has stopped hurting from using the mouse so much.

But there's one thing I can't get past: the cost. Windows 7, Visual Studio, SQL Server, Expression Blend, ViEmu, Telerik, MSDN - we're talking thousands for each developer on the project! You're definitely getting something for your money - my question is, is it worth it? [Not every developer needs all the aforementioned tools - but have you ever heard of anyone writing C# code without Visual Studio? I've worked on pretty large software projects in Linux without having to pay for any development tool whatsoever.]

Now obviously, if you're already a Windows shop, it doesn't pay to retrain all your developers. And if you're looking to develop a Windows desktop app, you just can't do that in Linux. But if you were starting a new web application project and could hire developers who are experts in whatever languages you want, would you still choose Windows as your development platform despite the high cost? And if yes, why?


UPDATE: I did not intend to start any arguments. And I gained some valuable insights from the answers/comments:

  1. The cost of setting up a dev environment in Windows does not have to be so great.
  2. The cost of the dev environment is really just a drop in the bucket when compared to the cost of the developers themselves. (This doesn't help a small startup or a freelance programmer, though).
+2  A: 

You're mixing two questions here.

If I was spec'ing a new project (for myself), would I go with the Windows platform?

As a target? Yes. As the development platoform? No.

If I was spec'ing a new project (for myself), would I choose C# as my language?

Yes. Most definitely. The Mono project has a great set of tools that you can use to build Desktop, Silverlight, and Web applications. The web apps run inside of Apache, so you get to stick with all the common Open Source tools.

If you do things right, you can even use Mono on Linux to target Windows clients for a Desktop application (using the available subset of Windows.Forms that Mono includes).

If I was spec'ing a new project (for a company) would I choose the Windows platform?

Yes. The productivity gained is worth the extra cost. Microsoft also has several programs like BizSpark that are targeted at reducing the entry cost to development on the Windows platform.

Justin Niessner
Do you have any knowledge of how complete Mono's WinForms implementation is?
Tim Coker
@Tim Coker: Mono's WinForms implementation is basically complete. Many third-party components will however fail because they rely on Windows-specific behaviour, like specific messages or window styles which are not available from .NET. For SWF-only applications, it should be fine.
OregonGhost
+4  A: 

Taking Windows 7 cost a side, you can use Visual Studio Express, SQL Server Express to create your applications. Of course this version has less features than the "bigger" ones but has the compiler, IntelliSense and many other stuff that makes a solid option.

Since you mentioned Blend, I think you are interested working with WPF, I don't think the Mono alternative is completely mature.

Markust
If I recall the EULA correctly, you're not allowed to develop commercial applications using the Express versions of the toolset.
Anna Lear
@Anna: Express editions allow commercial development. Trial, beta, and any editions under a student license (IE Dreamspark), don't. (If *I* recall the EULA correctly - my company looked into this all not too long ago.)
Daniel Rasmussen
@Anna Lear: This was allowed for the 2005 and 2008 versions. I can't currently find it on the international site, but on the German site, it says for the 2010 versions (translated): *"Can the express editions be used for commercial projects? - Yes, without limitations."* I'd expect this to be true for international editions as well.
OregonGhost
@Anna - I think you're misreading something - I've been told on numerous occasions by Microsoft people that you can do pretty much anything you want with the code developed using the express editions. I don't know for sure, because I've never worked with them myself, but every MS conference that gets brought up and their speaker always says the same thing.
Charles Boyung
Ahh, I stand corrected then. Thanks for the clarifications.
Anna Lear
+1  A: 

Debates about the quality of the result aside, you'd have a much easier time filling the developer positions on a new startup with people who are used to working with VS as opposed to developers comfortable working in Linux.

Tim Coker
+16  A: 

Microsoft offers lots of express editions of Visual Studio and SQL Server that are free of charge and may even be used commercially. In programs like DreamSpark, students can download e.g. Visual Studio 2010 Professional (full edition!) for free, so it is not said that you need to pay hundreds of thousands to develop Windows applications.

Other IDEs like SharpDevelop are available for free, too, but they are not nearly as terrific as Visual Studio. However, even when using the express editions, one can be very productive.

The MSDN library is free of charge, too. I cannot say whether the Telerik controls justify their costs as I have never felt the need to use them.

Marius Schulz
"In programs like DreamSpark" don't forget BizSpark: http://www.microsoft.com/bizspark/
R. Bemrose
I use the express edition of visual studio at home for all my personal projects, and the "Ultimate" version at work. I find that as far as coding productivity goes the express versions are good enough for almost everything. There are a few really cool tools in the more expensive versions but for the most part you really need to commit to the Microsoft way of doing everything in order to use them.
Jonathan Park
@R. Bemrose: Yes, you're right - this is the second program I know of ...
Marius Schulz
+1 DreamSpark. Good idea by MS - I would likely be using Java + Eclipse otherwise
Callum Rogers
+7  A: 

The cost might not be as high as you think (depending on a lot of factors). There is the BizSpark program, and there are also 'express' versions of Visual Studio, SQL Server, etc, available.

mgroves
+1  A: 

The cost of getting a Windows development computer setup is not that great in the grand scheme of things. Say it costs $10,000 (probably too high)( to get all of the software compared to $0 for an open source setup (assuming the cost of the hardware is the same). I would say your choice would depend a lot more on the developers you could find. If your project manager is familiar with and prefers Windows, wouldn't you rather spend the extra forty or fifty thousand dollars (assuming a team of four or five) to get something he/she is comfortable with? Compared to their salaries and others costs of employment, $50K is not a lot. Obviously that would change if you didn't have the money to invest.

Not only is $10,000 far-too high, but $0 is too low. As JWZ said, "Linux is free if your time is worthless."
Adam Crossland
@Adam: The JWZ quote obscures the fact that Windows takes time to maintain too. (Debates over which platform is easier to maintain are too OT to pursue further here.)
Josh Kelley
@Josh, absolutely true on both points.
Adam Crossland
+4  A: 

I have been a full-time .NET/C# developer of desktop and web applications since 2002, and of the pricey items that you list, the only one that I have ever paid money for as a professional deveoper is Visual Studio.

The cost of a current version of Windows is virtually inseparable from the cost of a new PC. SQL Server Express is free and is absolutely sufficient for virtually all development-related database needs. Don't need or use Expression Blend. ViEmu? Not a chance I'd pay for something as awful as vi. I've been able to get by without every using anything from Telerik.

Buying a copy of Visual Studio is far from an extraordinary investment in tools when one considers the productivity gains.

Adam Crossland
+2  A: 

I think this is a great question! Mostly because you asked it without being judgmental. Here are some thoughts from me:

Visual Studio and all of the tools are quite good. It is quite expensive but there are programs from Microsoft which can help with those costs. For example, in a smaller shop you might consider a TechNet subscription. Or one of the many small business helper programs from Microsoft like BizSpark.

Many .Net developers you hire will ask for or require Visual Studio and for good reason! They have used it for years and they are comfortable with it. So be ready for that. Not everyone will be that way but most will be that way. They know their tools and they use their tools.

That being said c# and .Net development is still just text :) I personally use VIM for my .Net development because I felt that a lot of the tools in Visual Studio just got in my way. I have had some bumps with that, I still use Visual Studio some of the time, because it has something I need. This is a great resource I use: c# with Vim Blog posts

So I would say try it both ways and be open minded :) it's a great language and a lot of fun to try.

Tim C
Thanks for the link. I knew it was theoretically possible to do C# development without using VS, but didn't realize there are people actually doing it!
MCS
Quite often actually. Although I will admit that my reason for not using Visual Studio is not cost. It is entirely for speed purposes and the change from one IDE to another. I use a number of languages (c#, C++, Python, PHP, Java) and with vim I can program in all of them without moving my brain patterns from one IDE to another. Also, VS gets a bit heavy, so it's slower sometimes, and I don't like to use the mouse quite so much. The cost has never been an issue for me, but I can understand that for a start up!
Tim C
+14  A: 

The cost of the tools is tiny compared to what you spend on the developers themselves. For example, most of the tools you've mentioned are included in Visual Studio Professional with MSDN, which runs about $800/year.

The real question, then, is whether you get any benefit from that cost. That's harder to answer, and I suspect depends on your developers and what kind(s) of software you develop. As such, it's impossible to give a blanket answer. Nonetheless, from the employer's viewpoint there's hardly enough difference between the two to notice.

Jerry Coffin
+1 for buying an MSDN license. This is a huge win for anyone doing professional .NET development.
Adam Crossland
+3  A: 

Well it always depends on your projects specifics but to the extent that it doesn't no, probably not for a web app. There's plenty of people out there who can code HTML/CSS, Javascript, SQL and at least one of PHP, Python or Perl so devs should be reasonably abundant. There's a whole bunch of frameworks, libraries and free code for each and you can use them all in any combination you like for no dollars down, no dollars per month.

As far as IDEs go if you're considering hiring web and web app developers who are uncomfortable working outside an IDE you're probably looking in the wrong place for developers. If you can't live without an IDE then Eclipse is OK assuming you have some pretty well specced dev boxen but I have to say the best code ninjas I've encountered all use either emacs or vim!

Also it's nice to code on a system with unlimited virtual desktops and a proper command line. Having said that I hear MS have made some progress with these in the last couple of versions so they may be more aligned now. I'd be loath to start coding a big project on Windows without making sure there were good builds or equivalents of tail, grep, systemtap/dtrace etc available though.

Funnily enough though the last web app I had to do was mostly in Windows as it was Flash based. The flash IDE was pure pain but thankfully most of the donkeywork was in the classes so I got to use the lovely Notepad++ for the bulk of that, anyway that's not really relevant to our discussion on the worth of the MS toolchain so I'll move along!...

Top tip if you're developing on Windows after working on Linux make sure to install Kat-Mouse and an "Always-on-top" program like deskpins or you may quickly end up defenestrating your dev machine!

+1  A: 

To answer this question, which is a worthy +1 from me, in recent years the Microsoft developers stack has reduced in cost with the advent of the Express editions since after Visual Studio 2003, we're talking about Visual Studio 2005, this is where the Express editions started appearing to increase penetration of the Visual Studio to a wider audience, using a bare bones version which gave the wider audience a much bigger appreciation of learning the Visual Studio environment and reflected in the professional trade.

Now you can subscribe to Dreamspark if you are a student and avail of the professional version provided your student id checks out. Likewise the same for businesses using the BizSpark programme for businesses who wants to roll out a Microsoft platform onto the internet.

Your question more or less focuses on the extras outside of Visual Studio, Note, I am not talking about MSDN (in fact, that is an extremely vital part to have as it is a gem of a minefield of knowledge, know hows etc - that is now freely available) which boils down to this - use only the tools to get the job done first! No point for a professional developer starting out on these extras as they hardly make a real difference, not alone that, hitting their wallet and bank account very hard which is all the more a futile exercise!

Those extras you're talking about here, those extras such as Telerik and so on, lets get one point straight, sure it may add a pretty face to your app, but who cares? As long as you use the Visual tools to draw up the interface, add event handlers, add logic, test it and debug it, you will realize that those extras are not really worth it, even the end-users are not going to care if it has a pretty eye candy of an interface, as long as the end-users gets the job done simply and efficiently.

Now, over the last few years we have seen Mono's strength grow and conforming to the .NET 2 standards, I am not a preacher for Mono, have seen it and tried it, sure you can splice up an app to use Mono running on Linux, perhaps a back-end that communicates with MySQL, that relays results to a simple Windows forms, let me emphasize the words, you as a developer would have the choice and freedom to do so. Perhaps, work on that as a part-time thing outside of working hours, to investigate and learn. Sure, WinForms is somewhat reasonable on Linux, but just do not rely on Win API calls as that will produce undefined and unexpected behaviour in the context of a GUI application, if its a pure WinForms with no DllImports, the chances are good that it will work under Mono.

Of course, you are not necessarily tied to the Visual Studio platform when there's SharpDevelop, MonoDevelop, Mono for Windows available at your disposal, you need to think long and hard and see if it's worth it at the end of it all, no harm, in using the Visual Studio Express edition to do so, or even use SharpDevelop either.

Put simply, investigate your choices as long as you use only the tools to get the job done!

tommieb75
+1  A: 
  1. The cost of setting up a dev environment in Windows does not have to be so great.
  2. The cost of the dev environment is really just a drop in the bucket when compared to the cost of the developers themselves. (This doesn't help a small startup or a freelance programmer, though).

You are getting there, but I don't think you really have the picture yet:

*1 Visual Studio Express editions are free for commercial development. VS Express may be called "Express", but they are better IDEs than anything I have been able to find in the Open Source community (for my needs, at least). There are a lot of other free tools too, so you can work around several of the limits of the express editions (for instance, source control is not integrated, but it's just as easy to setup a Git repo in your project's folders)

If you want to keep working with open source IDEs for C# on Windows, you can use SharpDevelop or MonoDevelop (There is a windows version), but I find both of them to be inferior to the VS Express editions. (Haven't checked in a while though, things could have changed).

So in actual fact, setting up a basic Windows development environment is not cheap, it's free.

I am a regular guy working on small projects in C#. The Express editions filled my needs pretty well and I am now considering the full versions using BizSpark https://www.microsoft.com/BizSpark/Startup/Signup.aspx

*2 What you are missing here is BizSpark. BizSpark is Microsoft start-up initiative. If your start up is less than 3 years old, generating less that a million $ in revenue and privately held, Microsoft will give you downloads of a full Windows Development environment, including almost everything (VS Pro, all SQL versions, MSDN premium, Vista, XP, Windows Server, Ms office, SDKs...and they even throw in a bit of free tech support). This lasts 3 years. When you exit the program, you have to pay $100 and you get to keep everything, except for the subscriptions. (Also, the license for non dev products allows only for usage as part of the dev process, not for regular usage)

In other words, if you are a small start-up, you get everything and it will cost you $100 when you exit the program.

Developing for Windows is not an expensive proposition at all, and the tools are excellent. Microsoft may be a lot of things, but stupid isn't one of them. They know that their business depends mostly on the development's ecosystem and they have made it very easy for people to develop for Windows.

Sylverdrag