Ask HN: Would a .Net back-end put off potential acquisitors?
I know the .Net tech stack very well, warts and all. I feel I could get to market quicker than if I were to build out using something JVM based or even node.js.
Would this put off potential suitors? My gut instinct is that it probably would to an extent, but I'm not sure it'd outweigh my personal advantage of experience. If it makes any difference, I am funding this myself initially.
So in your opinion should I bite the bullet or go with what I know?
102 comments
[ 8.1 ms ] story [ 69.6 ms ] threadYes.
Nancy+OWIN+Mono+nginx is a very good stack.
The new stuff (ASP.NET vnext) will be highly mono compatible and like the current OWIN stuff, entirely decoupled from IIS.
Should be a fun week!
I always liked C# but windows server for me is a complete showstopper, I'm too comfortable in unix envs for sysadmin/devops. Well also for desktop actually :)
We use C# for business logic (API). One of the first building blocks was to create an open framework for defining and running services that both compatible with .Net and Mono. We've been using that now for a quite a while. While VS is still our primary dev environment for the API, Xamarin Studio is becoming more and more appealing. One of the obstacles when developing with mono is that not all functionality is available or identical. It's of course always possible to contribute a fix or missing code, but sometimes it's just easier to work around it (once you know where the hole is). In production, everything runs on Linux and we use vagrant provisioned VMs to replicate the latest release locally. It works quite well for us now, but it took some effort.
That said, we chose this setup because we liked C#, not because we wanted WCF or ASP.Net. We actually don't like most of the heavy frameworks, including ORMs. Instead, use rely on HttpListener for web-services, PHP for HTML page composition in-front of the API and straight-up MySQL queries for all DB-related stuff. It makes it much easier to evolve a running system when you know what the bits do all the way down! Just my $0.02 cents.
Details here: http://blogs.msdn.com/b/dotnet/archive/2014/05/12/the-next-g...
It's all about the product and users.
Stackoverflow is built on .Net and nobody is questioning that now.
It could turn out to be an advantage that the others keep writing you off as 'destined to doom' because you are on the .Net platform.
There are of course licensing costs if you run on Windows and don't use MONO but these shouldn't really be an issue in comparison to all your other costs
Also there are a lot of ASP.Net/C# developers around (just look at odesk) which will help you build your team faster (unlike Ruby or Scala developers, which are great languages, just harder to recruit and also attract higher wages).
My advice... build a proof on concept as quickly as possible - if .net is your thing then use that vs. wasting time learning something else. The chances are that your concept may need to be reworked so why waste time...
Good luck!
Oh and the instrumentation and debugging past the bits of code you wrote and the .Net runtime core libraries is utterly horrible.
See some of my earlier comments about this matter.
I'd rather build on the JVM now thanks to tools like VisualVM and profilers that can be deployed across the team for free.
You don't want to be struggling to show hello world on a page with an unknown framework compared to building your actual product with a language you know.
I've written many projects in PHP and .Net.
My latest startup is all .Net and the right choice.
It's about making something people want -- even if you have to do it using clipboards, rubber bands, and duct tape. If they want it, you can figure out the tech later. That's the easy part. The hard part is connecting with people you can help.
It won't make a blind bit of difference initially but if you expand, so will tooling and deployment costs and investors don't like that. Anything that takes off the bottom line is a problem. Microsoft licensing, particularly dev tools and SQL is incredibly expensive and an order of magnitude more expensive on deployment and diagnostic time than anything else.
We're like that now. Our SQL licensing is shaping our architecture not on technical merit but avoiding core license costs. That is beyond bad but we can't justify a £200k spend on licenses and kit to get rid of 2008R2.
Inevitably bits of Python are now appearing around the edges of the product and trying to stab the core. There are a couple of postgresql machines doing ancillary work. All the staff are slowly moving their operational task over because there isn't a purchase process.
This is the price of success though :)
Edit: just to add that the last two companies I worked for are Python/java/postgres houses now after being end to end MS outfits. The staff change over the lifecycle of a product. You can afford better people after time and better people seem to prefer to use other platforms even if they market themselves as .Net people.
Edit 2: also once you're locked in, volume licensing looks cost efficient. Then after a couple of yeara you get a call from the sales guys at MS who want to do a 'soft audit' (which it says they can so in the VL agreement). Then battle commences between MS, yourselves and the disty who handles your VL over how much you owe. This usually starts at £150k-ish for an SME and your ops team will be down for days whilst they work that down. Our liability was less than £10k which is within the VL safe zone but other companies are less lucky. Also the VL settlement says you can't discuss it but fuck them - the company this was against is dissolved.
Actually I look at my post and I couldn't possibly recommend it. If we'd started differently we could afford to be employ and sponsor postgres core team staff for example and gave second to none support and a positive impact on the community. Instead, pockets are lined elsewhere.
Oracle? SAP?
Oracle tooling I.e. JDK, Netbeans, Oracle Linux (repackaged RHEL) etc is 100% free. VS isn't.
Action pack is reasonable value but you can't use it to deploy production kit on. Not only that the definition of internal use is so vague it's a risk.
We got an audit. It wasn't cheap to sort out what we thought was in compliance.
At that point we stopped playing word games and threw our devops infrastructure on Linux.
Straight away we have ambiguity.
Can you run your staging site on it for demonstration purposes?
More ambiguity.
All it takes is a small mis-step.
ASP.NET is moving at an incredible pace, the new vNext bits are planned to be officially cross-platform and you can support any number of database backends from a .NET codebase.
I also challenge your assertion that better people seem to use other platforms. You can find people marketing themselves as one thing but preferring another in any stack. This is not indicative of anything more than someone needing a job and meeting the requirements of a posting.
Licensing costs can vary. Between BizSpark, DreamSpark and other programs you can get dev tools out of the way quickly. They also provide Windows licensing for the period you're in the program.
The areas where you can get in real trouble as a startup with Microsoft are the add-on product stacks like SQL Server and BizTalk (shudder). I would avoid these in a new product but do not fear building with the .NET platform.
Asp.net v.next is currently a bag of promises. I wouldn't put a product near it for a long time. I back this assertion up with the promises of Velocity, EF4, SilverLight and WF4, all of which were disasterous piles of immature crud that disappeared after a bit leading to massive rewrites. Even MVC has a patchy history and numerous problems in it now (crazy API churn, attribute lifecycle/scope, memory ceiling, routing performance etc are all ones that I've spent days on...). Generally the entire web and enterprise teams have knocked out low quality rubbish for years.
People who advertise themselves as .net developers (as I do) know how to get paid a lot, not necessarily deliver the best solution for the money. There are those of us however who have fingers in many pots who know how greener the grass is and how organisations would benefit from a change and are taken on to fix the tech stack.
Agree with your assertion about BizTalk but mno further.
Can you go into this a bit? I just upgraded a MVC2 site to MVC5 and didn't have to change much.
I know the DI bits changed from MVC2-3 but all the existing extensibility methods worked.
How can this happen if you already have the software licensed? Shouldn't the result be that you owe them $0?
Sign up for Bizspark and you don't have to worry about licensing for 3? years.
They bought the platform (mostly written in Oracle) and we recommended they re-write their external APIs (which were written in Java). They did both, re-wrote the APIs in .NET, which is what we recommended (because they had no Java programmers but they had 6 really solid .NET guys already on staff...honestly, companies have no idea of what assets they have in house). Company went public last year. Just hit $1B in revenue just before going public.
If we had walked in and seen a bunch of No SQL or some fad junk, we would have told them to bail. You can't play around when you are playing with these level of businesses.
If you not a technical founder and your goal is being acquired than technology does matter. For example, if you are in the market where, Oracle or Salesforce are potential acquirers then do not use .Net. Be more SQL / Java oriented.
And if your end-goal is getting revenue and profit, then it does not matter.
I make my PoCs with Python on Google's App Engine. It's zero management and any individual idea is far more likely to fail than to be an overwhelming success, so it's reasonable to think about costs if and when the idea gains traction.
Another thing you should consider is how the stack you pick will affect your ability to hire great talent in your region.
Note: I really hate .Net (and Windows) but these are not decision one makes based on passion.
The software world is so diverse now that you could never predict who would be interested. If you ended up writing your product in a JVM language, you may end up with a Ruby suitor, etc. It's always best to just use the tool that you'll be most productive with, and will result in the best product.
There are a ton of developers doing .NET or Java EE for large companies everywhere. Having that talent pool available is more convenient than having to recruit in more obscure platforms.
I'm a .net dude at a startup though and to be fair long term costs should be factored in, but can be mitigated. For one BizSpark is an absolute must to get started, and once you graduate there are the Action Packed for a few hundred dollars a year.
I would however suggest you look rather at using oss where possible even from . Net. We have used MySQL, Mongodb and redis on Linux because it keeps scaling costs down, and to be frank they' re better supported on the platform.
We also leverage BitBucket and TeamCity rather than TFS for cost reasons.
Having said that both Azure and AWS have fairly scalable windows and SQL hosting services.
Use what gets the job done, think a little about scalability and modularity from the start. Don't optimise until you have plenty of data. Over thinking things like this will prevent you from the initial release.
If it works, great. But like all projects, you might have to throw away significant portions of your system away to grow. Being too tied to one specific technology will defeat you.
The stack really doesn't matter and should be least of your concerns at this stage. I used to work for company whose stack was .NET. They got acquired a year back for 1.6 B dollars.
It didn't come up until their senior engineer said we should rewrite everything in Angular.js and Java. The tech management guys quickly said, "Sure, maybe, but for the foreseeable future, we will SSO between the two systems and plan for deeper integration later."
Hands on engineers care a lot about tech choices and sometimes have actual good reasons. At the business level, nobody cares as long as you can meet the business need.