My ideal IDE

The old joke goes something like, “Oh Visual Studio?  Yeah, that’s the tool I use to host ReSharper.”  Visual Studio has made lots of strides since the old VS 2002 edition.  Before then, it was Visual Studio 6.0, on the much too often occasion I needed to update some old VB6 COM components.  But for me, my current IDE still has a ways to go.

At this point, none of the whiz-bang toolbars and such are even visible, and my daily use looks something like this:


Notice anything missing?  Zero toolbars or navigation helpers.  Those are actually on another screen, out of the way so I can view the code, if I use them at all.  Even with today’s large monitors, screen real estate should go to only the most important things.  Since I’m writing code 99% of the time I’m in an IDE, my experience should be optimized for writing code.

But there are still some things missing in my ideal IDE experience.

Mouse-less by default

If an IDE forces me to pick up my mouse for the 99% slice of what I need to do every day, the IDE has already failed.  Navigation and refactoring tools like ReSharper allow me to jump around far, far more efficiently through keystrokes than picking up my mouse would.

One of the really bothering aspects of many of the ASP.NET MVC demos and sample blog posts is how much they highlight wizards.  Code generation is fantastic, but wizards are a productivity sink.  Take Rails.  Want to generate all the starter code needed for a controller, model and view?  How about this: “ruby script/generate scaffold Product” from the command line.  That one line generates the controller, view, model and a bunch of other stuff.  Why waste time right-clicking around, when you could have a powerful script do all the work?

If I need to add a new file to my project, I still don’t lift my hands off the keyboard.  ReSharper allows me to locate a file in Solution Explorer, add a new file from a template, and begin editing without ever needing to fumble around a gigantic file tree.

Multiple-monitor friendly

Since I get paid to code (and not muck around ridiculous entity model diagrams), I like to see as much code as possible.  Right now, I flip a 24” monitor into portrait mode, so that I can have two code windows open one on top of the other.  It’s not my ideal manner of working, however, as right now VS does not allow me to move code files to another window easily.  I can stretch VS across multiple monitors, but then it becomes a game of mouse-hockey of getting all the screens lined up.

Code windows should be the first-class citizen in my IDE, not menus or toolbars.  What I’d like to be able to do is put any code window anywhere I like, and not even worry about the containing application.  I realize some of this is constrained by OS windowing limitations, but this is just my ideal.

Devoid of designers and wizards for code

If I have to use a designer to code, other than for designing something visual (like WinForms or reports), the IDE has failed.  I haven’t used the visual designer for HTML in several years, as the browser is the true realization of code, and HTML, CSS and JavaScript are the true code behind it.  If something requires me to visualize a picture to generate code, the tools and IDE have failed.  I really don’t understand the notion that if only we can drag and drop our code, it will make it easier to develop.  In my first foray into drag-and-drop development with typed DataSets, I realized it wasn’t the tooling that was failing me, but the underlying assumption that code is meant to be created through visual representation.

IDEs should optimize for typing on a keyboard, and something like a real command window for VS would help.  Things like Rails generators should provide a great inspiration for great code generation/templating solutions.

Profiles for multiple development environments

This is more for laptops, as I use my laptop in a variety of scenarios.  Sometimes I’m at home with one extra monitor, sometimes I’m only on my laptop, and sometimes I’m docked at work with two monitors and my laptop closed.  In each of these, I want to switch my IDE experience, ideally with a few keystrokes (and NOT mouse clicks).  Every morning I have the same pre-work ritual of re-arranging my windows back to where they were.  There seem to be some semblance of profiles, with “Debug”, “Full Screen” and “Regular” seemingly all having their own window profiles.  But for the life of me I can’t see how to create these profiles at will, without resorting to crazy macro-fu.

An actual extensibility model

If I have to develop against COM or program a macro, fail.  Ideally, I could develop extensions in a scripting language like Ruby, whose dynamic capabilities and terseness are ideal for plugins.

It’s funny, my first foray into Rails led me to IDEs like Aptana, because of my Visual Studio biases that IDEs need to be heavy and intrusive.  But all Rails development can be done through a simple text editor and the command line.  Seeing other IDEs and other platforms really led me away from the out-of-the-box experience of VS, so much so that it’s barely recognizable.  So what’s in your ideal IDE?

About Jimmy Bogard

I'm a technical architect with Headspring in Austin, TX. I focus on DDD, distributed systems, and any other acronym-centric design/architecture/methodology. I created AutoMapper and am a co-author of the ASP.NET MVC in Action books.
This entry was posted in Tools. Bookmark the permalink. Follow any comments here with the RSS feed for this post.
  • Justin T.

    I like that color scheme. Would you be willing to export the vs settings file for that?

  • Justin R.

    Window placement – isn’t that part of the full settings export? I know which windows are visible or not is. Maybe position is as well? I have a couple of Settings files – 1 for presentations and 1 for day to day. I also have a settings file for laptop undocked and laptop docked. But I don’t put windows on a separate monitor and just have different sets visible for docked vs. undocked

  • If I’m not mistaken, you’ve bumped up your font size from the default too? I do this to keep me from writing too many lines of code. I find it also helps when pairing or sharing code, others can see it easier.

  • You can store different Visual studio settings using the registry command line option.


    You can replace “Exp” by anything else (Presentation, etc.)

    BTW, it’s not exactly what you were looking for.

  • I completely agree – give me VS with Viemu and Resharper any day – the real problem is that the design philosophy of VS doesn’t lend itself to keyboard-only development.

    I would *really* like a “development-intelligent” version of Vim, but alas such a thing doesn’t exist.

    I would go one further though – everything driven through home position-friendly key bindings; scrap the arrow keys and anything that falls off the main area of the keyboard.

  • Have you tried Windows 7? The screen placement shortcut keys make life easier when it comes to multiple monitors and IDEs…

  • VS 2010 is going to be giving us even more options for multiple monitors, with the ability to even pull an entire file editing window completely out of the IDE.

    I’ve found that keyboard shortcuts help immensely in navigating through the Visual Studio. Great article.

  • @Justin T

    Google “rob conery textmate” – it’s Rob’s theme.

    @Justin R

    I think I found that one now, thanks!


    Yeah, I like a slightly larger font, as I’m on a biggish (24″) screen now.


    Thanks for the heads up! I’ll check it out.


    C# isn’t exactly “wrist-friendly” either. Curly braces aren’t the easiest thing in the world to get to.

    @Paul, David

    I haven’t tried win7 or VS 2010 a whole lot, but I’ve heard good things.

  • Ollie Riches

    Just had a look around the team, they all got 4 monitors each and still have the solution explorer and error list pinned on a single screen…

    I on the other hand use three screen jsut for one VS instance :)

    Once you let go it’s great ;)

  • Funny; my VS looks nearly identical to yours, color scheme and all. I completely agree.

    @Eric, I still can’t quite get used to ViEmu. I tried the combination with R#, but they seem to want to fight all the time. Plus, I’ve figured out most of the keyboard shortcuts with R# enough to save myself the $100 for ViEmu. Might give it a try again sometime, though.

  • That windowing requirement is not unbreakable; check out the way you can tear off and reintegrate tabs in Safari 4 on Windows. Dragging tabs between windows doesn’t even reload the page, at least not visibly. It’s slick, slick, slick.

  • Jon

    “I’m writing code 99% of the time I’m in an IDE”

    That’s crazy! I probably spend more time debugging, reading code, and running tests than I spend typing new code. Do you work by yourself on a small codebase?

  • @Jon

    Now I’m curious where I do spend my time…I should have said “coding” and not “writing code”. Debugging is very small though.

  • Also…

    - No status bar (again, just give me hotkey access to that).
    - No line numbers. (again, hotkey)
    - No scrollbars (try it, you’ll see you don’t need them)

  • Bernhard Hofmann

    How about an IDE that does stuff like source control calls and disk activity on a background thread? My biggest gripe with vs BY FAR is how the UI not only locks up, but actually can’t paint or update the mouse pointer when it’s doing something like loading my project, loading an HTML file for the first time, or getting latest from TFS. I could live with everything else if vs let me carry on working rather than put me on hold.

  • Chris

    The two most common languages I use these days are Java and C#. I really get frustrated with C#, not at all because of the language itself but because of VS. Resharper helps, but it still doesn’t compare to the amazing experience that IntelliJ IDEA offers on the Java side of the fence. IDEA’s written by the same company as Resharper, but it’s an IDE built from the ground up with incredible attention to detail and power. Sometimes I even find myself jumping back to IDEA to make C# changes.

    Note that IDEA now has some of the best HTML/Javascript/CSS support on offer anywhere, as well as plugins for various other languages. Sadly C# is not (yet) one of them.

  • Yes, VS 2010 is making great strides in many of these areas. It does in fact have multi-monitor support and just having the code window alone by itself.

    It also has a new extensibility model that makes it easier to add your own code to the IDE. Right now it’s mostly concentrated on extending the editor. They are working on making more managed libraries to wrap the COM parts of VS.

    VS2010 is the first step in a very major overhaul of Visual Studio. The move to WPF will be nearly complete with 2010 but as it always goes with MS, the major update gets none of the wizzbang stuff, that comes in the next revision . See win 95 to 98, or win2k to xp, vista to 7.

    As for commands that have no keyboard shortcuts but have toolbar buttons, you can already go into the settings and set up your own keyboard shortcuts for those commands. Beyond that you can do macros and bind them to keyboard shortcuts as well.

  • Great blog! Here Here!

    I noticed in your screen cap, you still have the top menu bar (with control box, icon, min, max, restore buttons), try this out for size, CTRL+ALT+ENTER and I think you’ll be impressed to have juuuuust a bit more screen real estate!

    You’ll probably have to redo your window placements but you can easily flip back’n'forth, and that placement is separate from debugging your apps. And VS will use the last one you used the next time you restart.

  • Dude, you could have replaced this entire post with “I should use EMACS instead of VS.” Seriously. It’s exactly what you want. Keyboard for everything. A real extensibility model (granted, it’s in LISP…). Window management out the wazoo. etc.

  • mihailik

    So let me get it straight — you’re making your font larger to see more code?

    And then you say you need to make code bigger because it’s large 24 inch screen?

    You know, it doesn’t sound too convincing.

    I mean I care about amount of code, I do turn my display in vertical position. But I don’t set the font deliberately large and wide, so that I don’t have to switch off Solution Explorer.

    You know, Candara or Georgia are far better for reading than Consolas. And they take maybe 70% of its width for the same height. Your screenshot shows that annoying new Dictionary

    I mean it must be dependent on project size, but with any meaningful project you’d get 100-150 files, so you usually want to see whole picture and the current position in a project alongside the current editor.

    Switching the class/member dropdowns off is not an obvious move either. When the beginning of your method is out of view it’s quite useful feature. Or for nested classes.

    Resharper is just a religious debate, so I better not start arguing on that.

  • @mihailik

    I bumped the font up cause it was hurting my eyes at the smaller size, but only when the screen tilted vertically. I think it’s because ClearType doesn’t work as well with that orientation.

    My solution explorer is there, but I detached it and put it on the next monitor, along with the output window. When I want to know where I am, Shift+Alt+L gets me there. But honestly, I use Ctrl+E and Ctrl+N and Ctrl+Shift+N far more than picking up my mouse to navigate folders. It’s just slower that way.

    And if the beginning of your method is out of view…your method is too big ;)

  • mihailik

    >> And if the beginning of your method is out of view…your method is too big ;)

    Is it really?

    An experiment. Scroll the text down, making “public class MappingEngine(…” go out of sight. Now the constructor suddenly becomes too big, still containing 2 lines of code.

    >> My solution explorer is there, but I detached it and put it on the next monitor

    And yet you still can’t see full line length.

    Fixed-width fonts are from DOS era, give Candara a try (or whatever ‘normal’ font suits you best).

  • @mihailik

    Ah, I misunderstood, I thought you meant “long” and not “wide”. Yeah, that is a problem with portrait view. I had to jack up the font because ClearType looks jacked up in portrait.

  • Arnis L.

    When i see my colleagues with code window in size of few inches i always ask them why they are still sitting in tank?

  • dave

    I know that re-sharper is a good tool, but this looks like blogola to me :D

  • Speaking of keyboard short cuts, ALT-SHIFT-ENTER will throw the editor into a full screen mode. Give it a shot.