Nitriq is a product by

A few days ago I ran across a tweet by a Ruby developer who I’ve been following for a while, in which he asks for someone to “... actually explain the value of Visual Studio and intellisense in terms I can understand?” At first, I responded with the top two things in my head:

1. It drastically reduces how much typing I have to do
2. It helps me learn a new API

He seemed to be under a misconception about the speed of intellisense, I understand why he might have thought that but it really hasn’t been an issue for several years now. But what really got me thinking is when he responded “It just seems to me that if intellisense really drastically reduces typing, perhaps the language is too verbose”.

I think the larger misconception he has is that Ruby developers solve the same kinds of problems as .Net developers. They don’t. Not even kinda. And it is these differences in the kinds of apps we build that make things like an IDE and intellisense indispensable. In general, Ruby developers create small to medium size websites - content management systems, small social networks and online storefronts. On the other hand, .Net developers create a lot of large scale enterprise applications. There are countless .net projects that have 50+ developers, the average .Net team probably has 15+ developers. When you need 3+ people just to describe what the business needs, the resulting code is going to be verbose. How big is the average Ruby team? Two or three dudes?

I am not saying that Ruby sucks. It is an incredibly cool language that can help .Net developers to look at their code through a different light. Remove Ceremony? Great Idea! TDD? Sweet! MVC? Booya! Convention over Configuration? HELLS YES. But even after borrowing as much as we can from Ruby, it isn’t going to make the gigantic complicated sales management system for a Fortune 500 company be not gigantic and complicated. Hopefully it will be a slightly smaller and more simple, but that application is never going to be so simple that you don’t need an IDE or intellisense.

If you happen to work on a beast of project with a large team and you need help finding the troublesome spots you should really check out Nitriq and Atomiq. There is a free version of Nitriq - it lets you query your .Net assemblies with LINQ. You can think of it as a super configurable, easy to use FXCop. Atomiq finds and visualizes all the places that someone has copy and pasted code in your project. When I tell people what Atomiq does, about 90% of them get a smirk on their face because they know how much this happens in their project. If you're smirking right now, just go look at it!

UPDATE: There is a pretty good discussion going on at Hacker News.

Wednesday, July 14, 2010 - 7:27 AM CST - Permalink - Comments [8]
Tags: Atomiq | Flamebait | Nitriq

Wednesday, July 14, 2010 8:51:00 AM (Central Standard Time, UTC-06:00)
Well... you're talking about Rails, not Ruby. Ruby is a language. Rails is one of its frameworks.

Also, assuming your intuition is correct that the median Rails** project is smaller than the median .NET project, you have to consider self-selection. That is, how many Rails projects that we hear about are started just for fun or as a hobby or public service? I would say tons. Just because Rails devs avoid terms like "enterprise" doesn't mean they aren't building big applications.

I think the median size of Rails apps vs. .NET just speaks to how appealing each framework/community is for people *outside* of work.
David J.
Wednesday, July 14, 2010 1:09:03 PM (Central Standard Time, UTC-06:00)
First of all, it sounds like you are comparing an IDE, Visual Studio, to a framework, Ruby on Rails (although I guess that is exactly what your friend asked you to do). Visual Studio's code management features have very little to do with the .NET framework. You could in theory have an IDE with the same code management features for Ruby on Rails (you can get very close with NetBeans or Eclipse, although it is not out of the box like Visual Studio and Visual Studio 2010 definitely raises the bar).

Second, Ruby on Rails is best described as a web development DSL rather than just a framework and as such, when dealing with web applications, you end up typing less and because the API is more opinionated, you end up having to do less discovering and customizing. As such, for web development, Ruby on Rails as a framework is more productive than .NET as a framework.

Third, the prevalence of .NET and Java in the enterprise is more likely determined by things like vendor marketing, culture, and bureaucracy than by practical reasons such as framework/tools maturity, capabilities, and the like.
Wednesday, July 14, 2010 4:17:48 PM (Central Standard Time, UTC-06:00)
.NET devs might be focusing on enterprise apps more than Rails devs for now, but that will change as organizations recognize the development speed and easier testing that are typical with dynamic languages like Ruby. I train teams in organizations ( that want to switch from Java/.NET to Ruby and Rails and have seen it first hand.

Thursday, July 15, 2010 1:44:17 AM (Central Standard Time, UTC-06:00)
Ruby on rails due to it's nature can be used in enterprise with same if not better results if you ask me. Tell me some websites as large as twitter or hulu, written in .NET (no offense). As for the intellisense, it is a nice feature but not as crucial for rails and it doesn't have to do with the problem that you try to solve but the features of the language. As I see it you don't need intellisense so much if you know the language, you need something like bundles in textmate which helps you write in lighting speed when you know the commands and how to use them.

Textmate which is the editor of choice for many rails developers has many crucial features for rails that visual studio just can't do and .NET languages may not need because they lack of the features that rails has. .NET also has many features that rails doesn't need because of lack of features.

For the record, textmate has some kind of code completion with bundle and the version 2 is rumoured it will include it.
Thursday, July 15, 2010 8:49:25 AM (Central Standard Time, UTC-06:00)
This is a very flawed assumption. The real difference is that Ruby (or Python, or Perl) is a high level language while C# is a lower level language. You will be more verbose, no matter what.

But even then, we can look at other projects that use low level languages, has hundreds of people involved but manage to keep themselves manageable. Take the Linux kernel, databases such as MySQL, Postgresql, Apache, Gnome, etc. Millions of line of C/C++ code, lots of developers spread out in the world and there is still no need for a wide use of IDE like tools. Some of them do get away with just Vim. This blows away the argument that "because the project is large and with many people, therefore an IDE like suit is utterly necessary"

It has more to do with the process of development and the techniques being used.

Not saying that .NET is bad or anything like that. I do believe that it is not productive to code .NET projects without the aid of Visual Srudio, after all they were designed to work together. But it is very wrong to dismiss other platforms on false, speculative assumptions. There are many startups, internet projects, that largely exceed the complexity of your "50+ people enterprise projects" and they are using a mix of technologies, from Ruby to Scala, Erlang, Python, C and they still can manage them within acceptable terms.

Bottomline, this argument is a non-issue and irrelevant as evidence for anything, positive or negative.
Thursday, July 15, 2010 1:26:59 PM (Central Standard Time, UTC-06:00)
Pretty shortsighted reactions above.. I don't think any of you have worked on a software project with 500+ db tables or 10000+ classes if you think Ruby On Rails can come anywhere near handling this in a good/stable/maintanable fashion.

You just need static typing and compile safety to keep this kind of project on the rails (hehe). Especially if you have a large team working on it, as the original poster mentions. It's not the IDE and "Intellisense" itself that's important, it's being able to navigate your code. If you get dropped in a codebase like this, you need to be able to look around and see how other programmers have designed the system. Good object oriented design and static typing are crucial for this to work.

I like ruby as much as the next guy, and have done many great and fun projects in it, but I *would* draw the line at a certain expected complexity of the project, or say about 100 database entities. Too often I find myself reading sourcecode and grepping for keywords when trying to use a somewhat trivial library within Ruby On Rails.

You don't want programmers doing this when trying to find out how a particular type of insurance claim is going to be calculated by the system. You want good, hard, navigable contracts. And you do not want a InsuranceCalculator.class_eval { ... } sprinkled in a file which may or not may be required at some point during code execution, possible override critical business code. And if you refactor something, you want to know what else you've affected in the system.

This is what verbose/rigid languages like Java and C# are about. You may call it a waste of typing and lost productivity, but for the huge projects out there, there just is no other way.
Thursday, July 15, 2010 11:09:47 PM (Central Standard Time, UTC-06:00)
Different tools for different jobs. Sometimes you need a shovel and sometimes you need a digger.
Stuart Clark
Saturday, July 24, 2010 6:53:27 PM (Central Standard Time, UTC-06:00)
It's good to see healthy online debate about this. But I'm going to interject an semi-agree with Stuart Clark who posted on the 15th of July (just above me).

Both ASP.NET and Rails are great frameworks, both working towards fulfilling different programmers needs.

When someone finds a language or a language/framework combination, then trying to convince them it's not the all powerful, is like trying to convince someone to not believe in their religion. They are going to fight it, they will tell you about what they're good is doing, the rules of their god, and some of the more pushy ones will try to convince you after you try to disprove them, that you should then join them.

I think stereotyping the 2 frameworks is wrong. They both can run small scale applications up to "gigantic complicated sales management system for a Fortune 500 company". There is a lot of bureaucratic views about ASP.NET's and Java's position in these applications that are just stupidly massive, and they're doing they're job, don't argue with that, cause if you do, you'll be wrong, they work, if they didn't, they wouldn't be being used for it. But also please don't say that's all the focus is on, because as we're all seeing recently Microsoft have been pushing BizSpark and WebsiteSpark, which is aimed at the smaller projects and startups out there.

On the other side of this debate is rails, which does do lots of small - medium sized applications, and even the large scale ones like Twitter don't even compare in complexity to the Fortune 500 company applications mentioned. This still doesn't mean Rails or Ruby in general can't handle this type of application.

Rails can definitely handle that sized application. High level languages and frameworks in general can. The fact that ASP and C# are compiled doesn't change a thing, they're debugging methods used at that stage is the same as our TDD methodology. Sorry, same is a bad word, but it serves the same purpose. Both help us find bugs quicker than just launching the application and playing around in it, as well as the fact they both help locate the bugs in our source code.

I'm going to explain now, I am a Ruby and PHP developer, so I am on the Rails side of this fight, of course, but it doesn't mean we are always right.

We both have equal capabilities. I saw an actual snippet of code mentioned in the comments as an argument.. WRONG! Don't do that. Code is not an argument, an implementation is an argument. A solution to a problem is an argument. Giving us a line of code and saying cause this doesn't work the same for you as it does for me, isn't an argument, as we wouldn't have needed that code, because of the different development practices, we probably would have written a different solution anyway.

There is this huge ego surrounding both parties. Just look at the original post, the writer has taken a simple question, started making assumptions about a Ruby developers views on the writers framework of choice, and so then started attacking the Ruby community because he felt he was getting attacked when he was just being paranoid. He could have just answered the question and left it there, but he felt he had to continue cause he thought his ego had been attacked, and as humans we will protect our ego and we know it. The Ruby community and any other community is no better at all, we all do this, always trying to prove we're the best out there. Embrace other technologies solutions, embrace they're triumphs, not they're losses. Just understand your language is not the only god out there to believe in.
Jack Watson-Hamblin
Comments are closed.