The real problem is the flip-side of something that the OP mentioned as an advantage: ASP.NET coders tend to be cheaper, less experienced, and hence less likely to know about some critical detail that'll boost adoption, whether it's usability or latency or security. As someone relatively inexperienced himself, the OP can't know what those things are, but it's highly likely that one of them will bite him.
In other words, it's correlation, not causation. ASP.NET won't make your site suck. However, ASP.NET biases your talent pool towards developers who suck, and that will make your site suck.
Yes there are crappy c# developers. I've also seen some bad ass c#.
It really is all about the initial design not the language. ASP.NET just makes it too easy to go with bad design and library choices, not to mention the tons of examples of bad design that newbies might accidentally follow at the beginning.
However, Joel Spolsky is a tool. Everyone I know and respect thinks he's a tool. He is a prime example of being successful because of being lucky, rather than being good. Do not quote Joel, he can't form a valid argument for a topic without circling back on himself to save his life.
It costs a ton upfront, and it's likely to kill your nascent company, but if you ever make it big, you'll save a tiny bit of money in the long run!
Chances are one or two webservers will handle your page requests for quite some time before you need to start thinking about it. ASP.Net's sessions also work very well with server farms without much work beyond configuration you just need to follow a few rules and it works great.
Assuming you went with SQL Server 2008 then chances are your database is going to perform very well for quite some time. A DBA or consultant can come in when things get tough but any senior level developer who tries to act cool by pretending to be a DBA can keep things moving along until you have cash to pay someone to really make sure things scale well.
Plus no one cares. If your startup is moderately cool getting C# developers won't be tough either. I've met plenty of great C# developers so they're definitely out there.
(and while I'm leaving a comment anyway, I might as well apologize for the accidental downvote)
I'm currently building a site in C# and deploying using mono on Linux. Very impressed with mono so far. My site has not been tested under high load, but nothing is suggesting to me so far that mono is not a viable option, and a solution which solves many of the problems pointed out in the article's comments.
You're seriously saying you choose Microsoft for performance and stability? And you have a dozen upvotes?
Administering a Windows stack can sometimes blow, but the languages and virtual machines themselves are relatively solid.
I prefer to do most things in Rails these days, but I'm not kidding myself that for raw performance, .NET is great.
Java (for example) and C# benchmarks tend to be close because Java is very mature and, even though it runs on a VM, is highly optimized. It compares favorably with C for this reason.
The MS compilers are very good and Mono is catching up. If you run on Linux, you'll probably be slower than Java in many cases. That will change over time.
Stability is a different question. The stability of C#, F#, etc. is not related to Windows and IIS as platforms. You can run C# based web stacks on Linux.
(I'm pointing out MS had worse days, and is catching up seriously. I also realize an OS for home users might not be the best evidence in the world.)
Secondly, developers who might join your company are going to care. Developers are more than the technologies on their resumes. Good ones can learn new technologies quickly. And they might even be happier learning something new.
This view is typical of business people. There isn't anything wrong with that, and it's necessary to a certain degree. But as he scales up, I hope that he can find someone who can help him make a more informed technical decision.
(And for the record, this isn't necessarily targeted at ASP.NET. I can think of worse technologies to work with)
That's the thing though - you and I think programming is fun and awesome, whereas this guy thinks business is fun and awesome, and programming is just a means to do what he wants to.
What I think is a valuable lesson here though, is that he stayed focused on his goal of "put out the site", whereas with hackers it's easy to have a real goal of "Use technology X and write some awesome code" with a tertiary goal of "ship a product". Always be focused on getting your product out the door, even if you don't make perfect technical decisions.
Even for hacking, it is generally better to choose the technology that your core set of technical people are most comfortable with.
He pretty much covered that by talking about the cool kids, and about the space he's in being about bodies.
His goals probably depend more on having average work done steadily than awesome work done when it's cool to do.
> I found ASP.NET to be unmatched in terms of documentation
I find this hard to believe. Again I think the author knows his way around Microsoft products, and is biased towards it.
> Hiring quality coders on a bootstrapper’s budget is easier for ASP.NET than it is for anything open source. It just is.
I find this statement self-justifying and false. If a product is more scarce than others than it will probably be more expensive, in other words: if there is bigger competition there are lower prices.
The premise is true, no one cares about the server side technology expect maybe programmers who will have to build on that... wait what?
I find this hard to believe.
Why do you find it hard to believe? ASP.NET is really well documented. Is it absolutely the best documented product in the world, but it is reasonable that someone doing an investigation could reasonably believe that ASP.NET has the best documentation.
The author's argument would be twice as compelling if he backed such a strong statement up, or toned it down a bit.
Unmatched? Mmmkay.
Examples: Tons of free video tutorials: http://www.asp.net/web-forms http://www.asp.net/mvc http://www.mvcconf.com/
heaps of books http://www.asp.net/community/books http://www.amazon.com/s/ref=nb_sb_noss?url=search-alias%3Dap...
then of course there is the Microsoft Developer Network http://msdn.microsoft.com/en-au/ff380144
with training courses/hands on labs http://msdn.microsoft.com/en-au/VS2010TrainingCourse_AspNetM...
plenty of people who can answer your questions on SO (C# and ASP.NET are a couple of the most popular tags) http://stackoverflow.com/tags
and msdn forums http://social.msdn.microsoft.com/Forums/en-au/categories
if you want to pay for training, there's plenty of that too, as .NET is used lots in the enterprise there is training centres and other paid services a plenty: http://www.learnvisualstudio.net/ http://learning.microsoft.com/manager/catalog.aspx?brand=msd...
additionally, they have a certification program with all the training materials and training courses for that http://www.microsoft.com/learning/en/us/certification/cert-v...
I realize that there is probably great documentation for other open source frameworks as well, but I can see that it's likely Microsoft will always have great documentation on the very latest versions of their tools as they pay people to make the documentation, whereas OSS frameworks are more likely to rely on people to write boring documentation in their spare time.
Uh oh. "Programmers are a commodity" again.
That doesn't really matter if in the PHP and .NET world you have to filter through 10,000 people to find somebody of the same median grade as you'd find in haskell/python/ruby/clojure.
I'm exaggerating for effect, but the take-home here is that if you don't have unlimited resources you need to have some way to differentiate and filter from the guys offering the sweet vacation packages and steady career options.
How exactly are you differentiating and filtering for higher quality people if not by technologies and developer freedom?
Do you have nice offices ala 37signals?
Are you an advocate of developer 'rights' such as Joel has been known to enumerate?
Why exactly should a dev tolerate using VisualStudio and Windows for the sake of working on your company?
Ditto high-powered executives - if they were actually commodities, executive pay wouldn't skyrocket through the roof.
If you go with asp.net consider your budget before choosing sql server.
I know we often jump towards 5 9 solutions, because it feels like the "Right Thing(TM)" to do, but you can afford a lot of episodes of few minutes of blocking for what enterprise edition will cost... (we do run enterprise edition on our needed-by-cash-register DBs)
I'm a big fan of MS-SQL, and would encourage people to think about the value of chasing that 4th nine of uptime. It doesn't make sense for most companies, IMO.
MySQL seems to have plenty support, as does Oracle etc.
Sure, that makes sense.
(It also follows from this logic that cheap programmers are a good thing to have. If you need to do twice as much work, you just hire twice as many programmers! Combined with an IDE, you're sure to succeed!)
Whenever someone says to use Java or .NET rather than the relatively obscure Ruby (or Node.js or whatever) because that makes it easier to find programmers, I always ask why they want to staff up on average to below average programmers. (Edit: sure there are good ones, just far more bad ones)
At least if they use the obscure language, you know that the programmer in question has his eyes and ears out there, finding things out on his own, trying things, reading stuff. There are a lot of cubicle programmers who simply don't; that find out about things when things are added to Visual Studio.
Not saying obscure languages are better in and of themselves (well, maybe just a pinch), just that the opposite isn't true. Easy access to droves of average to poor programmers is not a feature.
1. Because they don't want to spend a lot of time looking for developers - it's far easier to find a Java developer than, say, a Ruby developer, simply because there's so many of them. Also, because there is so many of them, in all likelihood they will ask for standard wages whereas a developer with a good knowledge of some lesser known language/technology might ask for a higher pay because he knows his skills are in demand and the employer cannot easily find somebody else with those skills for a lot less money.
2. For certain types of software there is no need to have the best of the best. Average programmers are just fine for working on a standard CRUD application. If you're Google and you're hiring people to work on your search engine, then yes, you want to have the most brilliant minds out there, but if you're a company that just needs somebody to maintain it's CRUD application than you'll do just fine with an average developer, who'll be more than happy to work for standard, average pay.
That being said, it's my opinion that, when hiring developers for work on an enterprise app, it's probably best to hire those that have a good knowledge of some enterprise-proven language like Java or C#, but with an interest in languages such as Scala, Ruby or Python. This way you get the guy that knows his way around an enterprise stack, but that's also not just a drone that considers programming nothing more than a day job, you get somebody who actually likes coding and frequently codes just for the fun of it.
After the fact, I realized it would have been smart to at least check Indeed Trends to find out how niche our platform was. If you aren't seeing many jobs asking for CodeIgniter, just to use as an example, don't count on finding a lot of developers. If you have a good company, you're better off competing for talent head-to-head on a rising platform.
That said, you're on the right track as far as realizing that technology has an impact on who you hire. I would choose one more because it helps set you apart from other companies, not because it's what everyone else is using.
It also has COBOL ahead of Python up until 2008. I am skeptical of that.
A great example of community in action is the castle project at http://www.castleproject.org/
In the year 2010, .NET finally has a package management system. Guess who created it?
The organic community is there, it's just not the dominant one but it has a significant presence.
I agree, nothing wrong with that. I think a lot of the stuff that MS has been doing under Scott Guthrie in recent years has been very good in regards to fostering a better community.
>> It needed to be in VS to take off.
Do you think NuGet would be successful if MS had not officially endorsed the project?
To summarize: nobody really gives a damn what you build your site in, if you aren't trying to do anything hard or innovative on the technology side.
Furthermore, from your list, anything that's not business is technology. Not every company ships physically, and those who don't just ship their product through the stack.
How fundamentally technical the startup is, is not decided by the owner but by the context. And technology matters there, a lot.
"I made a list of likely acquirers and then looked at what kind of programming skills they hire for. It was clear they all favor Microsoft. All things being equal it seemed logical to do the same."
and
"At the end of the day things just have to work and customers don’t give a shit what technology you built your site on."
If you're building a startup to "flip" it, isn't your future acquirer just as much a customer as your, er, customers?
"nobody cares what language you use." "potential buyers like asp."
I thought there where good developers in all programming languages and really bad ones too?
For how many people is overnight success really the case? Most companies grow slowly over the years making scaling issues much less volatile.
...and here is a little secret that they may or may not want you to know...if you don't have the MS tools, it doesn't really matter. You don't even have to have windows. They build the code for you. You could used notepad to write an ASP.net app on their platform. Push. Test. Repeat.
http://tirania.org/blog/archive/2011/Feb-14.html
IOS - IPod, IPad, IPhone: MonoTouch http://monotouch.net - Windows: Mono http://mono-project.com/Main_Page - Mac: MonoMac http://www.mono-project.com/MonoMac - Android: MonoDroid http://monodroid.net/ - Blackberry: MonoWebOs to be announced
The reality of course is in NY you're always competing for talent --- not just with the hot startups of the moment (Etsy, Tumblr, Foursquare, etc etc etc) but with the banks which are still paying big salaries for developers and solid benefits and bonuses.
The truth here - whether the author thinks the technology or not matters - is that he isn't competing at all for programming talent. He is competing for the kind of people who want to work at a hot startup, and have that mentality, versus a small one man shop. His statement "Hiring quality coders on a bootstrapper’s budget is easier for ASP.NET than it is for anything open source. It just is. " is telling.
Of course, its a completely unqualified unbacked statement.
But understanding the reality of what your talent shortages are caused by is important. I get the feeling that he went with the first technology he could hire people for cheap enough with.
If you use a better language, you will add features faster and spend less time fixing bugs, and you will be making the world a better place.
Your logic is naive at best, and awful at worst: "It just is." isn't an argument anyone should take seriously.
(Yes, I believe "exit strategy" is a fancy word for "built to flip".)
I haven't yet wanted to try this but get tempted.
Edit: why the downvotes? I'm not saying that ASP.NET is a bad language. I'm just saying that his title doesn't agree with what he wrote.