MVC · Ruby

MVC framework? Thoughts of that for a MVP?

Chaminda Wijetilleke COO at EquityEats

August 15th, 2013

Hi all, I am not technical, but would appreciate thoughts  (pros and cons) of using the MVC framework (ASP.NET). We are working on a social media application and certainly am aware of Ruby as the preferred choice, but would really appreciate feedback on MVC.

David Cornelson Founder at Wizely, Inc.

August 15th, 2013

I'm a 28 year IT veteran and understand the trade offs in using various systems.

First of all, although it's not widely identified, ASP.NET and MVC are actually open source (Apache 2.0). There is no requirement to use Windows or SQL server since the Mono people have ported nearly everything to Linux distributions, including a very fine editor called MonoDevelop.

If you use Ruby or PHP, you'll find a a fair amount of entry level and mid level talent, but little in the way of senior talent. For building out a system quickly, these are okay tools, but it's my opinion that these tools don't lend themselves to well-engineered code bases. You could easily end up with a mass of spaghetti code written by programmers who are productive, but not at all concerned about maintenance and elegance.

The Java and .NET pool of developers is much larger and has the added benefit of solid mid-level and senior developers that do have an interest in loosely-coupled, easily adapted architectures.

I would highly recommend ASP.NET MVC 4 as a very solid starting point for any project and as a start-up, you can sign up at BizSpark and alleviate any concern about license fees.

John Wallace President at Apps Incorporated

August 15th, 2013

There are many good MVC frameworks. Do you have a developer? They will have their preferred framework. I'd go with whatever they choose. In the early stages their efficiency is far more important than the longterm scalability of the solution. Just about everything out there will handle the immediate needs of an MVP (as far as scale goes).

As far as what I like to use? I've been doing a lot of work lately in Ruby on Rails, but am not really a fan (incredibly fast to get going; frustratingly slow to change). I've been looking at doing more work in Meteor since it has some amazing features, is incredibly fast to develop in, and is very well funded, but they still haven't shipped 1.0. From the standpoint of getting an MVP up and running fast, Meteor might be worth looking at.

Alexander Kress Senior Development Manager, RedFlagDeals.com

August 15th, 2013

Hi Chaminda,

It's a good library and you can do a lot of things well and cleanly with .NET MVC when paired with other libraries such as NHibernate and a good IoC library. In the long run the choice of language depends on what you are building and if .NET is a good fit for your project I see nothing wrong with it.

Alex

Jerome Dangu CTO & Co-Founder at ClarityAd

August 15th, 2013

@Chaminda ,The great thing about the .NET platform is that it's all integrated.
Performance is also comparable to Java (superior to PHP, Ruby, etc..)

@Mohammad, Microsoft Bizspark offers free licenses to startups for 3 years.

Another thing to factor in is the cost of labor + cost of hiring.
Some platforms are so hyped (for subjective reasons IMHO) that it is extremely difficult to hire. Not so much the case for .NET.

Gabe Kangas Startup founder, mobile engineer, API junky & builder of things. Not a computer scientist.

August 15th, 2013

You've stated that you're not technical, so I suggest letting the person you either find as a technical co-founder, or a vendor make that decision for you.

If you're at ground zero there's no reason to let your technology choices limit who you can work with.

Find out who you want to work with, tell them what you want to build, and a smart person will know the right tool for the right job.  Otherwise you'll be out there saying "I'm looking for someone to build in X", and you've already limited yourself for the entirety of your company and could miss out on a great co-founder or vendor partnership.

Shawn Burke CTO, Buddy Platform

August 15th, 2013

If it's truely an MVP, then use what you know.

That said, I'm working with a company that has a .NET stack and I'd really recommend against it.  There's nothing wrong with .NET or MVC as a dev stack, but using this technology ties you down in ways other's don't.  You're tied to Windows both in your production environment (sorry, running a production website on Mono ASP.NET is crazy - Mono isn't tuned or tested to be a server-side technology) and less so in your development environment.  If you choose to use MS SQL, you've got looming licensing costs and you're even more tied to Windows.

The real issue we've seen is recruiting (even in Seattle!).  Being on .NET scares a way a lot of startup-curious folks, and .NET developers are typically farther along in their careers, make more money, and aren't willing to take startup pay. A majority of them don't have the skills or mindset you want from someone working in a low-structure, rapidly changing environment like a startup.  Obviously this is a wide brush but we've seen the pattern repeat over-and-over again.


Todd Ellermann Experienced I.T. Leader, CTO, and Creative Entrepreneur

August 15th, 2013

MVC (Model-View-Controller) is a software design pattern that exists in most modern languages:
Ruby == RAILS (MVC)
PHP == CAKE (MVC)
ASP/C# == ASP.NET (MVC)
Groovy == GRAILS (MVC)   <<< this is what I use
JAVA == SPRING MVC (MVC)

There are a variety of other niche languages and frameworks that I consider irrelevant (python/django, ceylon, node.js, perl, cold fusion, clojure, scala, etc...)

The critical distinction here is that everyone listed above is open source and free to run, with free tools, EXCEPT ONE! (ASP.NET).  IMHO if you are a startup, every dollar counts and the only three real choices for a web application are Ruby/Rails, Groovy/Grails, or PHP.   

"Which language should you use?",   Should be a function of the problem you are trying to solve, the availability of code that will jump start your effort, and the availability of resources who are experts at that technology.   

Now I will say something that shows my bias: PHP will be cheaper, get you up and running sooner, and you should consider if the web site does not need to scale for a while, and it is not the core value of your business.  You will never find more than one or two competent PHP engineers, so this will be only V1 of your platform if scaling/technology IS your product.

Ruby/Rails vs Groovy/Grails is a function of the libraries and available local resources.  In Groovy/Grails you can use any library that has ever been written for the Java ecosystem.   I lean towards Grails, but that is because I am a Java/Linux guy, and I find it easier to find former Java developers who can be competent very quickly in Grails. 

In the long run, you are much better at getting a competent technologist advisor to help you make your first hire/purchase and let that person make the decisions rather choosing the technology.  A good CTO uses the best tools for the job, and not every thing sticking up looks like a nail.  If your system needs to email out excel spreadsheets to end users, Java or Ruby is an act of lunacy .NET is the answer.   If you need a simple marketing brochure site with a mailing list or simple shopping cart, PHP is the answer.   At the end of the day the problem space calls for an answer, not the other way around.

Said differently, if you want the "right" answer, re-phrase your question with a set of "standard/common" functions the site must perform, and a list of domain specific/unique/proprietary functions that are critical to your business.  The platform/language with the biggest jump start on the second set should be the "right" answer IF you can find a local resource who can/will deliver it for the $ you have to spend.


One last thought.... If you were going to trial for murder, would you walk into your first meeting with your attorney and tell him what defense they are going to use? Would you decide on a defense and then shop around for the attorney who was best at that defense? OR Would you choose the best attorney you could afford and sit down with them, outline all the facts and possible issues and then let them guide you, maybe even bringing in an expert witness for a key sticking point etc?

For those of you who ARE attorneys there is an equivalent metaphor in baking a cake....

Eric PMP Management Consultant, MS in Information Systems, MBA, Project Management Professional, Six Sigma Black Belt Trained

August 15th, 2013

I've been using ASP.NET MVC since 2009 and really like it.  The addition of ASP.NET Web API, I believe, is very powerful.  But I'm a .NET developer and it's all pretty natural to me.  I had no problem getting into BizSpark.  I live in the Seattle area so there is quite a bit of knowledge around here about .NET technology....but the open source ones seem "cooler" and more hip with the city kids.  Defer to your lead tech person on this.  Do not make this decision on your own if you are not the developer.  Even the developer is wrestling with this decision.

Jonathan Vanasco

August 15th, 2013

1. a point on clarity - MVC Framework is a generic term and an approach to building applications ( as are variants MVT MVVM MCT RV etc ).  What you're talking about is the Microsoft specific "ASP.NET MVC Framework" . 

2. I'll echo the concerns of growth on the MS platform -- while it's easy to get started with BizSpark, you should know that after X years, you're looking at some pretty significant licensing costs. 

4. Ruby isn't preferred for social media. RubyOnRails gets a lot of hype for having been used as the MVP for a handful of startups, but most of those companies quickly scaled off that platform (the rest have severely limited its use).   I see more SocialMedia startups using PHP and Python.

5. The big question you should be asking centers on Technical Talent.  Who will build it?  Who will maintain it?  Who will extend it?  Who will build it ?  Talent differs regionally.  In the NY or SF markets, I honestly wouldn't really consider building something on an MS platform - it would be much harder to find good talent.  It's really hard to find good Rails people too -- that platform is so constrained though, it makes it possible to get a decent amount of work out of terrible programmers ( I know of several successful startups where the first tech team was non-CS recent college graduates , who all learned how to program from a Rails book after being hired ).

You should absolutely , positively, without a doubt have technical co-founder.  They should be directing these decisions, planning and forecasting, and managing the people building this.  Whether you have in-house or outsourced labor, unless a seasoned tech person is overseeing it... you will not be on time or on budget if you're managing this.

Tim Scott

August 15th, 2013

[Re-posting. Last post somehow lost all paragraph formatting.]

I was a .NET developer for many years. I launched a production ASP.NET MVC app months before it even reached beta.  I wrote a library of HTML helpers which became a part of the popular MVCContrib library.  I wrote two MVPs in ASP.NET MVC.  Both failed, but not at all because of the technology.

A couple of years ago I moved to Ruby on Rails. The main reason was to flee enterprise development for startup-ville.

Before I explain why I thought I should leave .NET, I want to say I love .NET and C# and think it's the best thing to come out of Redmond. ASP.NET MVC is nice. From what I can tell .NET has passed Java in terms of the language (if not in terms of OSS). And for raw performance you can't do much better than .NET for most applications.

But for startups, .NET has several drawbacks:

1. Ops costs. An Amazon EC2 instance costs 1.5x with Windows. Add SQL server and it jumps to 3x.

2. Developers.  It's true, there are a lot more .NET developers to be found in some places than other kinds.  But are they the kind of developers suited to a startup? It's not just a question of talent.  .NET does not attract as many uber-hackers, but even the really talented devs are more inclined to work in an enterprise context. I know a lot of very talented .NET devs, but I wouldn't bother ask them to join my startup.  They make very high rates working for fat corporations, and they are generally not interested in a more risky, albeit existing, option.

3. Bias. You will face bias by investors and influencers who, rightly or wrongly, see .NET as ill suited for startups.

4. Speed of development.  Compared to Ruby on Rails, ASP.NET MVC and .NET will take you longer to get your MVP done.  It's true that RoR itself makes initial development much faster, but the bigger advantage is in the range and quality of OSS.  .NET has a lot more OSS than people think, but with Rails it's almost impossible to think of typical web startup problem that is not already solved with some awesome gem.


Perhaps it might be true that RoR tends to become more cumbersome as a system grows in complexity, especially if you don't have the best devs.  But that's a problem that (let's be honest) odds are you'll never face. When you do, you're in a good place to solve it.

It's also true that issue #1 might be too small to matter, especially if you use an OSS database.  Indeed all of these issues together do not make a definitive argument.  Who would tell the Stack Overflow guys they made a mistake by going with .NET.  But all other things equal, I would not choose .NET for a startup.

Tim