Saturday, March 24, 2012

Should you use .Net for your Startup Company?

I get this question a lot, from both people inside and outside of the .Net community, and it came up again the other day on Quora.  Below is my answer.  Please keep in mind that this is my opinion, and I can’t promise that I’m right, but I can promise that this is what I really think and if you walked up on the street and asked me “should I use .Net for my startup?” this is what I would tell you.

In spite of the fact that I’m a pretty high end .Net guy, I would caution new startups that are considering using .Net.  I think .Net is awesome, and I use it for my own startup HireFlo.  However there's one big landmine that could handicap your startup before it even gets going, webforms.

You see, ASP.Net development is divided into 2 camps, and there are major architectural differences, and cultural differences between them.

 

ASP.Net MVC is awesome for startups

ASP.Net MVC is the awesome new framework that is heavily influenced by Rails and is the platform of choice for startups like StackExchange.  It’s a breath of fresh air for skilled .Net developers who want a framework that embraces the way the web works instead of struggling against it.  This camp is full of people who care about the craftsmanship of writing code and who like to actually ship software.  A programmer in this camp is likely to be familiar with lots of open source projects, and is most likely a great fit for your startup.

WebForms is death for startups

The other camp is WebForms, a festering bog of evil, spaghetti code, and hate. It's the domain of corporate developers who prize process and documentation over shipping code and hope that the glacial pace of WebForms development will hide the fact that they haven't shipped a product in years and can't tell the difference between an HTTP GET and an HTTP POST.  I mean it.  WebForms and it’s poisonous PageLifeCyle pattern are a sink hole of productivity and they are going to resist you every step of the way as your startup struggles to find the right fit between your application and your market (product market fit).  Plus Webforms and the cursed UpdatePanel make it incredibly difficult to do the fancy new style of client side javascript app that tools like Backbone.js, Knockout.js, and jQuery have made possible. 

So the answer is…Heck yes you should (as long as it’s .Net MVC)

So .Net is awesome, C# is amazing, MVC3 is hugely productive,  if you find a .Net developer who works with those, I'd recommend using them.  But you've got to be careful.  A WebForms developer with a corporate dev background is most likely going to be death for your startup.

 

There are three other points I want to add that I think are relevant.

Don’t use Azure for an early stage startup

Microsoft is really pushing Azure as a platform for startups.  I strongly recommend that early stage startups do not use Azure.  Azure development is significantly slower than straight up .Net development that runs on a windows server or VS.  Deployment takes longer, debugging takes longer, the Azure environment is difficult to replicate on your local dev computer, backups are a pain, and you're locked into a single hosting provider.  It all ads up to a lot of inflexibility and friction at a time when your startup needs flexibility and speed over all other things.  Azure can have a place later, when scale is your problem, but at the beginning of your startup that isn't the issue.

The ASP.Net MVC/C#/SqlServer stack scales like a madman

Listen to the middle days of the first StackOverflow podcast and you'll hear that for a long time they ran StackOverflow on a single server.  They were serving a million uniques  with the web app and database running on a single box!  It wasn’t even a very big box.  This is consistent with my experience with .Net.  It scales well. So, if your startup does make it, you'll probably have a much easier time scaling the .Net stack than you would with say Ruby or PHP.

Bizspark is proof that Microsoft loves programmers and startups 

If you want to build a startup on the Microsoft stack, they will give you free licenses to basically every product they make, including SQL Server, and a free MSDN gold subscription, for 3 years.  They figure 3 years is long enough for you to get going so after that they want you to pay for new licenses, but here's the great part, they let you keep the licenses you're already using.  So you don't wind up in a situation where you're just scraping by, then 3 years is up and you have a big Microsoft bill to pay.  They don't do that, they just let you keep using the software. So Microsoft has basically taken the cost factor completely out of the equation for new startups.

108 comments:

  1. If .Net is based on rails, why not just use rails? Or django/pylon/whatever if ruby isn't your cup of tea?
    Licensing would be no hassle and you wouldn't be locked into MS products.

    ReplyDelete
    Replies
    1. .Net is not based on rails. He states that some aspects of the MVC framework take advantage of lessons and patterns learned in Rails.

      Delete
    2. After working with both dotMVC and Rails, I'd say that dotMVC is more like an homage to Rails. Much like the 00s version of Psycho was an 'homage' to the 50s Psycho.

      dotMVC is soooo close to Rails that I don't see why you would use dotMVC instead of Rails.... add in the better deployment stories in the Rails world as well as the better database migration story in Rails ... well it's a no brainer to me. dotMVC has NO database migration story, except for code-first EF, which is a very heavy solution in comparison to rake migrate.

      I just don't see the upside of dotMVC for a startup. Ruby is a first class language, it's less restrictive than C#, continuous testing is easier to get going, testing is assumed, there's no server license fees to deal with, etc.

      Delete
    3. Well, I was a .NET desktop developer before I started getting into web development (was doing WPF now .NET MVC (3/4)); I can leverage the last 6 years of C#/SQL Server/.NET knowledge I've amassed and hit the ground running rather quickly. Ruby is a fine language and Rails is a fine framework and perhaps MVC borrowed from its philosophies as do all things in history a la Isaac Newton's famous quote.

      C# happens to be a great knowledge and Linq is downright awesome. I don't know much about Ruby other than it's interpreted and that Twitter had to ditch it as its back-end framework (now running on the JVM). I just cling to my compiler and type safety because well I guess I am old-fashioned like that. Web frameworks are like butt holes, everyone has one and they usually stink, some just stink less. Programming and software development should not be a holy war and religious debate; use what you want and shut the f up about it already because the user doesn't care, which is what really matters.

      Delete
    4. @Justin

      Scalability. That's a good reason to switch. Twitter is switching to JVM because RoR doesn't scale as well. JVM!!! I'd much rather stick to C# MVC, work a tad harder but never have to worry about scaling. If things get tough later, I can offload stuff to F#, C++ AMP, etc. and still do the core work in C#.

      Delete
    5. @Dionysys you are wrong. Twitter moved it's backend from starling https://github.com/starling/starling to scala. The front end is still using Ruby on Rails. Their problems had nothing to do with Ruby on Rails and had everything to do with trying to scale a message queue written in ruby and run on MRI.

      Delete
    6. As a JavaScript guy, I tend to lean open-source but I actually prefer .net MVC over Rails. Django kicks everybody's ass but if non-c-based syntax scares you, you should probably stick with one language and hide from new things in general.

      Rails is dumb. Ruby just needs a better interpreter. Node.js might actually turn out to be interesting but I suspect the JS community is too big and full of stupid in spite of the talent that's taken hold there in recent years.

      Java just needs to walk away from the web now. Sorry kids. It's over.

      But webForms? Anybody taking it seriously as a choice for new development in 2012 deserves a solid five minute nut trampling.

      Delete
    7. Webforms are perfectly fine and fast. No different than using templates in python frameworks like flask and bottle. And you can use standard html form controls with "runat=server" and be able to reference them from code-behind using C#, and you can easily do ajax javascript on the client side of the page. C# with webforms is logical, fast, and is far better than other convoluted bullshit solutions out there. MVC is garbage. I repeat. MVC is garbage.

      Delete
    8. I concur with David B. Webforms feel more complete and more robust technology when compared with ASP.NET MVC. Having worked for Microsoft back in the 90s and witnessing part of the .NET evolution. Eventually when I started to work with the MVC framework, my feeling was that MVC was just a foster (and a poster) child from Microsoft to try to gain sympathies among the Open Source community. In reality, it feels like a half-baked technology where you have to resort to salad bar of technologies to get a half decent page, all in the name of craftsmanship. Spaghetti code? No framework in this world will prevent you from writing spaghetti code in one degree or another. Good programming principle will.

      Delete
    9. @last 2 commenters: try and start your startup in webform, I beg you. I can guarantee that you will fail miserably or will have to migrate to a decent technology later on (I did and experienced all the pain this entails and had to go through a painful migration years later losing many months of development time). It's crazy that in 2013 this is not clear yet. There is NO successfull startup in webforms. period. Orkut use of webform was for me the main reason why Google never got fast enough into the social network game on time and could't compete with facebook at a time when it was still possible. Webforms is clearly not competitive. The few sites that work in webforms are only still online because are just infomation sites or used by a big corporation that can survive even if the technology chosen slows down their development by at least 50% compared to the competition. But if they could they would switch too.

      Delete
  2. Very true. I am building my startup on asp.net MVC and SQL Server. I am also keeping compatibility with Postgresql because I'd like to be able to move to a cloud host in the future that offers windows cloud web servers with pgSQL database as a service (similar to SQL Azure; where I don't have to run or manage any part of the pgSQL infrastructure). Right now I'm on Rackspace and have been toying with Azure. I looked at Azure because the price would be cheap but I think you are right that the level of complexity in deploying and more importantly, debugging on Azure is high enough that it probably outweighs the cost benefits. The problem is that there are no other good cloud offerings that offer high quality scaling, redundancy. I haven't gotten to the point where I have to make a decision yet, when I do i will take a closer look at the costs of each.

    ReplyDelete
    Replies
    1. Makes sense. I do think that Azure is a good solution for the problem of scale. I just don't think scale is the problem you're trying to solve during the first year or two of your startup. Once scale is the issue, Azure makes a lot more sense.

      Delete
    2. Anonymous, I don't know what your costs are on Rackspace, but when I was looking around the best price I found was a vm with Softlayer. It's worked out well for us so far.

      Delete
  3. Just one thing to keep in mind: early days stackoverflow didn't have that much data in so one server setup would have been the plausible case with many other platforms.

    ReplyDelete
    Replies
    1. Well it has something like 10 now, my company used 22 servers which was just about enough power to run ONE of our php Drupal sites with all the caching we could throw at it..

      Delete
    2. Well, now I'm a client-side developer and from that perspective, Drupal just might actually be worse than webforms. Not to mention, looking at the PHP under the hood is not unlike peering into the abyss and I don't even know PHP that well.

      Delete
  4. I am using MVC4 (really awesome framework, very productive) with EF Code-First and Azure for my startup.

    Azure can indeed add more complexity, but you're not forced to use a service bus right from the start. Neither are you forced to use the distributed caching, the BLOB storage, the table storage, the CDN or whatever feature you can think of. In fact: some of Azure's features can significantly increase productivity. Take Azure's ACL for example: it's awesome. You just select the identity providers you want to use (they are preconfigured mostly), generate a metadata file, load it into your solution and you're all set.

    ReplyDelete
  5. "If .Net is based on rails, why not just use rails?"

    Reading comprehension fail. .NET MVC is heavily influenced by Rails. At least make an attempt to understand the difference before commenting.

    ReplyDelete
  6. And my 2 cents - the MVC pattern is at least 30+ years old, Rails did not invent it, merely made it a bit more popular. It's funny how the ruby guys think it all starts and ends with RoR - read a little first...

    ReplyDelete
    Replies
    1. Yes, so microsoft with all their resources should have at least implemented the pattern first.

      Delete
    2. Yes the pattern is old. The way Rails chose to implement that pattern was copied by MVC .Net. Rails had migrations back in 2006 - it's generally a good idea to look at what other people are doing and take their ideas. Microsoft does very little innovation - they take leading edge tech once its been proven and make it safe. Nothing wrong with that.

      Delete
    3. Nobody is actually using MVC. If your M can't be popped out and used in any other application serving the same business goals without heavy modification, it's not MVC.

      Delete
  7. Might want to check out AppHarbor for simple .NET hosting. It's fast, easy to use, reliable and a joy to use

    ReplyDelete
  8. WebMatrix seems like a great way to get up and going quickly.

    ReplyDelete
  9. I agree that MVC is better than WebForms, and that you totally can use it to do your start up. I'm not sure any of these arguments have convinced me that I should.

    ReplyDelete
  10. I'll definitely second that Azure is not appropriate for start-ups. Use AppHarbor instead, it's very easy to deploy and iterate quickly and we have a great selection of add-ons to let you quickly compose great applications: https://appharbor.com/addons

    Michael (AppHarbor co-founder)

    ReplyDelete
    Replies
    1. There was a time when this was true but not any more. I'm using Azure for multiple start-ups and it is easy to deploy and iterate quickly. Also remember Azure has other goodies besides hosting web apps - Azure Storage and Sql Azure are add-ons every web application can use.

      Delete
    2. Your argument is invalid. It's not easier to deploy to appharbor than to Azure, and it's not cheaper or whatever. The point the author is trying to make is that adding queues and that kind of stuff adds a lot of complexity that you probably don't want to have when you're trying to launch a quick MVP. That's not really an Azure-specific thing.

      Delete
  11. SQLServer is nice but expensive. You can get the good results with PostgreSQL and MongoDB for a lot less.

    ReplyDelete
    Replies
    1. Hosted Sql server or SQL Azure that can be had for $20/month should handle the data needs of a start-up

      Delete
    2. I have ASP.NET hosting that costs me €4 per month. And that includes 3 SQL Server 2008 R2 instances. Expensive you say?

      Delete
    3. With who? That’s a very good price.

      Delete
    4. Uhh yeah so good it's hard to believe. 3 SQL Servers for $6/month? There's something missing here.

      Delete
  12. Startup looking for partner and Looking to CTO
    http://forums.asp.net/t/1781592.aspx/1?Startup+looking+for+partner+and+Looking+to+CTO

    ReplyDelete
  13. Ah yes, the classic "your technology is bad because I don't understand it" argument. It's as likely people will screw up the MVC pattern as it is that they won't understand the page lifecycle.

    ReplyDelete
    Replies
    1. the page lifecycle was invented to help VB programmers make the transition to the web with minimal understanding or training on how the web works. Personally, I think if you're making simple gridview intranet apps winforms is a good choice. For large public facing websites? It's definitely the wrong choice. The abstraction is too leaky.

      Delete
    2. They DO screw up the MVC pattern. Pretty much 99.9% of the time. Most devs don't even get the concept of separating concerns. However, Webforms is the most moronic, counterproductive abuse of web technology that has ever been suffered by web developers. If you don't get that, webforms is the only thing you "understand." There IS no page lifecycle. There are http requests and responses. And there is what happens on the servers-side and what happens on the client-side. You are expected to know at least one of those well.

      Delete
  14. We run Fotoblur on .Net/C#/Windows Server 2008 RC2/SQL Server 2008. Its a platform that gets little respect outside the corporate world but has worked amazingly well for us.

    ReplyDelete
  15. While it seems that the actual .NET technology can work for startups, I have found that most engineers I know who are interested in startups don't use .NET. While my experience is completely subjective, I do worry that startups using .NET may find it more difficult to find early stage engineers. Do you have any statistics or resources on how many early startups are actually using .NET?

    ReplyDelete
  16. ASP.NET MVC - this dish is cooked and served, no need to invent something there.
    ASP.NET WebForms provides only event system and requires developer to adopt pattern he needs (MVC/MVP or even some MVVM analog)

    ASP.NET MVC has clear purpose for each view that can be described with some phrase like "show list of articles", "show article", "edit article"
    ASP.NET WebForms provides abstraction layer for UI controls (user/server control) and allows interact them. Usually WebForm(View) may have many states and that depends on controls state.

    Conclusion:
    if your Views contain more textual data than interaction controls - go with ASP.NET MVC
    If your views contain more controls than textual data (especially when one control change may affect half of the page to change its state) - go with ASP.NET WebForms

    ReplyDelete
    Replies
    1. Fairly well put. Incomplete, but you are on the right track.

      Delete
    2. Thanks!
      As a windows forms programmer, I find WebForms intuitive, especially given the massive amounts of controls I have to present to the user.

      Now, perhaps I shouldn't be even developing web apps given my background and general disdain for markup language and the web as a medium for programming, but I appreciate your comments.

      Delete
  17. It's great to hear someone singing the praises of .Net MVC.

    I found it a breath of fresh air after masses of frameworks that tried to obscure the basic request/response nature of the web and the client / server divide. These frameworks (Java Server Faces, XFORMS and indeed WebForms) could always do the simple stuff in a nice streamlined way, but the moment you stepped outside (ie, to make money!) you had to put in hacks or got into performance problems because you had no idea what was going on.

    We no longer use .Net MVC to do classic MVC, script on the UI manages things and gets data via ajax /json for rendering. .Net MVC is flexible enough that this is all easy to do, while it's still adding alot of value.

    ReplyDelete
  18. "The ASP.Net MVC/C#/SqlServer stack scales like a madman" - How many customers do you have? How many data do you process? What SLA do you warranty? Did you made analysis how much will cost you solution on alternative platform?

    We are trying to run startup on .net near 1 year and running .net on the cloud it is a lot of pain and headache.
    Having only Stackexchange and myspace can't prove what this platform so good. Why so little? You will find a lot of startups on much younger platforms like node.js/Scala, but only several on .net. Stackexchange completely throw away a lot of .net stack(especially ORM) a rewrite it from scratch. Can you afford this? While you are writing yet another .NET ORM you competitor will implement new cool FEATURES. The price of running startup on .net can be unacceptable.
    So let look into your statement again:
    "The ASP.Net MVC/C#/SqlServer stack scales like a madman"
    - SqlServer - it is completely not scalable. Until you can scale up you are fine, when you can't the troubles begins. Besides the fact what you rely on single point of failure there is no approved and cheap solution to scale out MS SQL(The price of the existed solution unfordable even not for startups). Compare this with the number of solutions existed for MySQL. So finally we choose MySQL.
    - IIS - do we have a solution how to deploy and configure predefined set of services to any quantity of machines? (IIS Web farm framework inadequate for this task). Load balancer running new virtual machine instance and It should have latest services deployed and configured. Che/Puppet may help, but their Windows support immature. We should write own configuration framework for this. If somebody thinking about this why there is no solution for this. IIS performance: if same large instance with same functionality can handle more simultaneous client on node.js than IIS on order of magnitude, then you spending higher than should be. Even MS declare what they failed to achieve such level of performance http://msdn.microsoft.com/en-us/magazine/hh875173.aspx and recommend to use node.js on Azure. IIS resource consumption quota: you can't quota application pools CPU or memory usage easily. So one of you service may easily seize whole host.
    — ASP.Net MVC- MVC3 far away from RESTfull principles, RESTfull means scalable. MVC4 with WebAPI much better, but too late and still Beta. WebAPI exposes IQueryable, IQueryable this is a cancer of you application. You are rely on EF and relational DB if you decide to move some part of your application to NoSQL a lot of rework should be done. WebAPI without IQueryable doesn't give a lot of benefits.
    To conclude: if you want to build startup select a platform which allows you to build fast, .net, java not one of such plaform. C# awesome programming language, but I can't say same about .net platform. Development of large application on it will cost you a lot of time, money and possibly market share.

    ReplyDelete
    Replies
    1. I'm sure you've got some good points, but claiming that SQLServer doesn't scale compared to mySQL??? That sounds like nonsense to me.

      Right now, today, as I sit here, I'm working on a real-time system using a SQL Server 2008 database that comes in at about 600GB and has several tables with tens of billions of rows. That's a pretty good sized database and it's not all that unusual in the SQL Server world. I don't have a lot of first hand mySQL experience and I'm not sure if mySQL tables with billions of rows are common, so I won't make any assumptions there. But based on your comments I'm guessing that you know as little about SQL Server as I know about mySQL.

      Delete
    2. I'm running Ruby on Rails on the JVM using jruby, and using SQL Server as the database. Total win! SQL Server or any other db for that matter doesn't scale by itself, neither does any web site. If you think you can pick a particular technology and it will just scale it just proves you've never gotten the chance to work on a high traffic site yet. Look at Stackoverflow with their $100K servers. Full redis caching layers etc,

      Delete
  19. Crapy commercial article.
    Who used WinForms and WPF that man never will blame WinForms! It's fastest solution with most intuitive API for any purpose. WPF, despite its "hardware acceleration", is a dog. Not only because it's "hindu invented XML", but also damn slow - my Nvidia 570 doesn't help.
    Throw away your MVC cr@p too - buzzword doesn't help to make a business.
    Qt is the most ideal technology, but hell, it's NIH! :))

    ReplyDelete
  20. Having just completed my first MVC3 project, I can highly recommend. However, steer well clear of TFS... it's a truly terrible source control solution and it's build integration/workflow is cumbersome and takes too long to maintain. Probably 20%+ of our time over the past year was dealing with TFS or automated deployment issues.

    ReplyDelete
    Replies
    1. I second the motion on staying clear of TFS. I hate TFS. You're assumed to always be connected to the server??? really?? Who thought that was a good design constraint?

      One of these days I'll make the move to git but for now subversion does everything I need. Subversion's old but it works.

      Delete
    2. Never touch TFS - terrible terrible terrible mistake - use subversion, git or mercurial

      Delete
  21. I have certainly endured a lot of pain getting to where we are today with MVC/EF/WebApi/MSSQL and the tooling associated. Been close to jumping ship many times but I think things are finally on track and really enjoying it.

    ReplyDelete
  22. This article lacks information about the two technology MVC and Webforms.
    Quick introduction is that MVC follows a strict pattern with the addition of new elements to complement the pattern. Webforms follows another pattern, but nothing is forced except pagelifecycle.

    There are many projects where webform is better than MVC. There are more example and stronger community with webforms, afterall it has existed alot longer than MVC.
    Webforms does not hinder any clientside fancy framework at all.

    If you are an experienced developer within ASP .NET technology, then you can do equal magic in webforms as in MVC. Which tech you should choose all falls on the size of the project and team, as well as the requirements of the product.

    ReplyDelete
  23. This is silly - somewhat ironically brought about because you're trying to sound too clever. "Spaghetti code"? When did you last use ASP.NET and WinForms? If you're still writing spaghetti code with that then you're not half as smart as you're trying to make out, but are simply a bad workman blaming his tools.
    The answer to your question is simple: use whatever you are happiest developing in. Either is up to the job.

    ReplyDelete
  24. I think it's bogus to say WebForms a death to startup. Because .NET has the ability to use both patterns in the same project, you should use what works best. There's really too many developers with their own agenda on what every developer should be using now. If MVC works best for you, great. Don't spend time trying to bash developers who prefer something different. Makes you look like an average consumer. You are a developer with greater understanding not based on hype and what's new.

    ReplyDelete
    Replies
    1. My agenda is more about what you shouldn't use. Webforms tops that list. If you don't agree, I'd have to ask you what else you've tried. It's a question that I find stumps a lot of java developers in general language conversations.

      Delete
  25. I agree, C#/.NET gets a bad rep because of winforms but asp.net mvc is beautiful. I like mvc in general but it is my favourite mvc framework, and I write large scale php sites with 20+ servers each for a living.

    ReplyDelete
  26. More on BizSpark please - that's the surprise ending of the article!

    ReplyDelete
  27. Wow such depth and analysis...



    Yes that is sarcasm

    ReplyDelete
  28. Neither - both are crap whose time has passed, now that the traditional web is fading. If MS is relevant to what you hope to achieve, start with Silverlight, probably Silverlight OOB, and then eventually move to a fully native, cloud-enabled application distribute via a public or private app store. If not MS, but Apple, then you can already do much the same via iOS. And well, then there's Android. But no matter what, it's time to go native and leaving the pain and mediocrity of the web behind...

    ReplyDelete
  29. WebForms have paid my bill for years. ASP classic, first, followed by ASP.Net and WebForms. Never had a problem, and never missed a deadline. All code clear and modularized properly. You need to find better developers (and tech leads/architects) if you're missing deadlines and have cost overruns. It is easy to find bad examples of ASP.Net WebForm projects because they've been around a lot longer and have a much broader base of developers - good and bad. The same would be true if the tables were turned. Like the another commenter stated: use the tool that makes sense for the project, and the resources that you have. Sometimes it might be WebForms sometimes it might be MVC.

    ReplyDelete
  30. Say what you want about MVC but regardless of the platform it doesn't make a damn bit of sense to me. Why the hell would I want my processes scattered over 3 or more files just to serve one page when I can have them in as little as 2? "Norman... Norman... Coordinate?!?" (We just won't even go into code-beside pages... eww)

    ReplyDelete
    Replies
    1. exactly. MVC is total garbage. All it does is slow you down and get in the way.

      Delete
    2. MVC is not garbage, ASP.NET MVC is. It is a bone thrown to pinheads to show Microsoft has MVC, too. Few years late, immature, it helps solve you problem you did not have, but they have it, too.

      Delete
  31. Something else: You can take the MVC3 framework and with MINOR configuration, drop it on a LINUX server, point it to a MySQL db, and run completely free under MONO. Its the ultimate in stability, portability, and speed on a small budget!

    ReplyDelete
  32. This is a strawman argument. Webforms are horrible - but webforms are not the only other choice (unless for some reason you have limited yourself to Visual Studio).

    ReplyDelete
    Replies
    1. (Unless for some reason your company values time and doesn't fantasize about knowing the secret development package no one uses that has no support, no community and takes forever to dev anything in, then it doesn't work because you realize your server OS doesn't support Delphi or Universe basic.)

      Fixed.

      Delete
  33. I've always thought that MVC framework was far closer to JSF than rails.

    ReplyDelete
  34. I would kind of disagree. It's down to what your startup does. If your startups builds components for enterprise systems, webforms is the way to go frequently.

    Is the page lifecycle old? Yes. Does it suck? Yes. Does Page.LoadControl need a generic extension? Yes. It's still in many cases easier to integrate than the same application using MVC framework, unless your staff consists of nothing but drag and drop programmers with an affinity towards bad telerik tools and Microsoft Ajax.

    ReplyDelete
  35. one of my mates who has a startup blames the bulky Windows and .NET framework as a reason not to opt for .NET. He is a Linux guy and says that Linux can be customised like crazies so much so that it can run a full web server on embedded devices and once Linux enters the scene .NET exits anyway, coz the Mono is not nearly as great on Linux as .NET f/w is on Windows. Thoughts?

    ReplyDelete
  36. I've been waiting for someone to write an article like this. I'm looking forward to reading the Quora article. I've been a .NET developer for 10 years and built several MVPs using the prevailing .NET paradigm of the time. I always wondered why in startup circles, .NET gets absolutely no respect.

    ReplyDelete
    Replies
    1. Why would you want to pay money when you can reach your end goal for free, faster? Startup land isn't like corporate land - you either have a product shipping in 6 months or you all go home. .Net isn't the place for that - unless you're the stackoverflow guys ;) But even they are running lots of linux and open source.

      Delete
  37. I am new bee and confused - is it better to use mvc for lob - intranet - application? I have worked on webform -which gives complete control and i can create desktop experience in web-form - should i move to mvc?

    ReplyDelete
    Replies
    1. No, you should move to North Dakota.

      Delete
  38. Use something like ext, sproutcore, smartclient or qooxdoo for the client code, write just simple stateless services exposing JSON-RPC in Java for the server, and you're good to go. (Qooxdoo is my favorite because you don't need to know anything about CSS or HTML, while still having an extremely powerful styling mechanism, which also works cross-browser.) It's simpler to develop than anything .Net MVC, scales nicer and it's also easy to decouple from the particular database being used. And it's also cross-platform by default. The only caveat is that it only works right for actual data-manipulating apps, and isn't as convenient for actual web sites. I think it would be quite usable for StackOverflow, though, even with ASP.Net and SQL Server behind it.

    We tried something similar once with .Net, and it does work, but it's way uglier to hack together. It was quite some time ago, so things may have changed in the meantime.

    ReplyDelete
  39. The thing left out of this article was why WebForms is absolute garbage for what it's trying to accomplish. It's taking RESTful and stateless HTTP requests and trying to mask them in some event driven page life cycle so you don't have to learn anything new. Coming from desktop applications you'll be fighting WebForms every step of the way. It's trying to be something it's not and only getting 90% of the way there. That makes it cumbersome and slow.

    MVC is a lean design and it's built to server RESTful request. It does just that. There's no guise to try to make your life easier. It just what you need, and nothing in between you and the request.

    If you a serious developer, then it's time to stop being lazy and learn a something that is meant for web applications. Not something shoehorned into do the job. Learn MVC. Either .NET, Rails, something...

    Personally being as I see Microsoft shops as being a waste of money... I lean towards the Typesafe stack. Scala, Akka, and Play. Just as fast, arguably faster. Runs on anything using a JVM.

    ReplyDelete
    Replies
    1. Obviously the above comment was not written by me... and it's a little weird.

      Delete
    2. Just about every framework, be it for python, php, ruby on rails, whatever you are using, will build on top of the http response and request protocols so that a person can just f#@cking code without having to think about it. And just about every language will also let you handle the hard stuff yourself if you want to. My pages load fast and can handle a lot of traffic. That's all that matters.

      Delete
    3. Usually unless you are designing a widget to record your diary, that's NOT ALL THAT MATTERS. In any corporate environment, which is to say, basically, everywhere that counts; readable, maintainable and provable programs are essential. High-level languages allow you to achieve these goals by abstracting and clarifying the main concepts first.

      Delete
  40. It is amazing such a useless article has this much comments. Don't you have anything better to do guys ?

    ReplyDelete
  41. You made some decent points there. I looked on the internet for the issue and found most individuals will go along with with your blog.

    ReplyDelete
  42. Aren't there going to be the same issues that come with trying to implement an interactive application over a stateless medium whether using WebForms and it's poisonous Page LifeCycle, hackish ViewState and IsPostBack,etc or using an MVC application written in ASP.NET or Rails?

    ReplyDelete
    Replies
    1. Hi Andyz1. The answer is no there aren't the same problems. You almost need to have done webforms development on a number of production systems to understand how difficult this framework makes your life, especially if you want to do regular AJAX code with no UpdatePanel (a .net control). The really telling thing for me is that I'm now a webforms expert. I've learned all the little details of the framework over the last 10 years. I know all the pitfalls and I know how to avoid them. And now that I have all this webforms knowledge... I hate the framework more than ever. In fact, just before the MVC CTP came out I was ready to throw all my .Net experience in the crapper and more to Ruby/RAILS. I hate working with webforms that much. But MVC did come out, and working with it and C# is a joy.

      Delete
    2. Man, you don't have to use asp.net controls and updatePanels, etc., with .net. All my .net pages use standard html controls with "runat=server". Then you can use jquery ajax methods to do whatever you want. I can create a whole C# project three times as fast as anyone making the same project in MVC. And the MVC one won't even work right. I challenge anyone.

      Delete
  43. Im saying, get about ten more years of trials with MVC and Rails and try to do the same thing you can do in raw Webforms and AJAX and youll have the same problems.

    I think the real reason you are liking MVC and Rails is that they force a pattern on you. A pattern that no marketroid can subvert by saying just get it done ASAP. The design and consideration that that pattern encourages makes all the difference.

    I suspect you can be just as productive with raw Webforms if you and your cohorts, superior or otherwise, diligently,religiously adopt a design strategy, stringent code readability and modularity,etc guidelines. It takes time and lot of effort, and I think that is what MVC has done, just done that work for you. Just about ten years and 1 generation of coders later....

    ReplyDelete
  44. Marketroid? Is that a Not Invented Here reference? I just started reading that comic. It's pretty good. Regarding your comments on MVC, I think you have a point about the ASP.Net MVC framework getting heavier and developing problems of it's own over the next 10 years. And I think people are already starting to feel like RAILS has put on a few too many pounds. However, I also think that neither will get as bad as WebForms because I believe that WebForms is a bad framework for the web. It just doesn't fit. And it isn't the result of 10 years of bloat, I hated WebForms from the first moment I saw it. I spent weeks uttering one WTF after another as I saw the things they'd done with controls and the page event lifecyle that just didn't make any sense. Those problems existed on day one.

    ReplyDelete
  45. If it's any consolation, I have consistently been able to find work in the Webforms space because it is just so arcane. Mostly blitzing on already late and failed projects tho'...

    I go back to my first comment, that a stateless medium is very difficult platform on which to create rich,stateful applications that users expect.

    Webforms seems to try to gloss-over the complexities of this, and provide a programming paradigm more similar to Windows or other fat-client programs. It basically fails in doing this because of a lack of any real impedence matching tools between stateless and stateful.

    The MVC model embraces the mismatch between stateless and stateful and provides nice patterns for handling the situations you get into.

    I suspect as the needs of the user community expand, this stateless-stateful mismatch will rear its ugly head again....

    I think marketroid comes from Hacker Jargon file.

    http://www.catb.org/jargon/html/index.html

    marketroid: /mar�k@�troyd/, n.
    alt.: marketing slime, marketeer, mar�ket�ing droid, marketdroid. A member of a company's marketing department, esp. one who promises users that the next version of a product will have features that are not actually scheduled for inclusion, are extremely difficult to implement, and/or are in violation of the laws of physics; and/or one who describes existing features (and misfeatures) in ebullient, buzzword-laden adspeak. Derogatory. Compare droid.

    ReplyDelete
  46. Good article, seems to me that somethings are universal, like the WebForms part. I see exactly the same thing here in brazil.

    ReplyDelete
  47. Running .NET is even simpler if you just use AppHarbor, no need to configure, update and maintain servers at all.

    ReplyDelete
  48. I discovered your web site via Google while looking for a related subject, lucky for me your web site came up, its a great website. I have bookmarked it in my Google bookmarks. You really are a phenomenal person with a brilliant mind!

    ReplyDelete
  49. good article however your article focus to much on asp.net mvc assuming all startups should do web based applications, what about WPF/ SIlverlight? or MEtro/WinRt. In the other hand Windows azure should be easier to handle on later versions of Vs Studio like 2010/2012. Eventually you will need to scale, so is not bad idea to actually do a prototype with azure support.

    I'm working on a startup to develop a product where UI/UX should be impressive and WPF gives as a good path that asp.net mcw falls behind and also we need investors to convince that our startup will be highly escalable so a live demo with azure is very important

    ReplyDelete
  50. Great article. While the comment regarding Azure certainly applies to Azure Cloud Services, their new Azure Web Sites should be pretty straightforward and no deployment hassle

    ReplyDelete
  51. This comment has been removed by the author.

    ReplyDelete
  52. The JVM run Ruby is used as the database on the SQL Server Rails in JRubi of. Total victory! Another SQL Server, or scale, DB in this case, through their own website. Just when you think you can select a specific technology or scale, he said, there is a chance to work more traffic. The display server Stackoverflov10 million dollars. The second layer of the skin, such as a complete re-wiring.

    Hire .Net Developer | .Net Development

    ReplyDelete
  53. Developing an ASP.NET MVC application is an alternative to developing ASP.NET Web Forms pages; it does not replace the Web Forms model.

    ReplyDelete
  54. The thing which you described about concluding point that "Microsoft has taken the cost factor completely out of the equation for new start ups" is really interesting. Your conclusion about all things is completely fair.

    ReplyDelete
  55. I'd been a web app developer for over a decade, but for the last few years I've moved into report writing and SQL Server development. Lately I've found myself thinking about returning to web development. Glad I found this blog, it reminded me what a bunch of a$$ h0les you all are.

    ReplyDelete
  56. I started web dev with webform since version 1.1 and then tried out MVC 2.0 as i saw a lot of talks about it at that time and decided to join mvc since then and no regret, certainly it's all preference of choice. I was impressed by how fast MS managed to release a major version in just 1 year cycle for every version 1-4, right now MVC 5.0 is in beta.

    but when you get enough exp with .net, i believe php and rails are definitely good alternatives.

    ReplyDelete
  57. Definitely, this post is really good which have some useful information that people must see.

    ReplyDelete
  58. .NET is very capable platform, but for startup I don't think one should go for that as it works slow and there are some restricted area to which it would be hard to proceed to.

    ReplyDelete
  59. You should quickly forget MVC the way Microsoft will. MVC is the 'Next Great Thing' along the lines of Silverlight or WPF. This time though you should not blame MS when they decide to pull the plug on MVC, it has never been part of the .NET Framework, they keep releasing it as a 'community content', which means that they are not responsible for it. Web Forms will be still around just like Windows Forms is still around, when MVC will be long forgotten like WPF or Silverlight has. Have you actually checked an 'Internet' MVC 4 Razor project built by the new project wizard? It has 465 files in it, and there are idiots around who claim it has a nice clean code that helps separate the view from the business, like it is something new or revolutionary. Web Forms separated the code from the view 13 years ago, it is called code behind. Does MVC find the view for the controller by matching the name of directory??? Is Razor a giant step back towards classic ASP? Are Razor scripts compiled during run time? Do the models use reflections, the slowest thing possible in .NET? Does the whole thing rely on third party content, such as jQuery? Does the aforementioned out of box project include 15,000 lines of JavaScript code in the layout in an Active SERVER(!!!!) Pages MVC??? Care to explain how a Razor view with tons of c# scripts is cleaner than an .aspx page?

    ReplyDelete
  60. Azure is a fine choice for a startup as long as you're in BizSpark. BizSpark credit can pay for up to a 2-core 1.6GHz 3.5GB RAM virtual machine -- that's not bad for free. Also nice is that their VMs can run Linux in addition to Windows.

    ReplyDelete
  61. This company offers the six months industrial training in different courses..
    Online Tutorial For C#.Net

    ReplyDelete
  62. The main reason why a start up company might chose a different stack to a Microsoft stack is licensing and I also agree that Asp.Net Web Forms are better suited for corporate domain and not for social applications. Well, I would rather suggest to go entirely with just the Javascript stack and Node.js. No ruby, No c#, just Javascript.

    ReplyDelete
  63. Thanks for sharing such a nice post about ASP.Net Development India
    Keep it up for for endeavors.
    Thanks

    ReplyDelete
  64. This comment has been removed by the author.

    ReplyDelete