My personal Technology Radar: IDEs

I love Technology Radar by ThoughtWorks. It’s a recurrent written reflection on tools they use. For example, Languages And Frameworks section tells us they are to try every JS framework in existence. It’s noble. We can’t all just have fun writing the frameworks. Somebody have to use them.

Anyway, I thought that if a 5000+ people international software company which existed for a couple of decades could do it, then why couldn’t I? Look, I’m even three years older than that company.

So, in this issue we gonna discuss IDEs.

The year is 2017, the OS is Windows, the stack is .NET.

Visual Studio

Visual Studio is like a small Russian town where you have grown up. You know it, your friends are here, you know fancy places to go (all 2 of them). You are at home here. Now, imagine a foreigner who just arrived. He have no memories about the place. He knows nobody. He sees the town for what it is: and it’s poky. The infrastructure is a disaster. The line after which the surroundings start to resemble a dystopian Blade Runner scenery is in the vicinity of the city center.

Here’s a list of the most annoying stuff in VS, just off the top of my head:

  • It freezes all the time. It takes something like 20+ seconds to do a CTRL+V in a .aspx file.
  • It crashes all the time. Three times a day is a good lower-bound estimate.
  • It steals my shortcuts. Every time I open it I find CTRL+X remapped to something like Toggle line comment or Go to line.
  • The UI for shortcuts and colors configuration came straight from ‘99. Together with the previous point it made me spent my long-time memory on stuff like Edit.Cut, Resharper.LineComment and RunFromContext. And no, there is no fuzzy search. It wasn’t popular in ‘99.

Some people argue it’s slow because the codebase is huge. Admitted, the codebase I’m working with is not small. It’s not huge, though. Anyway, the Enterprise version of VS costs $5,999 per year. Let’s recap: it has Enterprise in its name, it costs twice as my car, and no, it’s not suitable for huge codebases. It’s more for What’s your name? Hello, {name}! apps.

Another line of defense is to blame ReSharper for the poor performance. I’m not sure if it’s true or not. But I’m sure that the reason why I was still using Visual Studio was its ability to host ReSharper. And now a better host appeared.

Rider

Meet Rider, an C#/.NET IDE from JetBrains, the creators of ReSharper. It’s an IntelliJ IDEA which can talk to ReSharper. The dream came true. Up until now I was reluctant about migrating to it, though. It was still raw. And the migration is an involved process, even if you’re sure that there are unicorns waiting for you.

This Monday, after VS stole my shortcut for Cut once again, I decided that enough is enough. I installed the latest stable version of Rider (2017.2), configured all the shortcuts I can think of and decided that I will only retreat to VS if Rider burns down my computer.

The week was awesome. I was finishing a big feature, so I had the chance to work with both C# and JS, travel across the codebase, add/remove/rename files etc. Everything was smooth. The only downside was that since my IDE stopped crashing/freezing I’ve spent much less time than usual discussing the geopolitics and bitcoin trends.

I still miss a few features from VS in Rider:

  • TeamCity integration is not complete: A plugin for Rider exists, but it’s not as good as the VS version. It only shows you the names of the tests, but won’t let you run them.
  • Custom project templates are not supported: There a ton of stuff we need to do when creating a new project. Setting proper namespace, adding the required references etc. So, we created a custom VS project template. Rider doesn’t support them. IDEA has it’s own project template feature, so they will support its templates eventually.
  • .aspx.designer.cs code-generation doesn’t work: It’s not needed too often, and you can do it manually. There is a feature request, but I don’t think they are enthusiastic about it since it’s 2017 and nobody cares for WebForms unless it’s a plugin for React.

These features are by far less critical than the feature “don’t freeze and crash for a prolonged continuous periods of time” which VS clearly lacks.

VS Code

This little guy is awesome. I remember when I first heard about it, I thought Microsoft just forked Atom and replaced the icon. I used to ignore it.

I heard people praising it, but thought they are pro-Microsoft weirdos. It was Wes Bos’ podcast which convinced me to try it. It was love at first sight. VS Code is Atom done right: the UX is better, the performance (perceived) is better, the ecosystem of plugins is better, the C# support is better.

I use it for side projects and it’s fantastic. I would be happy to make it my single editor and use it well. Turned out to be impossible, because VS Code doesn’t support the classic .NET. Let’s see why:

Due to this focus, many standard C# project types are not recognized by VS Code. An example of a non-supported project type is an ASP.NET MVC Application (though ASP.NET Core is supported). In these cases, if you want to have a lightweight tool to edit a file — VS Code has you covered. If you want the best possible experience for those projects and development on Windows in general, we recommend you use Visual Studio Community.
source
Keanu having the best possible experience on Windows

I felt betrayed when I read this. VS spends 20 seconds working on single CTRL+V command. Sure, in the eternity of cosmos there are experiences worse than that. I once was having a lunch and almost swallowed a nail which was inside a bagel. I think that maybe it was a worse experience than the experience VS gives you. Not a great deal worse, though.


The plan is:

  • stick to VS Code as much as I could
  • use Rider for my day-to-day work unless VS Code starts to support classic .NET
  • keep Visual Studio around for a while and open it only for tasks such as adding a new project to the solution or showing my grandchildren how slow a text editor could be