12 ms·
Does Visual Studio Rot the Mind? (2005)
- toyg 7y agoFrom 2005
- dang 7y agoAdded. Thanks!
- jcmontx 7y agoShort answer: Yes Long answer: No
- smitty1e 7y agoIntermediate answer: maybe, if you use Visual Studio to maintain a framework. I guess the classic "Why I Hate Framewoks" rant was Benji Smith and not Joel Spolsky? https://medium.com/@johnfliu/why-i-hate-frameworks-6af8cbadba42 https://medium.com/@johnfliu/why-i-hate-frameworks-6af8cbadb...
- crelex 7y agoYeah I read the shit like okay, they gonna bring this full circle to 2020 or...... wtf did I just read..
- Smaug123 7y agoYou're aware that this article is from 2005, right? It's prominently stated at the top of the article.
- dang 7y agoA thread from 2008: https://news.ycombinator.com/item?id=387495 https://news.ycombinator.com/item?id=387495
- kasperset 7y agoVery nice flowing article. I think this quote feels ever prescient, "What the Internet seems to do best is make commonly available enormously vast resources of mis-information that we never knew existed."
- EvanAnderson 7y agoI enjoyed the article, but I really want to hear the 1991 talk that he gave at the Boston Computer Society meeting re: early Windows development, OS/2, and the Microsoft/IBM split. I'm sure it's lost to the mists of time, sadly. I had no luck finding it doing some quick searching.
- markus_zhang 7y agoI also wish to locate this video or maybe the speech text. Really interested in early history of MS
- hootibles 7y agoHis email address is on his website... Maybe you should drop him a line. He might still have slides or notes.
- duncans 7y agoSlides back then were acetates on an overhead projector ;)
- julienfr112 7y agoYou mean actual slide ?
- muststopmyths 7y agoPetzold's books on Windows GUI programming were pretty much the Bibles if you wanted to understand how stuff worked under the covers of Visual Studio's designers/codegen. Great author from the perspective of someone how needs to know the innards, not just churn out code.
- charlieflowers 7y agoHis book "Code" is an amazing exploration of how computers work. One of the best books I've ever read.
- retsibsi 7y agoSeconded. He did an amazing job of combining accessibility and depth. The book opens with, iirc, the scenario of two neighbouring kids who want to communicate with each other from a distance -- how can they encode and transmit their messages? And it builds gradually and logically from there to an explanation of how the incredibly complex behaviour of computers can arise from truly simple building blocks. (Another approach to the same topic, and also excellent, is Nisan and Shocken's The Elements of Computing Systems. That was the first one to properly demystify computers for me -- until then, they were basically magic. I imagine Code would have done the same if I'd read it first.)
- cwyers 7y ago> And I sincerely hope that in five or ten years from now, we’re not still watching reruns of Friends. I have bad news for Charles.
- taneq 7y agoYour mamma told you there'd be days like these.
- Brave-Steak 7y agoWhat does he have against Friends?
- jacobush 7y agoIt's pretty cheap and simple entertainment, but I think it accidentally proved to be greater than we could know then. See my previous comment.
- jacobush 7y agoI think to me the allure of Friends is not only that it's good and that we didn't get anything better in the meantime. It's also almost like Star Trek. It's Sci-Fi now. There is technology which is distinctly modern, yet a bit different to our own, people mostly get along, there's no 1984 world actually implemented (FB, Google, China), there's effectively no post 9/11 world and the shine and optimism of the 80s and the naivete of the 90s was still around. Everything was pretty neat. The 0.01% were still mostly in hiding. It's also of course nostalgia but it's not just nostalgia .
- jstewartmobile 7y agoCharles wrote probably one of the best explain-the-computer-to-grandma books ever: https://en.wikipedia.org/wiki/Code:_The_Hidden_Language_of_Computer_Hardware_and_Software https://en.wikipedia.org/wiki/Code:_The_Hidden_Language_of_C...
- deleted 7y ago[deleted]
- retsibsi 7y agoOne reason it's so good is that while it would (I think) work for the stereotypical grandma or curious youngster, it's also really interesting for readers who aren't complete novices. It assumes no pre-existing knowledge, and it starts quite slowly, but by the end I reckon anyone who isn't a CS grad will have deepened or solidified their understanding.
- taneq 7y ago> You must define all variables before you use them. No more skipping around in your code. I skip around all over the place, but I almost always throw in a definition for a variable at the point where I first decide to use it. Maybe that's why Intellisense never annoyed me. As for the question of whether power tools like Intellisense rot the mind: No. What rots the mind is staying within your comfort zone instead of trying new things and challenging your capabilities. Power tools just let you tackle bigger challenges faster.
- arsome 7y ago> In order to get IntelliSense to work correctly, bottom-up programming is best. IntelliSense wants every class, every method, every property, every field, every method parameter, every local variable properly defined before you refer to it. If that’s not the case, then IntelliSense will try to correct what you’re typing by using something that has been defined, and which is probably just plain wrong. Maybe I'm spoiled by Resharper and similar, but I feel like this statement is wrong now, given the buttons for "generate property", "generate class", "generate method", etc. I often just start using a variable and then click generate to make it exist. Especially in the C++ world where it means editing a header file, rewriting the type, duplicating the function prototype, etc this is a big time saver.
- Matthias247 7y agoKeep in mind that this is 15 years old. Intellisense and the whole compiler were quite different back then. And it often not possible to hold a ton of things in memory - like modern IDEs do it with easy.
- yread 7y agoAlso in VS 2005 you didn't have compilation on-the-fly - so you wouldn't get the annoying squiggly lines for undeclared properties. That only came in 2008 SP1 I think. And Generate property was also added to VS quite a long time ago - but sometimes it doesn't have enough information of course like if (object.nonexistant != null) ....
- markus_zhang 7y agoOn my side I refuse to work if auto complete doea not work in a SQL editor. Am I supposed to remember every column? Of course his focus was on languages like C++ but I still think Intellisense is indeed the best thing for coding productivity. However coding is different from programming so that's a different story.
- LandR 7y ago> However coding is different from programming so that's a different story. Exactly this, coding is just typing. I've already solved the problem and now I need to write the code to implement it. At that point I want all the help / typing assistance I can get.
- ivan_ah 7y agoAnecdote from this week: I've been working on a Python project that uses several classes and subclasses, with code paths that move around a lot through the class hierarchy. I was trying to add some functionality but kept getting bogged down trying to make sure all the subclasses implement the same interface, using Atom as the text editor. Then I installed PyCharm and completed the task in just a few hours thanks to the "find uses" and jump to definition functionality. I was also able to refactor some less-than-good variables names. I've always hated IDEs for personal projects (to avoid mind-rot), but now I'm starting to think for large enough projects you just need an IDE. The only drawback I see is a few millisecond lag on all actions. Every time you scroll, or clock on something there is a lot of things going on in the background, vs. Atom which feels near-instant.
- apetresc 7y agoYou definitely don't need to go to a full IDE just to get find-definition and find-references. Those are basic features of any ctags-enabled editor, and nowadays with the momentum behind LSPs you get carrier-grade versions of it without even needing to generate a tag file. (In fact, Neovim's next version will actually ship with an LSP client, you won't even need an extension for it). I just bind 'gd' and 'gr' to go to definitions and references, respectively, and I'm good to go in vim.
- bordercases 7y agoVery popular LSPs actually have poor support for basic definition/reference jumping. `javascript-typescript-language-server` sticks out to me as my first disappointment. And the only implementation of a vue language server is no better, where tls would just throw errors for mixing HTML templates with scripts even if it handles the Javascript properly.
- fiddlerwoaroof 7y agoWhichever language server the tide package uses in emacs has excellent jump to definition abilities.
- 7y ago
- deleted 7y ago[deleted]
- rkagerer 7y agoI like it, just wish it were faster.
- jodrellblank 7y ago> I don’t know what rule you go by, but for me it’s always been simple: “Three or more: Use a for.” This is why we have loops. This is why we are programmers Walking away from stage, he probably thought “I should have said, ‘programmers count 1, 2, 3, for’”
- retsibsi 7y agoL'esprit d'escalier by proxy, 15 years after the fact... I like it :)
- sytelus 7y ago"Twenty years ago, in November 1985, Windows 1.0 debuted with approximately 400 documented function calls.5 Ten years later, Windows 95 had well over a thousand.6 Today we are ready for the official release of the .NET Framework 2.0. Tabulating only MSCORLIB.DLL and those assemblies that begin with word System, we have over 5,000 public classes that include over 45,000 public methods and 15,000 public properties..." This is our constant struggle in the modern world where the complexity is simply outstripping the capacity of the human brain. It's happening in physics, biology, genetics... Some authors question why we need all this complexity? Isn't complexity bad? I'm forming a view that the complexity is in fact necessary and we try out best to minimize it but beyond a certain level, it's simply isn't possible to get rid of it. This is only accelerating. Classic physics was easy to understand but all the advances have made physics (and other fields) slowly inaccessible to a larger and larger population without going through intense add-on multi-year narrowly scoped learning. It seems we are at the point that to comprehend the latest in quantum mechanics you need yet another 16 years of learning after you already had 16 years of high school+college. In other words, time to climb the knowledge pyramid doubles approximately every 100 years. By that speculation, in year 2100 the knowledge pyramid might have grown so big that to reach top might need 48 years! At this juncture, it might become apparent that the human life span is simply not enough to climb the knowledge pyramid starting from the basic arithmetic to the latest and greatest in physics anymore. We reach tipping point where biological limitation of life spans, memory capacity, recalls and search become truly limiting. I think this is where AI would be super important. From that point onward, we will need to rely on machines to tell us the simplified, intuitive but inaccurate version of the truth that we can sort of comprehend with our limited hardware, like automated machine-generated 1000+ steps proofs. That would be an interesting world.
- herval 7y agoArguably, we're already past the point where it's impossible for a single human brain to retain all knowledge needed to build today's society, or even to fully dominate a field right physics, biology or genetics? Complexity isn't "bad" - complexity is a property of all evolving things, from code to life. In sciences, it just means we're collectively learning more, faster and better. Complexity is beautiful!
- FeepingCreature 7y agoFor the record, my mobile phone has made me significantly happier and more satisfied. Ironically, maybe the main factor is that I go outside more. (Because I can no longer get lost, and because I can listen to music when I get bored.)
- unixhero 7y agoCan someone explain the concept of mindrot?
- waynesonfire 7y agoit's like trying to navigate around town after you've turned the GPS off.
- MarkSweep 7y agoWhile some of his complaints now have solutions[1], when WPF (previously known as Avalon) is used with care, the resulting XAML is much more diff-able and code-review-able. The CodeDOM serialization method is dense and small changes can cause huge code diffs. On the other hand, WPF is a lot more complex than WinForms. There are a lot of different ways to use, many of which involve data binding that is not evaluated till runtime. There are ways to make some databinding type-checked at compile time, but it is not built in. WinForms data binding is pretty limited, so generally it is easier to track down what piece of code is causing something to display on the screen. WinForms (and the Win32 resource scripts that can before it) are more limited in what they can easily express. So the resulting UIs tend to be a bit visually and behaviorly similar. This is nice for devs because you have a design already laid out for you. It's also nice for users since the apps are more consistent and predictable. WPF gives you a big blank canvas where it is hard to make something look decent. And enables making your app look completely different than anything else. So in conclusion, I agree that WPF enables more understandable code to be created by people who care. Unfortunately it is often to used to add a bunch of needless complexity. [1]: For example, the GenerateMember option in the WinForms design can be used to suppress generating fields for controls.
- tonyedgecombe 7y agoEvery couple of years I take another look at WPF but it always feels like wading through treacle for me. I'm so much more productive in WinForms. Perhaps if I dedicated a year to it I might come out the other side a productive WPF programmer but I have my doubts.
- zubspace 7y agoI'm in the same boat as you. The windows forms designer is such a joy to use. But as soon as you need to add special behavior to some controls it can get quite hairy. I've never encountered a complete roadblock, but we have a ton of code for windows forms controls which look more like workarounds or cheap hacks. But hey, it works. I also like the consistency of windows forms. This is awesome for administrative and business users, who just want to get their work done. There are no UI surprises. But your tool will look like an ugly duck, if it is used in an environment with shiny Web and WPF applications. For this reason alone, we had to make a split between forms and WPF applications. Windows Forms for administrative UI, WPF for end users. (By the way: I recommend outsourcing the design part to another company specialized in WPF design. Designing nice WPF UI is a black art.) There's also the fact that Microsoft calls forms legacy tech, but I'm not yet too concerned. I would be more concerned to rewrite all WPF application with the next shiny framework coming around...
- ak39 7y agoThis was prescient back then. Because the Visual Studio mindset was all about patterns and conforming to patterns, the IDE behaved as though you were only a patterns-based programmer. It wants to force you to follow _their_ patterns. And in that, the VS juggernaut of code-generation has enlarged so colossally that you need only start a new REST API project to see the mind-numbing amounts of DTO objects and code required for layer after layer of interfaces/controllers etc for a single dataset. If a single dataset from a single table in your SQL Server database requires so much code, isn't it time we rethought the _concept_ behind the _need_ for code-generation - especially in the IDE?
- jmnicolas 7y ago> But Avalon is currently missing some amenities we take for granted, such as standard File Open, File Close, and Font dialogs, a split panel, and it has nothing approaching the new and totally astonishing DataGridView control in Windows Forms 2.0. 15 years later we still don't have a decent directory chooser, no DataGridView and a nice default theme. If you these things (and more), you have to buy a set of components from a third party that costs about $1000, which is not possible in my company.
- Rainymood 7y agoI started on Vim, then moved to Spacemacs, then Emacs with Vim bindings, now on VScode with Vim bindings... honestly, a good IDE does a lot of things for developer productivity. We have to remember that, while we are defined by our tools, we are all still building the same thing: code. What your employer/boss/client cares about is /what/ code you produce and what business value it generates. They don't really care about /how/ you do it.
- nsomaru 7y agoI eventually moved away from vscode vim to nvim + lsp because the bindings weren’t good enough. Small things added up enough to just jar me enough that it wasn’t worth it. Maybe I’ll jump in there again when I need to refactor something in a big way but for me nvim+plugins are where it’s at.
- mpfundstein 7y agoWhy not just use vim with a proper setup? If you are proficient with the bindings and modal workflow, I don't really see a reason to use those bloated alternatives that not even run in the terminal... Everytime i try something else i wander eventually back to my little vim setup :-)q
- helsinkiandrew 7y agoThis kind of mind rotting is everywhere - lists for a few shopping items, using GPS for a simple route you should be able to remember after looking at a map, reminders for important dates, using a calculator for a simple sum. I'm sure humanities over reliance on mental aids will increase Alzheimers like mental deficiencies as we age.
- GarvielLoken 7y agoUntil the Butlerian Jihad my friend
- tartoran 7y agoWhats the Butlerian Jihad?
- GarvielLoken 7y agoIt was an event in the Dune timeline where humans overthrew their machine overlords and vowed to never build machines in the lines of the human mind and never become dependent on machines or mechanical thinking again.
- oblio 7y agoOr we could, you know, use those spare brain cells to do higher level things, as the high level beings we're supposed to be. I don't know how to knit my own clothes but I doubt that has a major impact on the onset of Alzheimer's :-)
- moomin 7y agoI think the thing with this article is that it was right, but also that Microsoft finally accepted it was right. There’s no fixing WinForms, but more modern Microsoft technologies no longer work “designer first”. My VS plus Resharper can happily be used to develop from top-down or middle-out. Basically, VS didn’t make programmers dumber, but it definitely made their code worse. And Microsoft eventually started paying attention to the people who were telling them that (probably because some of them were also saying they were switching to Java). And no, I’m not smarter in environments where I don’t have IntelliSense. I just have more tabs open.
- patrickvmm 7y agoI've also noticed how intellisense affects design. It dictates bottum-up design and shapes your thoughts. You don't memorize what's in your classes anymore but get lazy and press . and scroll through the properties. New vs versions allow to disable the auto popup and allow to only display intellisense when called through C-Space. I've been using that and found that it improved my reasoning.
- blobs 7y ago> I’m prevented from ever achieving a fluid coding style because the coding is not coming entirely from my head. My coding has become a constant dialog with IntelliSense. This. Code should live in your head. You shouldn't need intellisense to see that a property doesn't exist in an object. I hate code completion, most of the time it gets in the way of your thought process. Even if it can gain you a little speed increase, it still is better to write things down for your 'codebase memory'. That's why I despise the current web development stack. You need Typescript, otherwise you might make a mistake with types? Never had that problem in the past. And just like typo's I make mistakes a once in a while, but that's OK because it helps me to learn the codebase better. You need a linter? Same story, it's always in the way as if it is more capable than me writing code. Prettier? It automatically formats your code, so the codebase doesn't resemble the one in your head anymore. I know it does work for some people and I can totally imagine that for a beginner developer it can make the difference, but for me it doesn't. In the current/modern web stack I feel like having brick walls everywhere around me and my code is definitely not getting better from it, I'm just constantly struggling with all those 'handy' and 'necessary' tools while my code memory deteriorates. Even worse is that on almost any project I professionally work on requires all those tools, not using them makes me an amateur, even in the eyes of junior dev's. I believe in writing every character of my code and testing it thoroughly, I wrote many bug free codebases with it, that's my experience.
- stinos 7y agoYou shouldn't need intellisense to see that a property doesn't exist in an object. So what do you do instead? Not just for intellisense but all other possible code completion solutions? Does that mean you always manually open a source file and look for the name of the function/member/whatever you need, then either copy/paste or manually type it? And try to remember all of them to avoid having to do that process again? I've done that from time to time and still do but it's just slower than intellisense and the likes, always.
- danielbarla 7y agoClearly, you just memorise / know everything. Jokes aside, there is a balance to be had between having to look up trivial, everyday things via intellisense, and expecting people to know every single method on a massive set of libraries. I'm always surprised by people who claim that the latter approach is a good investment of their time and mental capacity. At some scale, it simply cannot be optimal.
- gerikson 7y agoWell it's been 15 years, so any instances of brain rot should have surfaced by now.
- oblio 7y agoDoes the flying shuttle decrease your fitness? Possibly, but look where it (and all the inventions that were triggered by its creation) got us...
- rafaelvasco 7y agoOn the contrary. For me, good intellisense just makes coding flow better. If you're just getting your feet wet with the API, auto complete greatly helps you discovering the API. If you're already a veteran, coding just flows at lightning speed as long as intellisense correctly predicts what you want, which is the case "most" of the time.
- irishcoffee 7y agoIt’s been a few years, but for c++ on a large codebase I vastly prefer qtcreator. Intelligence regularly hung while doing some background rescan. It was infuriating.
- rafaelvasco 7y agoYeah, Visual Studio is more of a C# IDE than a C++ IDE I think; I don't code in C++ but if I did I'd never pick VS; Of course C++ is a vastly harder language to parse compared to C#;
- GarvielLoken 7y agoSounds like a guy who would really hate Smalltalk :D
- zelly 7y agoIDEs are not going away. The next generation programming languages will have to be IDE-first. The syntax would have to be designed specifically to be amenable to autocompletion by ML language models. One day code will not even be authored in a text format. It will be a binary format that is manipulated by some kind of visual graph editor. Who knows what it will look like. With brain-computer interfaces you may not even be typing or using your hands anymore. Don't get married to plain text.
- clownpenis_fart 7y agocode is written once, modified 10 times, and read 100 times coding productivity is absolutely not about how fast you type the text into the computer it is very much about how readable the code is though, and ide fancy autocompletion aren't helping with that text has proven for millenias to be an effective way to represent ideas, so do get married to it
- dvfjsdhgfv 7y agoA wonderful read. I love how he basically mocks the product everybody in the room is using. "While I’m on the subject of variable names, I should say something good about Visual Studio." - that's basically the only time where he says something good about it.
- 32gbsd 7y agoWrite lots of OOPs so editors can parse it and give it back to you so you can write more OOP.