Rails and .NET

I recenty had a friend tell me that he would "never work in .net again." He'd rather find a different job than work in .net. Literally. He's a big fan of rails.

What do YOU think?

If you've done extensive programming in both languages, tell us if you feel the same way. How much more productive are you in one versus the other?

14 comments:

  1. I won't comment on the specific question (even though I have an opinion) because I haven't used either one. But I've faced similar situations. Several years ago as a J2EE programmer, I had just spent a weekend converting an internal app to PHP and had a great time. PHP was extremely easy to learn- although coming from a J2EE background I did everything in a very structured, OO way. After that, when I was looking for a new job, I wanted one doing PHP and found one, and I have never regretted it.

    More recently reading about and trying my hand at Django, I was very impressed and psychologically was sold based on how easy it was to get something up and running. But I decided that my reasons for switching wouldn't be the right ones. I face programming and prioritization issues, not getting an app started or administering it. But I could already see on the horizon that some things were going to be a real challenge that I had already taken care of in PHP- partly because of the new language, Python, and partly because of what it would take for me to get to the point that I could use it as well as PHP.

    I think as programmers we leap onto a new framework or language when it impresses us and we move to it in our minds because of how much better it seems. But really, every language or framework has a different set of problems. And that new one you're in love with just hasn't shown its ugly side because you haven't coded your whole app in it yet.

    ReplyDelete
  2. I'm not too qualified to answer here as I've had limited experience with .net and only mild experience with rails, but I do have a grasp of their weaknesses and strengths, and I think it comes down to what size (and type) of project you and your friend are talking about. Rails is quick and dirty with a flair of finesse. .Net is a swiss army knife the size of an oil tanker. Both provide and require--with .net a much more flagrant offender--too many needless layers and abstractions to get small to medium-size projects finished on time and satisfactorily (for the developers), but in this regard rails has a clear edge.

    It's painful even to put .net and productive in the same sentence. Rails was built for productivity. .Net was built for an architecture that was supposed to do everything, and so it does, but with considerable frustration.

    I'm more productive in rails. But ... I work on small to medium-sized applications, mostly web applications. For enterprise applications, which I assume is one of your primary concerns, rails will get you started faster but slow down, and .net will get started slower with pretty even productivity throughout. That's my quick and dirty, anyway.

    And you haven't asked, but I feel it my duty to say: Python and Java coupled with a lean UI toolkit or web framework (and maybe GWT...) is a combination hard to match for all sizes of projects. Rails might match it. Maybe.

    I agree with your friend: if I could help it I would never work with .net either.

    ReplyDelete
  3. Having used both, this sounds like need for variety in life issue more than a technical issue. Sounds like your friend was looking to do something in a different way more so than looking to do it better.

    ReplyDelete
  4. I develop in .net for my day job but tinker with Rails for fun. I was never really happy developing with the asp.net webforms I just found it working against the web model. It was during this time that I starting playing around with Rails. For me, Rails just made sense immediately, it's so quick to implement. However I've really gotten into the .net MVC framework I find it also very comfortable to work with. Sometimes I feel like a pendulum, swinging my preference between coding MVC on Windows to Rails on Mac they are both fun.

    I certainly feel more productive on Rails, I seem to be able to work faster - as I long as I work by the constraints of the Framework. However, I am more satisfied with applications I write in .net, they seem to feel more complete.

    ReplyDelete
  5. I feel that way about Java. I've reached the point where I can be picky about what projects/clients I want, and anyone who wants something involving Java is instantly rejected. If I didn't want to enjoy my work, I would do something else.

    .NET clients/projects get a lot of scrutiny, and most of them get rejected too, but if they're interesting enough, I might go for it.

    Ruby on Rails, I like, and actually actively look for clients with interesting RoR projects.

    ReplyDelete
  6. There's more to Ruby on Rails than just the differences between the programming language and the capabilities of one architecture over another that appeal to people.

    At Ruby on Rail's core is an idea about programming and making things for the web that other frameworks don't have. I think that people flock around this embedded idea because they like things that are simple, fun, and have energy and community excitement behind them.

    I don't have a formal programming background, but have worked in a few different programming and scripting languages (Java Server Pages, Servlets, PHP, JavaScript, ActionScript, and Ruby). Of all of them, all I can say is that Rails has been the easiest and most fun for me to learn and use. The framework has allowed me build simple and functional sites that work, and I've had fun doing it.

    ReplyDelete
  7. To a large degree I think this boils down to personal preference. I myself am a Java developer. I know Java inside and out. I'm involved in the Java standardization process with the JCP. I work with Java at work and I use Java for my personal projects.

    If my boss told me I had to work on a .Net project, I too would find another job. It's not because there's something inherently wrong with .Net. It has more to do with the fact that I've invested so much into the Java ecosystem, I wouldn't be nearly as productive in a .Net environment and therefor wouldn't enjoy it. (.Net would also require me to use Windows but that's a different, albeit equally opinionated, topic.)

    ReplyDelete
  8. As someone who uses ASP.NET daily and someone who has used Java and PHP and other languages in the past, I think most people are simply not trained properly in developing in the .NET platform. If you are a web developer, ASP.NET in particular is a completely different paradigm to develop with and if you do not have the proper training, I guarantee you will be frustrated (especially if you come from another platform like J2EE).

    Most web platforms you can pick up without much work because, in general, they are all very similar. They all deal with requests, posts, cookies, forms, querystrings, include files, etc.

    But ASP.NET requires very specific training to understand user controls, server controls, events, postback, page life cycle, and more. It is not something you can just pick up on your own without reading a book or two or getting some training.

    That is the mistake most people that I have met that do not like .NET have made. They think it will be similar to every other web platform out there and it is not.

    In my opinion, once you understand it, it makes a lot of sense and will save time in development. There are a lot of features built into ASP.NET and the .NET framework in general that are time saving and useful. But you have to learn it first.

    If you don't want to learn or want to stick with your usual way of doing things, that is why Microsoft added the ASP.NET MVC model. You will lose a lot of the nice features of ASP.NET but you will be able to stick with what you know and are comfortable with.

    ReplyDelete
  9. .NET? Ruby?

    How about something post 9/11?

    Grails all the way baby!!!!! All the finesse of Rails + all the enterprise goodness of Java.

    ReplyDelete
  10. I believe that there isn't a golden hammer. The best platform to use depends very much on the type of application being written. I like Java, for a day job I write C# .Net. The languages we like can vary on our own mentality. I quite enjoy the low level stuff. I can program in C/C++ and I quite enjoy it but for me it is just too slow going for me to want to write any application of any great complexity in. I have used a number of scripting languages like PHP and Pearl as well as a little look a Python. I have not used Rails yet but heard lots of good things about it. I have found that I like using scripted languages for quick prototypes but find I miss the power of languages like Java and C#. Java and C# really most comfortably match my development mentality. It is hard though because the C/C++ people treat me as inferior because they can feel languages like Java and C# are used by people too "weak" to cope with C++. Then equally I get criticised for people who love the scripting languages for being stuck with things like Java and C# which are "old fashioned" or too slow to work with according to them. I have accepted that I just can't win so I go on liking what I like and not being told what I should like by other people. Comparing Java and .Net I have found in the end the hardest difference to deal with was not technological at all but the very different cultures and mindsets of the Java vs .Net communities. I would like to try Ruby for myself but don't think I would end up ditching Java and .Net to use it.

    ReplyDelete
  11. This is a tastes great vs. less filling argument.

    ReplyDelete
  12. Rails is what made Ruby popular. Rails has been so successful that it's being imitated in virtually all web-languages (see cakePHP/codeigniter as PHP examples).

    Rails is a development framework which is built for fast prototyping, a minimum of boilerplate and simple code. J2EE (and Im sure .NET is in the same boat since they're competitors) is filled with poorly designed template languages and a rat's nest of xml files etc. etc.

    Having built both J2EE/Struts and Rails applications I would go with any Rails-like framework any day.

    ReplyDelete
  13. I think the bias that exist against .NET (and more so against MS) is one of the things that is preventing the other tools from gaining bigger userbase.
    Not because of the tools themselves lack much but because of the attitude often shown by many of those using these other tools towards MS and .NET.
    We have the same issues in the browser war with people evangelizing in extremist fashion for FF against IE.

    But it is nice to read the comments here made by more level-headed people.

    ReplyDelete
  14. I'm not a developer, but I know several that have said the exact same thing!

    ReplyDelete