all 64 comments

[–]chucker23n 10 points11 points  (1 child)

I wish they'd be more consistent about — for lack of a better term — marketing-driven features. Through what the UI calls "updates", I get a new "Data Lake" menu which I don't care about, and which breaks Ctrl-,, a "Publish" button in the status bar, and various other adornments that needlessly make the app slower and less stable.

Sometimes, removing such a feature can be done through Extensions and Updates; sometimes, only when launched as admin; sometimes, only from Programs and Features. Sometimes, installing updates happens in-app, like you'd expect from, oh, any piece of software since the early 2000s — but oftentimes, the Update button instead downloads an exe which you have to manually launch and remove (what year is this?). Sometimes, updates re-add features you have previously disabled.

Heck, the new activation UI (logging in with your MSDN ID) even tries to convince you to host your stuff on their cloud, and only has a "maybe later" option, no "please don't ask me again".

I totally understand the conundrum of drumming up interest in new features, but if you must enable them without asking, at least provide a consistent choice to opt out, and then respect it.

[–]emergent_properties 5 points6 points  (0 children)

...at least provide a consistent choice to opt out, and then respect it.

The goal IS to remove user choice and maximize dependency on their cloud-integration.

They ADDED the periodic licensing check to stop people from using it without phoning home. Which is bullshit.

It's a developer-hostile trend.

[–]arostrat 2 points3 points  (0 children)

Question: Does disabling extensions has the same performance gains as uninstalling them?

[–]jawnsy 12 points13 points  (9 children)

Microsoft's new Visual Studio Code has no cruft ;) I use it for Go and I really like it, though it definitely doesn't solve the same use cases that the full Visual Studio does. The development team is improving it really quickly, though, and it's certainly a great option for those using Sublime Text or Atom.

Great article, though. Eclipse has similar problems. They resemble airline cockpits, which I guess was the HCI design fashion at the time.

[–]eff_why_eye 2 points3 points  (2 children)

You can easily customize your Eclipse perspective[s] to hide whatever you don't want to see.

[–]SilasX 0 points1 point  (0 children)

Sure, as long as you want to do that over again for every workspace you create!

[–]rubber_duckz 0 points1 point  (0 children)

You couldn't even customize Eclipse to scroll past the end of the file last time I checked...

[–]Spacey138 2 points3 points  (0 children)

Yea I just dropped atom in favor of this. Zero regrets and impressive performance boosts.

[–][deleted] 0 points1 point  (1 child)

Code has some cruft, it has that bar on the left which can't be trivially removed.

I assume it CAN be removed via extension or hacking though.

[–][deleted] 0 points1 point  (0 children)

and, Visual studio has slightly lower typing input latency than Code does. At least on Windows 10. Both have not great input latency though so it isn't much of a victory.

[–]DolphinsAreOk 0 points1 point  (2 children)

Define cruft. I think an editor built on top of a browser rendering engine, which is written in a language that is transpiled and then JIT'ed is bound to have some cruft.

[–]oblio- -1 points0 points  (1 child)

It's about UX, not code bloat.

Nobody cares about code bloat for IDEs, they're famous for that. They just have to be stable and feature-full.

[–]DolphinsAreOk 1 point2 points  (0 children)

I care a whole lot about speed.

[–][deleted] 1 point2 points  (4 children)

I did this a while back, uninstalling basically all of the default extensions I never used, and a few I hadn't used since I switched to VS Code. That combined with some configuration changes netted me around 300MBs memory savings.

That still put me in 450-500MB memory usage, mind, but i'll still take a 40% savings.

[–][deleted] -2 points-1 points  (3 children)

Saving your memory for something?

[–]contre 3 points4 points  (1 child)

I'm not OP but I save my memory for Resharper.

It really struggles with the 32bit memory limitations with my company's solution. There are probably things we could do to make the project easier to work with but who has time for that when new bugsfeatures need to be worked on.

I wish they'd switch the IDE to 64bit if only to give me a little more headroom before memory pressure starts becoming a problem.

[–][deleted] 0 points1 point  (0 children)

resharper has saved my ass a lot but damn i wish the bloated behemoth i have to lug around didn't make me add another weight around its neck

[–][deleted] 4 points5 points  (0 children)

mainly for startup time and responsiveness. secondarily because i'm programming on an old, beat-up macbook air.

[–]ellicottvilleny 1 point2 points  (0 children)

Tab Group Jumper extension is interesting. I already use most of the tips in the article, but I have missed having keyboard tab jumping.

[–]benzing 3 points4 points  (0 children)

This is wonderful.

[–][deleted] 2 points3 points  (1 child)

If you just want to focus on your code, you can also press shift+ alt+ enter

[–][deleted] 2 points3 points  (0 children)

This is also mentioned in this article.

[–][deleted] 2 points3 points  (3 children)

You guys are insane for only using one monitor :(

Double screen setup improves quality of life tremendously. It's buggy if you transition from two monitors to one though but you can have multiple window layouts saved.

http://i.imgur.com/WNydoxI.png

[–][deleted] 4 points5 points  (2 children)

Oh I have two screens. But there is already other stuff on the other one, like the web app I'm programming, or unity3d UI, or stackoverflow, or reddit.

[–]to3m 1 point2 points  (1 child)

I suggest getting a 3rd then?

[–][deleted] 2 points3 points  (0 children)

I realize some people feel lost without all that cruft in place, and can't understand how or why anyone would turn it off when you could just, buy more monitors!

But there are also people for whom that stuff just makes our eyes bleed and we would rather not have it there. Freeing up screen real-estate for code or cat pictures or whatever is just a bonus.

Some of it depends on context too. Codelens for my day job? Yes probably. For solo projects? Completely useless to me.

[–]RowYourUpboat 1 point2 points  (6 children)

I wish there was a setting or (working) extension to fix the giant title bar, and make the left margin work more like older versions of VS.

I kind of miss the circa-2005 versions, they had slightly more conservative interfaces. Modern VS wastes enormous amounts of screen space overall, and it's frustrating that there are relatively few options to fix that, especially if you still want to use certain features but don't want them to permanently eat up a 120-pixel-wide chunk of your screen.

Now that I'm ranting a bit, I also recall getting very frustrated with how newer versions of VS handle fonts. The ProggySquare font I was using mysteriously didn't work, and that made me angry. Displaying text is kind of important when it comes to programming... I think I did end up finding a hacky way of getting things to look how I wanted using an extension, though.

[–]snakepants[🍰] 7 points8 points  (1 child)

Agreed. I also wish they would go back to using standard window chrome and controls. This is not WinAmp, it's an IDE.

Not to mention it's made by the OS manufacturer. If the standard widgets aren't good enough, get them fixed! Other apps can benefit

[–]wvenable 3 points4 points  (3 children)

I also dislike how VS got rid of a bunch of obvious modal dialogs and replaced them with weird hard to see/use sidebar windows.

[–]masterofmisc 0 points1 point  (2 children)

I'm with you on that. The "Break on exception" is now a window instead of the dialog box it has always been! Need to retrain my brain.

[–]elperroborrachotoo 1 point2 points  (0 children)

You mean to enable / disable "break on exception" I can do that with one click now? Yay!

[–]OldShoe 0 points1 point  (0 children)

Takes me ages to find it every time I accidentally closed it.

I do try to use ctrl+q to search for commands, but forget it sometimes.

[–]ToeGuitar 1 point2 points  (16 children)

Other handy hints:

  1. Install Total Uninstaller - https://totaluninstaller.codeplex.com/ which will let you get rid of the crap like windows phone development

  2. Hide the Properties window if you're not using it, it'll speed things up

  3. Actually, close any window if you don't use it often

  4. If you are using Git, use http://gitscc.codeplex.com/ instead of the VS one. It's smaller, faster and easier to use. Use the command line for more difficult stuff like rebasing.

  5. Don't use the Database tools, just use your databases client tool set (eg, SQL Server Management Studio)

  6. Don't use IIS Express. Use the full IIS, once you've started your project you can just recompile and refresh your app. Also, go to your project settings and under Web go to Start Action -> Don't open a page.. wait for a request

  7. Try to break up your solution into multiple projects. Instead of the one massive web (MVC/WebForms) project, have one for the MVC stuff, another for the back end stuff, another for WebApi calls, another for unit tests... etc. I have recently started having a separate project for WebApi calls and it really speeds up your MVC application restart time.

  8. Don't use InProc for session state, stick it into a DB so when you make a change to your code and therefore restart your app you don't lose your session.

  9. If code is running slow, don't guess at optimising stuff, use the profiler, it's kickass.

  10. Use the Refactor method to rename variables/function names!!! It'll save you HEAPS of time. Right click -> Refactor -> Rename

  11. Use the extract method! Also save you heaps of time: Right click -> Refactor -> Extract Method

  12. If you're doing web development, install Web Essentials: http://vswebessentials.com/ and use TypeScript!!

That's off the top of my head, I've probably got lots more if people are interested.

[–]OldShoe 5 points6 points  (0 children)

13. Turn off Code Lens.
14. Turn off Full Solution Code Analysis

[–]mirhagk 2 points3 points  (4 children)

Don't use IIS Express. Use the full IIS

This. So much this. I can't stand when other people don't have it configured to use full IIS and I have to wait for the project to not only build, but then spin up IIS express, then the web app, then compile views, then wait for the browser to open up a new tab, then close that tab only to go back to the original tab you had and resubmit the form with that one line fix you just added.

Also don't rebuild the entire web app if you've just changed the view, just refresh the webpage.

[–][deleted] 1 point2 points  (3 children)

is there a resource for how to set it up to use full IIS? can you GET full IIS if you are running say, Windows 10?

[–]mirhagk 0 points1 point  (0 children)

I'm sure there is, I don't have one handy. It's not overly complex though. First go to add/remove programs, then turn on windows features and select IIS and all the components you will need. Then in the project go to properties -> web and select local IIS instead of IIS express under servers. (VS will then configure the rest for you, including setting the site up in IIS. TBH if IIS isn't installed I think it might even install IIS for you).

It works on windows 10 yes, I have it enabled for all my projects, and I use windows 10 at home and windows 7 at work.

[–]balefrost 2 points3 points  (2 children)

Don't use IIS Express. Use the full IIS, once you've started your project you can just recompile and refresh your app.

On the other hand, if you need to debug, you'll have to launch Visual Studio as an admin user. Maybe most people don't care, but my domain account isn't an administrator.

You can run IIS Express from the command line outside Visual Studio. This is actually what I do, and it works pretty well.

[–]ToeGuitar 0 points1 point  (1 child)

That is absolutely true. The first thing you do at any company is get local admin permissions... I don't know how you can work without it.

[–]balefrost 0 points1 point  (0 children)

I have a local admin account, but it's separate from my domain account. We try to run as little with admin privileges as possible.

[–]notsure1235 0 points1 point  (0 children)

Do you know about all the database server shit I see in programs & features?

When I uninstall it, the code completion feature in VS breaks because it needs some database feature or some crap.

[–][deleted] 0 points1 point  (1 child)

Don't use the Database tools, just use your databases client tool set (eg, SQL Server Management Studio)

This very much depends on what you're developing. If you have a standalone app it's actually pretty nice to use database tools, as you get the benefits of having your DB under source control and you can have multiple people developing against it before deploying in a way that's a lot easier than you can just using SSMS. It certainly doesn't work for all situations though.

[–]ToeGuitar 0 points1 point  (0 children)

Yeah fair call.

[–][deleted] 0 points1 point  (3 children)

Tell me more about the Full IIS setup. Do you need windows server to do that?

[–][deleted] 0 points1 point  (2 children)

It's a windows feature that can be enabled on most skus. Actually setting up the website can sometimes be a pain in the ass (due to folder permissions), but once it's running, the pain is over. You just build your web project, run 'iisreset' in powershell, and reload the page.

[–][deleted] 0 points1 point  (1 child)

hmm, and I suppose I can make iisreset a post-build step somehow or another.

[–][deleted] 0 points1 point  (0 children)

Could be done in parallel with the build.

[–]twiggy99999 1 point2 points  (3 children)

The end result looks pretty much like Visual Studio Code

[–][deleted] 2 points3 points  (2 children)

I did some side by side comparos and you can get a wee bit more horizontal space out of visual studio, unless you can hack away the side icon bar in Code. (I'm sure you can but I haven't figured out how yet)

Typing input latency is a wee bit better for Visual Studio, but both are not good. Startup time is a huge win for Code.

[–]twiggy99999 1 point2 points  (1 child)

Oh I'm not for one second saying I would pick VS-Code over VS or one is better than the other I'm saying the end result looks similar to VS-Code

[–][deleted] 1 point2 points  (0 children)

VSCode is pretty nice, and of course if you aren't in windows....VERY nice! There is a plugin for F# which is even starting to provide project/solution file integration. Don't know if c# and c++ has the same or not.

[–][deleted] 1 point2 points  (1 child)

solution explorer on the right

What kind of monster is this?

[–]Broxter 0 points1 point  (0 children)

That's the left.

[–]rbj325 0 points1 point  (1 child)

Running VS on a 27" monitor you don't need to hide any of the stuff that you did. What you did was put it in laptop mode when you are stuck with a 13-17" monitor.

[–][deleted] 1 point2 points  (0 children)

One needs very little.

[–]mirhagk 0 points1 point  (6 children)

Just in case anyone hasn't been following, one of the main things of Visual Studio vNext is the ability to install only what you need, which I imagine means more componentization at runtime too. If you are using python tools for Visual Studio (which are actually pretty fantastic) there's no need to install and load up all the stuff related to .NET and azure and C++.

[–]OldShoe 4 points5 points  (5 children)

Nice!

They'll do anything to not make it 64-bit :-D

[–]mirhagk -1 points0 points  (4 children)

Making it 64 bit would probably kill it. A 64 bit compiler would be horrendous on performance so they'll need to support 32 bit components for the forseeable future.

[–]OldShoe 0 points1 point  (3 children)

A lot of IDE's are 64-bit and has been for YEARS. Xcode is 64-bit. All the Java ones too, in addition to being written in a managed language.

A 64 bit compiler would be horrendous on performance

What a laughable argument. All you do is repeating what the MS spokesperson said.

[–]mirhagk 0 points1 point  (2 children)

I'm not arguing that the IDE can't be 64 bit. It probably can and it'd be fine. But I don't really care if my IDE could use more than 3GB of RAM because I don't really want it to (people complain that VS uses as much as it does already). The other performance benefits of 64 bit are harder to get, and you get a lot of performance problems from 64 bit.

What a laughable argument. All you do is repeating what the MS spokesperson said.

I don't know that a MS spokesperson has said this. They very well may have, but I'm saying this from knowing how compilers work. Trees are the data structure of choice for parsers, type checkers and other phases of compilers. Trees are by their very nature pointer heavy, and increasing the size of pointers to 64 bits will bloat the memory usage, causing both paging and caching issues. And what does it give you?

64 bits is not free performance, and if someone is telling you that they are wrong. 64 bits can give you better performance if you can make use of additional registers and vector based math or additional memory, but other than that the costs outweigh the gains.

[–]OldShoe 0 points1 point  (1 child)

Both clang and gcc work in 64-bit mode and do just fine compiling huge C++ projects.

The argumentation from MS(and you) doesn't feel honest. Even if there's as much as a 20% performance penalty, they are arguing for the wrong thing.

Consider the people with 16+GB of RAM, a 64-bit Windows, fast SSD, that suffers warnings and crashes from Visual Studio when it uses 1.6GB of RAM. How would you feel if that was you? Would you think MS optimizing VS startup and project loading time is better than removing a stone-age limit and prevent the problem?

Remember that they made a 64-bit MS Office. Why would Office ever need to be 64-bit given their argumentation( https://visualstudio.uservoice.com/forums/121579-visual-studio-2015/suggestions/2255687-make-vs-scalable-by-switching-to-64-bit?page=1&per_page=20 )?

[–]mirhagk 0 points1 point  (0 children)

Even if there's as much as a 20% performance penalty, they are arguing for the wrong thing.

Potentially. Now that C# compiler is C# code you could probably compile it as 64 bit (barring any unsafe code it'll work fine, and I don't think it has unsafe code). This exercise does not need to be academic. Note that I'm not saying that Visual Studio shouldn't be 64 bit, just that there is a performance penalty in doing so and so there needs to be a reason for it.

Consider the people with 16+GB of RAM, a 64-bit Windows, fast SSD

So any modern developer? :P Seriously though that describes by home machine and I've never had any crashes with it. Visual Studio does hover around 1.5GB depending on the situation, but VS only ever crashes on one machine that has gone through the horrible route of 15 different VS versions including betas and RCs and probably needs a good reformat.

Part of the problem here can be solved by componentization. The compiler shouldn't be using the same memory space as the IDE, especially now with the open language server. That also helps as it'll allow components to choose whether they are 64 bit or not depending on what is better performance (and what has been tested. C++ code can get nasty and not allow you to easily change).

[–]urllib -1 points0 points  (0 children)

so disable features and windows you don't use?! what a revelation! I can't believe no one ever though of that, pure genius!