Choosing web framework: ASP.NET MVC vs Django Python vs Ruby on Rails

Please follow and like us:


    How often do you emerge from you cubicle to look around, note new faces or new facial expression on old ones? How often do you emerge from you technology stack to consider better another approaches/practices?

    If you do this rarely – bad for you, you will miss important changes in your environment, loose the track or even worse – you will work hard in wrong direction. This is important not only to be qualified, but also to be competitive and have broad experience.

    But, my time is very valuable, so even downloading something and reading its documentation is an investment I’d rather shortcut if I can. Therefore I definitely need some way to measure current trends, so I can predict outcome of my investment – diving into new technology (or even technology stack).

    As a super-web-developer I’m about to consider the following frameworks to learn: ASP.NET MVC, Django Python and Ruby on Rails.

    [Note: I’m aware that PHP has its own MVC frameworks, the most popular of which I believe are CodeIgniter and CakePHP.  While PHP is vastly more popular than any of frameworks above, I decided to do not consider PHP frameworks and leave them for another post.]

    Here are important factors to consider before start learning any new language:

    • Quality and availability of libraries.
    • Quality of tools like IDEs, debuggers, automation systems.
    • Size and healthy of the active community using the framework.  (i.e. If I run into a problem, how easy is it to google the answer?)
    • Demand of technology specialists

    Quality and availability of libraries

    It obvious that you can’t have both. It will be either limited in functionality, but well tested or will have a lot of libraries (probably third-party) which may not work or require some modifications. I tend to think that ASP.NET MVC is the first case and Django and Ruby is the second. What option is better depends on a project, deadlines and you competency in web-related areas. Hard to judge, really…so lets move on to the next section.

    Quality of tools

    I’m a big fan of JetBrains company and their products, so I was pleased to find out they have RubyMine for Ruby development, PyCharm for Python development. And I’m pretty satisfied with combo Visual Studio + Resharper in ASP.NET world.

    I didn’t review non-windows IDE, so probably I’ve missed something awesome. Please let me know if something worth-to-checkout is out there.

    As a result – I don’t see a big difference in quality of tools for those frameworks.

    Community

    Oh, that’s really interesting part. Because here we can measure something(not only rely on our own opinion). I often use Google Trends to measure relative interest in technologies.

    image

    Please note, you have to search for “django python”, otherwise you’ll get invalid results – “django” is a quite popular word in non-programmers areas.

    “But that’s not fair” – django-fan would say. Okay, we can do another search by using Google Insights and specifying “Programming” category

    image

    Interest level (click to enlarge)

    image

    Growth relative to the Programming category (click to enlarge)

    image

    On this stage it’s obvious that Django and ASP.NET MVC are not so common as Rails framework. But at the same time, interest to ASP.NET MVC is growing more than to Django and Ruby.

    Another way to avoid invalid results for “Django” meaning is to compare frameworks websites popularity:

    image

    But it is not so useful as it shows traffic for domain (asp.net), but not exact path (asp.net/mvc). So we can’t take it into consideration.

    Another good resource for technology statistics is TIOBE Programming Community Inex:

    Position
    May 2012
    Position
    May 2011
    Programming Language Ratings
    May 2012
    Delta
    May 2011
    Status
    1 2 C 17.346% +1.18%   A
    2 1 Java 16.599% -1.56%   A
    3 3 C++ 9.825% +0.68%   A
    4 6 Objective-C 8.309% +3.30%   A
    5 4 C# 6.823% -0.72%   A
    6 5 PHP 5.711% -0.80%   A
    7 8 (Visual) Basic 5.457% +0.96%   A
    8 7 Python 3.819% -0.76%   A
    9 9 Perl 2.805% +0.57%   A
    10 11 JavaScript 2.135% +0.74%   A
    11 10 Ruby 1.451% +0.03%   A
    12 26 Visual Basic .NET 1.274% +0.79%   A
    13 21 PL/SQL 1.119% +0.62%   A
    14 13 Delphi/Object Pascal 1.004% -0.07%   A
    15 15 Lisp 0.941% -0.01%   A
    16 24 Logo 0.839% +0.35%   A–
    17 17 Pascal 0.808% +0.10%   A
    18 18 Transact-SQL 0.654% -0.04%   A-
    19 16 Ada 0.649% -0.10%   B
    20 12 Lua 0.566% -0.54%   B

    And it’s not all yet. I’m proud to be a part of Stackoverflow community, so let’s count how many questions each framework rises:

    35,182 asp.net mvc
    33,409 django
    47,220 ruby
    75,875 ruby on rails

    (these numbers are subject to change each day, so you’ll definitely will see larger numbers)

    Well, looks like Ruby on Rails has twice as many questions as Django or ASP.NET MVC. To me this indicates pretty clearly that Rails is more active than Django or ASP.NET MVC. Or Rails is more confusing and people ask more questions about it, but I doubt that. Also please remember our findings from google – Ruby community is much bigger than Django or ASP.NET MVC, so Stackoverflow numbers just confirm that.

    Demand of technology specialists

    This factor is a little bit tricky and probably should be considered along with average salaries per technology. But salary vary from company to company, so let’s omit this axis.

    Indeed company has good insights on what is going on a market, so let’s examine it:

    image

    And again, we see the same picture. Ruby on Rails has spread more, but starting from January 11, interest to the technology is falling. Some may explain it by recession, but let’s take a look on ASP.NET MVC – it is growing during the whole 2011 year and start falling (along with other technologies) this year.

    Summary

    Choosing web framework is tough task because of big number of aspects to consider. Some of them we’ve examined in this post, but there are others such as language beauty, performance, hosting cost, integration cost and so on. It’s up to you to decide what framework to use and I believe your choice may vary from project to project. Despite your choice, make sure you make data-driven decision.

    Please follow and like us:

      Leave a Reply

      Your email address will not be published. Required fields are marked *