I know golang is getting a lot of hype (with nice features) and it is growing fast but I fear the pros of using golang in a startup might be as obvious as using a much more mature languages like c# in a well supported .net framework and azure eco-system? in particular (I assume) it is much easier to find .Net developers when you need to grow the team?<p>if we can, lets please assume we know c# as well as golang (and other languages will not be considered). thanks
"and other languages will not be considered"<p>That's too bad, as I'd recommend Java and/or the raft of excellent languages available on the JVM.<p>With C# you're effectively locking yourselves into Windows, which seems a terrible decision from both a cost and scalability standpoint.<p>With golang you're losing the vast array of open source packages available for the JVM, as well as locking yourselves into a single language which may or may not fit your future needs well.<p>Scala in particular is an interesting JVM language. Clojure and many others are worth a look as well.
If it is really only a choice between those two, I'd go with C#/.NET for a number of reasons. The main thing for me is that it is object-oriented. To head off a possible complaint about .NET, with the mono project, you don't have to run your code on Windows. That leaves a lot of options open. We run a rather complex .NET application on CentOS using mono without any isssues. One thing to keep in mind, though, is that most newer programmers don't learn C#. You may be able to find people easily that are good with it, but they are likely to be older and more expensive. This may not actually be a downside if you are looking for experience, but I find that older .NET devs tend to be in the 1 year of experience 30 times group rather than the 30 years of actual experience group. This is solely based on my personal experience, though.
I am a c# developer of many years, and I know just a little of what GO is about.<p>I would say it depends what you are trying to achieve.<p>If it is a regular old web application then .NET will shine, giving you the MVC5 framework which is similar to rails, excellent database mapping, a well integrated web server, authentication and other web concerns out of the box, integration of odata. Let alone the strong typing and excellent generics which is probably the best of the C++esque languages (but its no Hindley Milner but that isn't of much practical importance for a startup).<p>Maybe use GO if you need it to run cross platform, need to do some insane performance tuning or heavy systems programming. I.e. you are starting a digital ocean or something like that.<p>Running .NET on linux is possible but may be more limiting. So you are probably running on Windows and the server costs could be higher BUT more than paid off by saved developer costs.<p>Of course you are also free to use both GO and .NET, using GO where it shines and .NET for the rest of the more prosaic businessey stuff.<p>On hiring - you will find more .NET devs for sure. Also .NET has been around a lot longer, C# is always getting great new features and there is the excellent F# if you need to do functional programming.<p>Your biggest consideration as a startup is rapid development and time to market. .NET will get you there faster. Click a button and you have a boostrap-designed, authentication enabled application with a DB back end in a few seconds that you can easily extend. You can get an MVP out in a few hours in .NET.<p>Without knowing more about your application, I would say it is 99% likely .NET would be a better choice.
I'd base it on the language and infrastructure/OS I/my team knew best. The worst thing for an early startup to do is to try and figure out new languages or tools when it isn't absolutely necessary. You have enough hard work to solve the business problem, so pick what you are familiar with.<p>Also, in the end, you will likely change your structure more than once from the first MVP, so I would just make a decision and move forward fast.<p>As for my opinion. C# is still primarily a Windows environment solution (although its getting better), Golang is a little bit more agnostic but I wouldn't use it anywhere but in a linux environment. My choice would be golang if those were my only two options, mostly because I feel the ecosystem, scaling and cost is better not to be in the Microsoft environment for a startup. However, if you are planning for a Windows based environment, then nothing beats C# IMO.<p>There are completely valid options that are neither of these languages, nodejs, python or some JVM based languages. I generally avoid the JVM, but that is a personal preference based on my experiences and I recognize plenty of amazing systems are built on JVM based languages all the time.
One thing to keep in mind: if you're building a startup in .NET, you have access to BizSpark (and Azure credits), which, at least for me, has been an amazing help as it removes the friction, hassle and stress of licensing and the monthly cloud expenses. There's even a bigger BizSpark offering which was around on HN some months ago.<p><a href="https://www.microsoft.com/bizspark/" rel="nofollow">https://www.microsoft.com/bizspark/</a><p>OTOH Azure is (was?) one of the most expensive providers, so after you outgrow BizSpark it might not make financial sense any more (though if you have paying customers, it will probably not be a significant expense :) and they're betting on it I guess).<p>I never considered another choice because I come from Microsoft shops (I tried Groovy/Grails and other stuff, but didn't find a reason to switch). I'm extremely happy with my choice so far, I love the IDE and the ease of use, I'm very comfortable with MSSQL, etc...