7 ms·
Ask HN: Why is .NET often avoided in the startup world?
I am a devops who love to explore almost any platform in which I enter in contact and, for this and others reasons, I ever prefer to work in a startup environment and not in a corporate one.
So in the last months i was exploring for my first time .NET using c# and, wow, it's an amazing platform! Then I started to look for a job in a startup in which I could learn it better and with more motivation but... it seems no one is using it. I also looked for some startup based on mobile platforms thinking that, thanks to mono, someone is starting to use xamarin products to target the three main mobile os (android, ios, wp) and share some code. But it seems also in the startup world they prefer to have a team for each language/os rather that using that solution.
So, after a month of research i am curious to get the real reason behind it. It's because no one like Microsoft 'cause it seems no cool? License costs? Support? Community?
I would like to hear your opinions
edit: I forgot to say that, in contrast, in the corporate world, i found a lot of jobs in which .NET is used. Almost as many jobs as those who require java knowledge.
- aespinoza 13y agoWe are using it. We love C# so much we built a platform around it. But as a startup owner, .Net gets expensive because of the Windows dependency. And even thought mono is out there to run C# on Linux, the company behind it (Xamarin) only cares about Macs and Mobile right now. The ecosystem for Mono is also not there, meaning that most solutions focus on favoring other frameworks like Python's Django, Ruby on Rails, etc. People prefer to invest more time in open source frameworks and platforms, specially in the startup world. In other words, it is easier to create startups in frameworks that have a rich community and focus on open source. It is not easy (not impossible though) to create a startup based on a technology that is limited to one platform, specially when that platform is expensive to operate.
- twotwotwo 13y agoSo here's an idea: it's in Microsoft's interest to buy, or clone, Xamarin, and make it work on WP8/Metro as well. That's because, frankly, platform lock-in is killing Microsoft's chances now that they're the distant third-place touch app ecosystem, for the same reason it helped them as the strong first-place desktop OS. App makers will target the top platform or two, and only those, as long as it's much extra work to go broader. Solid, free-as-in-beer tools to target WP, iOS, and Android all at once make it less work to support WP so more devs will do it. Having built or acquired the tech to run .NET off Windows, maybe they should release some more of their ecosystem to make it viable for more startups to use .NET. Someone small using some free compilers/libraries and MySQL may eventually be a prospect to buy VS and SQL Server. (And whether they ever sell these startups anything or not, folks releasing .NET libraries make the ecosystem more attractive.) Who knows; they decided Azure should support Linux and Office should be on every platform, so anything's possible. Times have changed and maybe the argument for closing off ("fully integrating") their dev ecosystem is weaker now.
- aespinoza 13y agoHonestly, that would be amazing. but I think Microsoft right now is too focused on their own stuff, even more than before. Windows (including Azure) and Office is their focus. .Net seems to be wandering off a bit.
- yulaow 13y agowell if i remember correctly in the /build/ of this year I saw a part in which some of the microsoft staff were talking about xamarin and the integration with visual studio. At the same time the CTO Miguel De Icasa is a microsoft MVP. So maybe the idea of buying them is not so strange.
- groundCode 13y ago>>maybe they should release some more of their ecosystem to make it viable for more startups to use .NET. Someone small using some free compilers/libraries and MySQL may eventually be a prospect to buy VS and SQL Server And there's the thing right there - I don't think Microsoft really cares much about startups - after all, the success rate is fairly low for startups and it probably doesn't seem worth it to them to "invest" in businesses that are, more often than not, going to fail. Putting their marketing budget behind large corporations and governments is far more lucrative for them.
- junto 13y agoCough... http://www.microsoft.com/bizspark/ http://www.microsoft.com/bizspark/
- electrichead 13y agoThere are quite a few startups that use MS but they are largely using it because of the bizspark programme. I think it is largely to do with cutting costs and thinking down the road. It also possibly has something to do with the type of person that decides to branch out to working in a startup - its my opinion that vested .net developers are more oriented towards working in the enterprise than in a startup.
- aespinoza 13y agoYou have a point to a certain extent. I think the biggest problem is that when you look into launching your startup, you become more practical and some of the disadvantages of .Net push the advantages out far. I know a lot of .Net developers that do launch their startup, but they prefer to learn a new framework and platform if it is cheaper to operate. Basically my point is: It is not a type of person that decides to branch out to work in a .net startup, it is about accomplishing a goal without focusing on technology.
- mataug 13y agoIt is mostly because of the ecosystem, due of the proprietary nature of the .NET Framework not many are willing to put in their personal time to build libraries and other supporting software around it which results in the lack of any real community. Most startups today are well connected with some community or other and to them .NET is mostly invisible. On the other hand if a person from an enterprise builds a startup and if they have a .NET background that is when they try to get into bizspark.
- speeder 13y agoFunny, and I was wondering why so much people still insist in using .NET ... Personally I avoid .NET like the plague, after learning it first of course (not for servers, I don't do server side stuff) because of its horrible windows dependancy, and mono is NOT a adequate substitute.
- aespinoza 13y ago.Net is amazing, you really should check it out more. But I do agree, the dependency on windows is really killing it. And mono is definitely not an adequate substitute in the current state of things. I would to see Xamarin push for .Net on the server more, than just Mobile and Mac. Maybe that is something we should do, as our product is full .Net in the server space.
- _random_ 13y agoSimply because C# is the best modern C-derived language. And Visual Studio is the best modern IDE.
- Zigurd 13y agoAbout 13 years ago I was writing mobile apps in C# with a toolchain that didn't crash as often as Eclipse and, at the time, ran about 20X faster, and I was running those apps on a device with something like a modern smartphone form factor, although the phone was separate, and using a real-ish browser, over GPRS, with Windows CE and NETCF. It's not .NET technology that sucked in the years between when I was doing that and when Android was released. It was the failure to capitalize on .NET in mobile. WP8 still isn't as architecturally elegant as Android. Android's userland is all based on instances of the Dalvik VM. The CLR does not play that kind of central role in WP8.
- HillRat 13y agoLicense costs are definitely an issue -- at the enterprise level and in regards to internal development, there are strong institutional biases towards MSFT for a variety of reasons (the key driver being that all your employees have Windows desktops, so adding Windows servers, SQL Server, SharePoint, etc. isn't much of a leap). Second, .NET is generally seen as a heavyweight technology that slows development (the MySpace guys are still flogging that dead horse). Anyone who experienced multi-megabyte pagestate data with ASP.NET is probably going to be extremely gun-shy, especially since everyone these days starts out trying to build "web-scale" apps before they get their first ten customers. But Stack Overflow proves that you can build huge, responsive, hyper-trafficked sites on MVC. Having said that, C# is an absolute beaut of a language; the library support infrastructure is top-notch; NuGet has filled most though not all of the roles performed by Maven, &c.; the MVC* frameworks are a joy to work with; and MSFT initiatives like SignalR are fantastic. As long as your pet technologies haven't been EOL'd by Server & Tools (cough Silverlight cough), then there's no technical reason not to use MSFT. (For me, there's definitely a productivity value -- whenever I have to drop back to pure Java from Scala or C# I feel like I'm trying to run through waist-deep mud.) The licensing costs are still a significant problem for any startup (especially since MSFT is crippling lower-priced versions of SQL Server these days), but if you're a startup the BizSpark program goes a long way to ameliorating costs for a few years. Perhaps more serious is the fact that many of the key infrastructure projects such as NoSQL data stores treat their Windows forks and .NET bindings as second-class citizens at best, and running them on Windows always feels a bit ... precarious to me.
- AznHisoka 13y agoFor me, it's not .NET that I want to avoid, but Windows and other Microsoft technologies. I feel much more productive hacking in an Unix shell. Simple things like grepping is a burden in Windows, but an ease in Unix.
- staunch 13y agoIt has numerous major disadvantages (expensive, proprietary, closed-source, lock-in) and virtually no advantages over a number of other open source technologies. I suspect there are very few people who have extensive experience on both sides of the fence and would choose the Microsoft route for their own startup/company. It tends to be almost exclusively people who lack experience with open source alternatives.
- jamespcole2 13y ago100% agree, I have extensive experience with both and I would never recommend .net to anyone. Unfortunately many of the larger companies I do work for will only use it. In general the SOE of an organisation is usually defined by non-tech people and "no one ever got fired for recommending microsoft". So I find that these larger organisations are hobbled by using sub-par tools, hopefully this will change in the next 10 years or so though.
- dpmehta02 13y agoHiring is also a consideration. Young, talented engineers often pick the latest "trendy" language/framework as their first, so if you're starting a company and want to hire young talent, you will be at a disadvantage if you don't use Node.js, Rails, Go, etc.
- ayers 13y agoThe startup that I work for is built on .NET using C# and ASP MVC. Licensing costs were not a barrier/concern as we were part of the BizSpark[1] program. This gave us free access to all the Microsoft software we needed. We only recently graduated out of that so it will be interesting to see what affect that has on some of our future tech decisions/directions. Visual Studio is an amazing IDE and C# is a top notch language. The price you pay for that is worth it and shouldn't be an issue for a profitable startup (which you should be by the time you graduate the BizSpark program). Like others have said, the bigger issue is that it ties you down to all the other Microsoft licenses such as Windows server. I know of other startups that are using C# and .NET and run a mix of Windows and Linux(Mono) servers. This has forced some decisions for them though, such as rolling some of their own frameworks/tools that work nicely with Mono. [1]: http://www.microsoft.com/bizspark/ http://www.microsoft.com/bizspark/
- jister 13y ago>> it seems no one is using it or maybe you're just looking in the wrong places like, for example, here in HN? Here is a list of startups using .NET: http://www.microsoft.com/bizspark/partners/Startups.aspx http://www.microsoft.com/bizspark/partners/Startups.aspx
- hkarthik 13y agoSimply put, because Microsoft lost two generations of progammers; first to the web and then to mobile. These are the platforms of choice for most startups today. A programmer in his/her early 20s back in 2007 might have cut their teeth on PHP, while the same age programmer today may have hacked on Android or iOS. Both are familiar with using Macs or Linux and open source tools that work with both. I spent years only writing .NET and the tooling is pretty incredible. But when I switched to open source the first thing I noticed was how quickly I went from being the youngest guy in the room to being one of the oldest.
- knocte 13y agoThis has already been discussed in the past [1], and most people agreed that the reasons are bullshit because, yes, Mono [2] is alive and kicking. [1] http://www.aaronstannard.com/post/2010/07/03/NET-Culture-Shock-Why-NET-Adoption-Lags-Among-Startups.aspx http://www.aaronstannard.com/post/2010/07/03/NET-Culture-Sho... [2] Not Xamarin.
- knocte 13y agos/Not Xamarin/Xamarin too/
- sahil_videology 13y agoI worked for a start-up that was a Java shop. A .NET shop acquired it. Our new big projects are moving away from .NET and to Java on Linux to avoid the Microsoft licensing costs. We use hundreds of AWS instances, and the extra cost of Windows instances adds up. Personally, I prefer not using Windows simply because I love using the *nix shell, and I don't see the point in using something like Cygwin when I don't need the MS stack. However, Outlook on MS365 is quite good.
- rektide 13y agoI get a kind of jQuery feel from .NET, but I haven't been following along for 9 years. By jQuery feel, I mean a fairly uneducated developer base that is happy to be well served by rote practice and already-engineered tooling. It's not an engaging or creative work environment, it's a get things done world where you kind of wade through "solutions" until you cross paths with some existing code that does whats needed, and use that. There's a bazillion people around all kind of muddling through with various backgrounds who pop up to regurgitate whatever tidbits they themselves have picked up. Both jQuery and .NET do a decent job of providing some componentizing, so you can pull stuff in without having to understand it. You certainly don't have to understand the target platform either: the web. RoR has a lot of similarities too in being a culture that remixes the available, and in hiding the real workings, within and of the target. Before losing my sense of place in .NET, I was heavily enjoying alt.net stuff, largely owing to Boo (Python-alike .NET language with fantastic metaprogramming, AST, macros). Rather than take the normal webstack with Boo, I was using CastleProject's MonoRail (Ruby Sinatra alike) + Jayrock (old+excellent JSON omnibus lib) and Spring.NET to build json rest web-services. For me, it was easier investing in my client side and web application skills than it was learning how to dive into the engineered WebForms and ASP.NET and prototype-era ASP.NET MVC work to make them exhibit the behaviors I wanted. It was a great environment to code in, I liked the toolchain I'd come to use, but it was far afield the large .NET world and I had only scattered groups of practitioners (in these various techs I'd elected in) to work with & no overarching place to for myself as a developer of this Boo+MonoRail+Jayrock+Spring.NET thing I liked doing and thought fine. I tend to believe ASP.NET MVC is probably in great shape by now and serves getting shit up very quickly. At the same time, I think culturally MS- alike jQuery, RoR, and let's throw in Apple- remains monocultural, with people invested heavily in fixed technologies that already define a huge amount of the experience and whose use won't port "out," (monoglot) and there's not a creative community base that celebrates those striving & seeking less beaten paths, the polymaths. The intellectual level of engagement is, in short, pretty shit, and the community is at end to help the far-ranging. Too many end-developers (end-users of dev kind), not enough well-motivated, working-for-it journeymen, and mastercraftsmen far removed and few between, with too few to sound out the practice with broadly and not situated for helping the weirder polymaths below experimenting with weird shit. Tall organization, huge fat base with low minimum bars to entry, and monocultural to boot: death. Or rather, undeath: sustained, undying yet no longer alive quite either.
- jamespcole2 13y agoHaving been a dev for 10 years, 5 of which were almost exclusively using .net and the other half using open source web tech I feel like I can add something to the discussion. I've recently got back into .net for a couple of recent projects after a few years away from it. First off c# is awesome, it's a great language. The main problem I have have with it is the clunkiness of the tools. Windows itself is pretty poor as a server OS and dev environment(IMHO), it's unnecessarily heavy, has too many useless features, is difficult to automate, and more. Powershell is ok but not really as simple/powerful/portable as bash. SQL server I guess is ok as a db engine but using it is clunky(again feature bloat really hobbles it). I find getting an environment set up with vagrant, capistrano etc. with windows much more complex than it needs to be. Also one of the really noticeable differences is the overall quality of the community. It's much harder to find good answers to problems when using .net/Windows than with other environments and platforms in my experience. In general I find .net devs more interested in maintaining the status quo than exploring new ideas and tech(massive generalisation but I'm sure I can't be the only one to notice this). Also nearly every tutorial about modern web tech is written for *nix environments as the general community support and interest in .net/Windows seems to be non-existent. An observation that I've noticed lately when attending tech events and conferences is that Windows just isn't even on the radar. It's not that people actively dislike it or openly criticise it, it's just not even considered or discussed, it's old tech, it's boring, it's clunky.
- joshanthony 13y agoI work in a startup that chose .NET for our product and admittedly we only did it because one of our developers had a lot of experience with .NET. I definitely wouldn't use .NET a second time, mostly because as a startup I value open tools and freedom. I started working in startups to get away from corporate bureaucracy. And now with hindsight I now know that "just because your dev has experience" is never a good idea to do anything. On that note - I'm working with PHP's Laravel framework for my next project, and despite the performance tradeoff it's an absolute dream to work with.
- krapp 13y agoWhat sort of project, and how bad is the performance? I've got a couple of things cooking with Laravel 4 myself but haven't finished anything yet. I'm curious about your impressions.
- joshanthony 13y agoI don't have any proper metrics but I can say it's not bad at all - only when compared to C# :P I built a small system for internal communication (sort of like a an internal twitter/facebook) I could not say enough good things about Laravel. It really is the future of PHP. The only issue I've had with it is in deployment - because of composer it's a bit fiddly - I ended up using the PAAS Engine Yard for testing deployment (and I will use them for proper deployment) because it was super easy with them (just more expensive).