Friday, June 1, 2012

Is the Windows dev environment worth the cost?

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).

Source: Tips4all


  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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!

  7. 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.

  8. 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.

  9. 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!

  10. 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.

  11. 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.

  12. The cost of setting up a dev environment in Windows does not have
    to be so great.
    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

    *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.

  13. I'm going to do my best to be objective here. Let's start off the with some background. I do some occasional VBA and VB Script work, but that is pretty rare. I haven't worked with the more recent MS dev stack, but worked with it a few years back. Since then I made the transition to working with PHP and Ruby on Rails primarily. I do it from Windows because that is what I am familiar with. I have talked to a TON of people who are doing stuff with Ruby on Rails and PHP over the last couple of years and one thing that strikes me as a pattern is the fact that it is rare that I encounter a C# or VB (.net) developers on the street. When I do it is usually someone who is not that good. Maybe this is a regional thing. Maybe .NET people live inside 9-5 developer caves and only come out at certain times of the year. I don't know why it is, but it is. The fact that .NET people, especially good ones, are hard to find is a cost that nobody on this thread has discussed yet. Someone did make mention to the fact that people who are dependent on IDE's for development might not be the best people out there which supports this somewhat random hypothesis.

    Don't get me wrong - I'm not supporting PHP or Ruby on Rails as the end all be all. All I am saying here is that the people cost is a big one. If you are working with tools that are preferred by the people who are arguably not always the sharpest ones in town then the benefits of tools may be less relevant in general. If you have a larger team then the extra cost of the tool set might be better spent on a more competitive bonus or salary for people on the team. Again, this supports the idea that you want the best team you can get first.

    All of this assumes you have a choice of what you are doing from the onset. If you don't then there are some really good tools put out there by the MS dev community that are very useful. There are also tools like VMWare Server that balance the Windows/Linux divide. A smart team armed with good tools will get the job done well.