Do you think VS and Intellisense make us dumber?



I read this article, the parts of "Intellisense" and "Generated Code":

Do you think the Author's is right?

I don't agree that Intellisense is soooo bad for programmers. VS for C# uses to "hide" the controls' events in another file, but you can find them if you know enough about the language and you can modify them by hand. And with VS I don't need to memorize all the .Net classes I use. I think it doesn't matter if you use an IDE or notepad but, if thsese RAD tools exist and are free... Why not to use them?

  • Oddly, marc_s, what you call crap is the details that make up the system. Disregard them, and you will write some bad software. Just a thought…

    Paul Nathan30 июля 2009, 21:17
  • No - but it saves you from having to learn tons of crap by heart! :)

    marc_s30 июля 2009, 18:30
  • You are only as dumb as you want to be. Tools do not make people dumber. Laziness and lack of drive do.

    Matthew Jones30 июля 2009, 18:29
  • @ Пол: я так не думаю - если вам не нужно запихивать все эти детали в свой мозг, чтобы выучить их наизусть, я думаю, вы свободны для некоторых более продуктивных мыслей и идей. / p>

    marc_s31 июля 2009, 06:47
  • That’s the old IDE vs. VI discussion. Or GUI vs. Command Prompt. I will always side with less work accomplishing more in less time.

    Padu Merloti10 января 2010, 05:23

21 ответов


No I very much disagree with this point.

Yes, I do agree that intellisense allows me to keep less of an objects growing number of members in my head. I am dumber in the sense that I often know less about the intricate details of projects where I use intellisense heavily.

For instance, I can probably rattle off all of the members of the C++ types I use with great accuracy. I tend to be a VIM only guy for my C++ projects and hence don't really use intellisnsee. In C# and VB.Net projects though I couldn't rattle off the members with the same accuracy as I rely on intellisense more often.

But there is a trade off. Keeping all of the members in my head comes with a cost. When writing code, instead of focusing on the algorithm, I focus on the members. I have to constantly think about the naming convention of a particular type, or the parameter list, what's byref or by val, when writing out an algorithm in C++. In C#/VB.Net I'm more free to think about the algorithm as the IDE takes care of finding the members for me.

Does this mean I'm dumber? No it simply means I'm able to focus on the problem I'm actually trying to solve. I feel this makes me more productive and hence smarter not dumber.


The question is of course....does Intellisense make programming less of a skilled profession?

  • I don’t think so. Intellisense doesn’t do the logic.

    Broken_Window31 июля 2009, 00:51

It doesn't make smart people dumber, but it makes dumb people look smarter

  • Не могу с этим согласиться. В руках умного программиста инструмент - это просто инструмент. В руках глупого орудие может стать костылем.

    Bob Somers30 июля 2009, 20:50

Not dumber, it makes us faster :)


Detail memmorization is not the most important skill in software development. It is better to have problem solving skills and the ability to find the information you need. If you invest more time in the details you will be lost when the next greatest language is born, but algorithms and patterns will still be relevant.


Yes, I agree with the author. Intellisense (and many other Visual Studio features) is indeed "making us dumber" for the reasons mentioned in the article.

That's not always a bad thing. Sometimes it's more desirable to be productive than it is to get smarter. The challenge is striking the right balance. :)


Нет, современные инструменты программирования и языки помогают программисту меньше сосредотачиваться на мелочах и больше на общей картине.

Основная цель - разработать надежное программное обеспечение. Если программисту не нужно беспокоиться о запоминании каждого метода класса, он может потратить больше времени на разработку продукта.

  • Or big picture as in what the program’s ultimately doing.

    David Thornley30 июля 2009, 19:10
  • Yes, Big picture as in what matters to the Business ultimately.

    Srikar Doddi30 июля 2009, 18:40

Не больше, чем калькуляторы, предназначенные для более бедных математиков и физиков. Конечно, использование логарифмической линейки заставляет вас поддерживать мысленную модель в определенном порядке, но на самом деле это всего лишь инструмент ... и лучшие инструменты позволяют вам лучше работать.


Программирование просто продвигается вперед, чтобы облегчить жизнь программисту и сделать его более продуктивным.

Это все равно что жаловаться, что мы больше не пишем ассемблерный код ... важно знать основные концепции и идеи, лежащие в основе этого, но работать с ним было бы странно (в большинстве случаев).


I don't think so.

Intellisense makes things like case sensitive spelling easier.

Is it MyArray.Count() or MyArray.Size() or Length(MyArray) ... ? Which return type is a particular method, again? Intellisense saves me a few minutes every day on Google for things like this.


This can be abstracted into the traditional question:

Does knowing more about the details help or hurt?

As a rule, experienced engineers and craftsman say, help. But knowing the details also lets you know when the details don't matter, which is what Visual Studio/Intellisense provides. (I'm sure there's a pithy proverb that could be said here, but I don't feel up to thinking up a quip).


Я использую intellisense и сгенерированный код для ускорения разработки, а не потому, что не знаю, что делаю. Поэтому я не могу согласиться с тем, что их использование делает вас глупее.

Я из тех людей, которые постараются узнать как можно больше о языке, прежде чем пытаться использовать инструменты, облегчающие разработку на этом языке. В этом отношении я должен согласиться с комментарием Мэтью Джонса о том, что «инструменты не делают людей глупее… лень и отсутствие драйва делают».


I find Visual Studio's tools conducive towards more experimentation. When you're dealing with the Win32 API in C (for example) you can't really poke around too easily. When you're working with C#, it's a snap to have a little explore around a library and learn what it does without breaking out MSDN or a disassembler for the entire evening.

If you're a naturally curious programmer, Intellisense won't change that. If you're not, Intellisense won't change that either. To paraphrase one of my colleagues "I think it's a waste of time looking through huge books when you can just take an implementation from the web and move on to the next thing".

It's an old argument anyway, pre-Intellisense. Does BASIC rot the mind where writing in x86 doesn't? Is knowing an algorithm inside out relevant when every single programming language you're going to use in your role has a tried and tested library?

I find that those who consider programming a hobby or a skill are inclined to comprehend and investigate. Those who consider it the day job don't. Regardless of any frippery around it, it's more about a programmer's mindset than what is made available.


Adding my two cents here.

From my own experience and as mentioned in the TFA I would say that the only drawback I've encountered so far is when you learn the language you might pick up bad habits. Using ArrayLists instead of List only because you're not aware of changing use clauses enables might give you some other datatype.

The author complains over that he gets the wrong datatypes when entering certain datatypes. While some of you will probably get a license, a weapon and start the man hunt, I've found that using naming conventions is an excellent way of forcing the intellisense to be working my way, especially when working in GUI-Control intensive forms & stuff.


Вовсе нет. Когда всплывает список intellisense, программист каждый раз просматривает весь список, чтобы найти функцию, которую он искал? Может быть, сначала, но обычно вы продолжаете печатать до тех пор, пока intellisense не сузит список до точки, где для завершения будет быстрее использовать стрелки вверх / вниз и табуляцию.

Без intellisense кодирование заняло бы немного больше времени, если у вас есть опыт работы с классами, которые вы используете, и намного дольше, учитывая, что это не так. Он служит только для ускорения работы и быстрой документации всего, что доступно.


Our physics prof always said why memorize something you can look up. He always listed the required formulas on the board during exams. Seems to be intellisense is the same idea. Rather than remembering if the object uses a Count or a Length property, let VS tell me.

  • Думаю, у вас был такой же профессор физики, как и у меня. Мистер Крамер? Нет? О, все профессора физики такие? хм ..

    Jason30 июля 2009, 20:17
  • @ Джейсон: очевидно, это обычное поведение для проф. Мой учитель физики в старшей школе был таким же. Он также был профессором колледжа.

    IAbstract18 мая 2010, 08:20
  • Получите копию книги Ричарда Фейнмана «Вы, конечно, шутите, мистер Фейнман» и прочтите главу о карте с изображением кошки. Точно такой же принцип.

    David Thornley30 июля 2009, 19:13

Dumb & Lazy.


Interesting question. Sure I find Intellisense in some sense makes the job easier, but it's kind of like money. The more you have, the more you spend, not necessarily on things you need. I learned to program around '62, and somehow I got along without Intellisense for a really long time. What Intellisense does for me now is help me remember lots of classes and members that as little as 4 years ago I never knew I needed.

There's one tendency I've seen in software that never fails. Nature abhors a vacuum. Machines get bigger, so guess what, software gets bigger (but not always better). Machines get faster, so software gets slower. Now people can get help typing long names, so the code gets really verbose. Now people get help remembering lots of classes, so guess what, there are lots more classes to remember. This goes a long way to helping the software get bigger and slower.

I do a lot of performance tuning, and what is the dominant cause of slowdown? It is galloping generality caused by overdesign with too much data structure, too many classes, and too many layers of abstraction. In a word, "bloat". Here is just a small example.


It doesn't make us dumber; it is a necessity.

Back in the day (MS BASIC for me), there was no need for intellisense. The scope of the language was limited enough for a programmer to remember all keywords and functions.

Jump to today, intellisense is an absolute requirement. Take .Net for example. There is simply no way to remember or discover the many thousands of types, properties and methods. Oh sure, for a very small project you may know a bunch (100s?) of items. But let's be honest - there is no way a modern working programmer could exist without it.


No, it enables us to code faster I think. Anything to make the coding process faster, easier and simpler is a step in the right direction in my opinion.


The only qualm with IntelliSense that the author seems to have is the autocomplete when you press the space bar, which apparently he doesn't realize you can turn off in the Options menu.

Although, he claims that coding "has become a constant dialog with IntelliSense"... which makes no sense because you still have to pick the correct methods from the list! Without it, you'd simply have to search online for the name of the method instead of an instantaneous search.

It's interesting how the author ignores that IntelliSense can't tell you whether to use a StringBuilder or a String, etc.