To IntelliSense or not to IntelliSense, is that even a question?

UPDATE (tl;dr version):

As it appears people seem not to read the post before commenting. I’m not questioning Intellisense’s value. I’m questioning why .NET developers get panic attack when someone mentions “let’s use X” where there’s no IntelliSense support for X.

As ASP.NET MVC team lately pushes towards third release of their framework including new out of the box view engine, more and more I hear people complaining about the current preview release of it, for one simple reason – it does not have IntelliSense (yet).

This reminds me of similar approach people had for some other view engines like nhaml, NVelocity, BRail both in ASP.NET MVC and Monorail. This can be also extended to not using Boo which is an awesome .NET language that should get everyone excited, but it’s not – because there’s not good tooling story around it Visual Studio (yes, I know about the efforts to bring that to some degree).

So what’s the problem?

I ask you. Ruby community, which seems to be the fastest growing development community at the moment uses what most .NET or Java developers would call “primitive tools”, with hardly even syntax coloring, yet what they seem to be emphasizing the most when they compare Ruby to other platforms is productivity gains.

So is refusal to use something unless it provides IntelliSense just an inner fear in .NET developers? I would envision it to experience children have when they learnt how to ride a bike with additional wheels on each side, and now the additional wheels were taken away.

Isn’t this behavior as irrational?

 

[#Beginning of Shooting Data Section]
Nikon D2Xs
2009/07/03 11:30:57.3
Tiff-RGB (8-bit)
Image Size: Large (4288 x 2848)
Color
Lens: 24-70 mm F/2.8 G
Focal Length: 58 mm
Exposure Mode: Manual
Metering Mode: Multi-Pattern
1/180 s - F/11
Exposure Comp.: 0 EV
Sensitivity: ISO 100
Optimize Image:
White Balance: Color Temp. (4800K)
Focus Mode: AF-S
VR Control: OFF
Long Exposure NR: OFF
High ISO NR: Off
Color Mode: Mode II (Adobe RGB)
Tone Comp.: Normal
Hue Adjustment: 0¡
Saturation: Normal
Sharpening: Medium high
Flash Mode:  
Flash Exposure Comp.:  
Flash Sync Mode:  
Image Authentication: OFF
Image Comment: (C)2008 HALL IMAGE PHOTOGRAPHY      
[#End of Shooting Data Section]


Posted 10-24-2010 2:51 AM by Krzysztof Koźmic
Filed under:

[Advertisement]

Comments

mattmc3 wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-23-2010 9:57 PM

I think this one is specifically about discoverability.  With any new product, intellisense is the easiest way to discover new APIs and features.  We .NET developers do HTML, CSS, Javascript/jQuery, and T-SQL without intellisense (seriously, who doesn't turn off intellisense in SSMS - it's abysmal!).  The real crux of the issue is that developers works faster in an environment that behaves in a consistent way.  You develop habits... even bad ones... but it becomes part of how you develop and it feels awkward when hitting ctrl+space doesn't do anything.  Just like if you turned off automatic builds in VB - C# devs like hitting ctrl+shift+b all day long, but VB devs would lynch you if you took that feature away.  It's more about what you're used to and discoverability than about IDE hand-holding.

Rod howarth wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-23-2010 10:40 PM

From what I've seen, many Ruby developers are moving to RubyMine by Jetbrains (makers of Resharper/IntelliJ) which has code completion/intellisense.

Chad Myers wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-24-2010 12:41 AM

The important point is fast feedback cycle. With Ruby/Rails IntelliSense is not as important because it's quick and easy to correct any mistakes you may have made.

With compiled stuff, it's not as easy and certainly not as quick. It's more important to catch problems as early as possible or don't let them get there in the first place.  This is one of the benefits static typing gives you: The ability to detect problems before the code is run. I'm not saying static typing is better/superior, it's just that this happens to be one of static typing's strengths, so lets use it if we're going to be working with a static-typed framework.

KevDog wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-24-2010 12:42 AM

I definitely think that .Net development is suffering from a severe case of IDE poisoning.

Wayne wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-24-2010 12:45 AM

IntelliSense is not about training wheels, it's something that lets you do your job faster.  You type just enough to get to the next object, it's a more efficient way to write code so you're concentrating on what you're doing rather than remembering how to spell a particular object name.

DaRage wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-24-2010 9:34 AM

Very bad analogy. Using intellisense leads to more productivity no question. A better analogy is poeple refusing to go dialup after using cable modem.

Plus ruby poeple never had intellisense to begin with. If they had one I wonder if they want to give it up.

Last but not least, ruby is trash and inferior to  C# so let's not even go there.

Julian Birch wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-25-2010 3:09 AM

Anyone else noticed that Google Chrome does intellisense at runtime?  I think we're dealing with a choice brought about by inadequate tooling.

More generally, I think you need to do more REPL work in a dynamic language.  That's not a bad thing.  A decent C# repl would be brilliant...

Dietrich wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-25-2010 9:51 AM

Your analogy is off. Once you know how to ride a bike. you can take off the training wheels and ride any bike.

Once you know what features are offered by an API or Library, you can't take off the IntelliSense and know what features are offered by any API or Library.

IntelliSense is a fantastic learning tool. It's more challenging to learn anything that does not support it.

cb wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-25-2010 10:39 AM

IntelliSense is not a crutch, but a standard feature much like wiper blades on a car.  Expectations have risen to demand it since it is possible and improves productivity.

Jordan Day wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-25-2010 10:59 AM

This is a pretty good post, Krzysztof, and something I've wondered myself for a while. I think mattmc3's comment pretty much hits the nail on the head, that reliance on Intellisense is a learned behavior in .NET developers. Obviously it's great to not have to memorize namespaces and just hit shift-alt-f11 when you want to add a using statement for a particular class's namespace, but after a while without Intellisense I'm sure we'd all be a lot better at remembering a class's associated namespace. The productivity gains you get from Intellisense probably decrease in an inverse relation to your familiarity with a given library. That is, like mattmc3 said, it's all about discoverability. The BCL is huge, and I for one appreciate having a bit of a tour guide.

I would also argue that a large part of the claimed productivity gains from Ruby (specifically Rails) development stem from the convention-over-configuration approach of that framework. When you don't have to spend as much time writing boilerplate, left-side-right-side junk, you're able to focus more on the actual problem at hand.

Liam McLennan wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-25-2010 5:46 PM

I agree entirely, and think that your analogy is perfect.

Another problem with intellisense is that it can be used to disguise a bad API. Without intellisense would we have put up with the ASP.NET MVC Helpers?

If intellisense is available then it does no harm, but when technologies are overlooked because they lack intellisense it is harmful and limiting.

Harry M wrote re: To IntelliSense or not to IntelliSense, is that even a question?
on 10-28-2010 6:12 AM

One problem is that a lack of intellisense implies a lack of automatic refactoring (everything is to some degree a 'magic string').

Once you've tasted R# it's pretty hard to imagine a world where you can't rename a class without having to do a lot of work repairing unit tests (heaven help you if you have no unit tests when working dynamically).

Of course the cost of working with the tightly coupled code required for good intellisense can also drive you mad.

About The CodeBetter.Com Blog Network
CodeBetter.Com FAQ

Our Mission

Advertisers should contact Brendan

Subscribe
Google Reader or Homepage

del.icio.us CodeBetter.com Latest Items
Add to My Yahoo!
Subscribe with Bloglines
Subscribe in NewsGator Online
Subscribe with myFeedster
Add to My AOL
Furl CodeBetter.com Latest Items
Subscribe in Rojo

Member Projects
DimeCasts.Net - Derik Whittaker

Friends of Devlicio.us
Red-Gate Tools For SQL and .NET

NDepend

SlickEdit
 
SmartInspect .NET Logging
NGEDIT: ViEmu and Codekana
LiteAccounting.Com
DevExpress
Fixx
NHibernate Profiler
Unfuddle
Balsamiq Mockups
Scrumy
JetBrains - ReSharper
Umbraco
NServiceBus
RavenDb
Web Sequence Diagrams
Ducksboard<-- NEW Friend!

 



Site Copyright © 2007 CodeBetter.Com
Content Copyright Individual Bloggers

 

Community Server (Commercial Edition)