Fog Creek Software
Discussion Board




The Importance of Editors...

I've been reading The Pragmatic Programmer by Hunt and Thomas and they make some interesting comments about something I've never really thought about, but I sense is important and true nonetheless -- use of editors.  Specifically, they believe you should master one editor and literally use it for everything.  As a result, they say that productivity will jump up to 2-3 times its current level.  They also believe that many students and early programmers are hindered early in their development by their reliance on IDEs.

What are your opinions on this topic?  Is it realistic to master and use only one editor at your job?  For example, you're primarily a MS C++ house and thus use Visual Studio for a lot of development, but you often find that Visual Studio isn't a great editor for Perl or Python programs you find yourself often writing.  In such a situation, is it better to dump the IDE and switch to a Windows port of a neutral editor like emacs or vi, or is it better to keep mixing and matching editors?

Are you at a job where your forced to use a specific IDE, though you're mastered another type of editor?  Do you think over reliance on IDEs stiffle productivity?

Or do you think that editor usage is no big deal?  I'm interested in all opinions.

Crimson
Monday, May 20, 2002

In my opinion...

I must admit I like using the Borland editor/IDE.  Once I learned those wordstar keyboard commands... (ctrl-b, ctrl-k to highlight a block, ctrl-i to indent, ctrl-u to un-indent... etc), when I'm using another editor (especially MS) I realize how dependent on the BCB editor I have become... and yes, I have to stop and think... or search for a way to do the same thing... and if I can't find it in a short enough time, I resort to more manual means (delete, delete, cursor-down as an un-indent example).

As for IDE's... I guess it would depend on the specifics.  IDE's that really automate the mechanics of programming are a benefit to me.  When I have to go into some other application (such as a command line compile) it really breaks the flow.

Why would IDE's be "bad" for a beginner?  The only thing I can come up with would be the focus on the "code" (which may not be so bad in a teaching situation).  I have known coders that can code in a particular language, but have no concept whatsoever about compiles and linking.  Not very well rounded in my opinion.

Joe AA.
Monday, May 20, 2002

As someone who routinely switches between emacs, vi, and IDEA (as well as the editor built into mozilla for these web logs)  I think you can be trained to switch fairly easily.  Plus, when one goes away, for what ever reason, you can switch to another.

But as a manager, yes, set up your team so they can work in what ever makes them most productive....

Adam
Monday, May 20, 2002

Personally I try to use Emacs for all my editing. There are three reasons for this. Firstly I know the keybindings are so I find it very easy to make the editor do what I want. I could certainly retrain myself though, so I don't regard that as a big problem. Secondly, the large number of add ons and packages for emacs means that, for editing, there is generally always some package available that tries to help, and some bizare key combination that invokes a function that does just what I want. Thirdly, I like the extensibility of emacs. I've written some emacs major and minor modes and the ability to customize my editor is very useful to me.

However, I do miss the "I" portion of the IDE. The way in which the best IDEs package everything together and offer more advanced code navigation tools, GUI design tools etc.  Personally I'd love an IDE that let you choose emacs for the editior portion. That sort of integration is difficult though.

I tend to agree with previous comments that using an IDE could be detrimental to your early development as a programmer. At some point I think you have to have a conceptual model of, for example, the build/deploy process, that matches what is actually going on or else you can find it hard to debug any problems.

Alex Moffat
Monday, May 20, 2002

Replies to Joe AA, Adam, and Alex Moffat.


Joe AA:

When they said that IDEs were "bad", I think they meant that beginners got so used to developing within the confines some language specific IDE, that when they had to develop in a language or on a platform not supported by that IDE, their productivity took a big hit.

The authors also mentioned that editors should be extensible so that you can plug in modules to handle various languages and this is something I can agree with.  They made some other good points, but I can't remember or reference them since I don't have the book with me at the moment.
--------------------------------------------------------

Adam:

I switch between many editors too, but I haven't become an ultimate guru in any of them and don't feel my productivity is being maximized because of it.  Also, I often have to stop and think things like "OK, I'm in emacs now, not vi.  So Ctrl-d is not gonna do what I thought it would".

However, I do think having at least passing familiarity with several editors is very valuable too.
----------------------------------------------

Alex Moffat:

I know exactly what you mean about missing the "I" in IDE (BTW, I'm also partial to emacs...well, Xemacs specifically) and that's why I wonder how other people handle this situation.  As you said, emacs has lots of very useful modules that wildly increase the functionality of the basic emacs editor, but no one will ever mistake it for Microsoft Visual Studio, say.  I also agree that being able to choose your editor would absolutely rule.

Crimson
Monday, May 20, 2002

"As a result, they say that productivity will jump up to 2-3 times its current level"

That's just silly. Ever heard of Amdahl's law? If you spend 10% of your total coding time typing (high I expect) then even if your editor makes your infinitely faster at it, your productivity will only go up by 11%

b
Monday, May 20, 2002

This strikes me as one of those Rules that has no reason, and I suspect it comes from a narrow base. Sometimes there's value in preserving an IDE across different tasks; sometimes there's value in switching to a dedicated IDE or editor.

On the second point, that use of IDE's can hinder the development of expertise, I think that's true. Developers certainly need to master their subjects as well as know how to use the IDE. I was bemused recently to see resumes claiming people straight out of uni were experts in ATL. It turned out they knew how to use the ATL wizard in VC++ and considered that made them experts.

Hugh Wells
Monday, May 20, 2002

Well, wizards anyhow!

:)

b
Monday, May 20, 2002

I use Visual SlickEdit for everything now. It's like emacs but simpler and doesn't seem as clunking. As for wizards, they give you something to start with and you usually remove everything.

Jeb
Monday, May 20, 2002

I've noticed that when developing ASP applications I am much more productive in Textpad than Visual Studio.

I find that Visual Studio babies you too much and keeps you from getting your hands dirty with the code.

Matthew Lock
Monday, May 20, 2002

Back in 93 when I was studying Pascal, C, and C++ I used Borland IDEs (I loved their help system). No such thing as Intellisense then, so everything you did required you to know the code.  Given a project and a piece of paper I could have written the majority of the app (sure, there would have been a few issues but hey, I'm not a machine) .

Now that I use VB regularly, having taken it up for different projects, I realise that my code muscle isn't what it used to be. You could say I've become lazy, I use that damn Intellisense for everything, hmmm, what were the params for debug.print?

Down with fancy IDEs and WYSIWYG for newbies, to learn to code, you need to use the code.

Jack.

Jack lives over there -->
Tuesday, May 21, 2002

b wrote:
"If you spend 10% of your total coding time typing (high I expect) then even if your editor makes your infinitely faster at it, your productivity will only go up by 11%"


You are right about the fact that programmers only spend a small piece of time typing code.

However, a significant part of the developers time is spend not typing, but studying the code in the IDE. Any decent IDE:
- has advanced debugging tools
- will allow you to click a method to automatically open it in your editor
- will allow you to click a variable and will bring you to the declaration
- allows you to hit the help button to show context sensitive help.
- etc, etc.

It's features like this that greatly improve the programmer's productivity. However, I still take a good programmer using Notepad over a bad one using the latest MS/Borland IDE anytime. [which makes you think off course why a good programmer would use notepad in the first place]

Jan Derk
Tuesday, May 21, 2002

I take issue with programmers using notepad. It's like programmers who use the mouse over keystrokes.

I did some consulting for a bank once where none of the inhouse developers used anything except Notepad.  Their jaws dropped when I showed them the power of search and replace using regular expressions in a decent text editor. They were doing changes through the files over and over again by hand.

Doing tedious repetitive jobs by hand violates the three great virtues of a programmer: Laziness, Impatience and Hubris

http://www.netropolis.org/hash/perl/virtue.html

Matthew Lock
Tuesday, May 21, 2002

When I first attempted to learn java I went out and bought Visual Cafe.  In just a few minutes I had a notepad-like app built with cut/paste and pull down help menus, etc.  The trouble was, I didn't understand any of it.

I ditched the editor and moved on to vi.  That really helped me learn to code.

Now I've come full circle.  I prefer to code in IDEA (www.intellij.com) because it auto-complete my code, highlights syntax, debugs, etc.  Also, it does it without robbing me of the learning oppritunities.

A good IDE will make you more productive.  However, some IDEs will rob junior programmers of learning experiences.

Matt Woodworth
Tuesday, May 21, 2002

In reply to: Matthew Lock

"using the mouse over keystrokes"  Research indicates that though using the mouse seems slower than using keystrokes it is actually generally faster, at least for some tasks. (and no I can't find a reference :) I find this true, even in Emacs,  for tasks like selecting text.

Alex Moffat
Tuesday, May 21, 2002

In my opinion:

Practically, of course, it's rare to live in a situation where you can use only one editor for everything.  Where I work, we have to jump between Windows, Solaris, and Linux machines for a variety of work, and some of the code we run on Windows has to be run through Cygwin (a Unix shell that runs under Windows).

Theoretically, though, it makes sense to use one editor as much as possible.  If one can get used to all the features available in one editor, you'll be able to develop code much more quickly, because you'll spend that much less time figuring out how exactly search-and-replace works in *this* editor.

So, in my opinion, pick an editor, get used to it, and try to use it as much as possible.  You may not be able to use it everywhere, but the more consistently you can use it, the higher your productivity will be.

Personally, I like to use vi in text-only environments, and the local simple GUI text editor in GUI environments (Notepad in Windows, StyledEdit in BeOS, etc.).

Brent P. Newhall
Tuesday, May 21, 2002

I don't know about emacs Alex.... and maybe it is just a result of my own impatience, but it really bugs me to no end to watch someone (like when I am assisting them) fumble to reach for the mouse to select text. 

Like... they are in the middle of a line and need to delete to the end.  So after "very carefully" selecting the text to the end of the line, which might require several attempts, they then go up to the edit menu to select cut with the mouse.

Shift-End and Delete for me.  Sure, I point it out as easier, but they never remember (probably too global a statement).  I shake when someone programs like they are playing a video game!

Joe AA.
Tuesday, May 21, 2002

Editors...  My favorite editor of all time was "brief", and to this day I use an editor which can emulate my somewhat re-done brief keyboard. 

It is essential that an editor support tagging for large projects.  Otherwise there is no figuring out other authors' code.

Emacs supports everything under the sun (and more), but I find it difficult to use.  For $300 I bought a copy of SlickEdit.  And for aother $100 you can buy a copy for whatever other environment you like (sorry for the plug).

Excellent language context capabilities, and excellent beautifier, nice differencing tool, excellent tagging and xrefereneing.  Again, sorry for the plug, but I've not found an editor which can do all this right out of the box (max 1 hour set up time).

FYI,  I do not work for SlikEdit, just a user.  Also, a good editor, command prompt and the DDD/GDB debugger.  Forget the heavy weight IDE.

Nat Ersoz
Tuesday, May 21, 2002

In my younger days, I started using editors like CodeWright and have found that I really don't like using most others, especially those in an IDE.  Everything has been configured to match the way that I program, and it has been configured to support the languages that I want it to.

While I could hook it in to the other tools in my environment, I find it easier to and more efficient to run the tools on their own.  This way, you can always select the tool you really want to use instead of getting stuck with what the IDE supports.

That said, I think the important thing to remember is to get the setup that works for you.  If you want to do everything in vi, fine, but please don't inflict it on me.

!
Tuesday, May 21, 2002

Best Part of an IDE:
Integrated Debugger.  Step through your code.

Runners up:
  Click from an error message or stack trace to the place in your code that casued it.
  Click from a varible instance to the type definition
  Revision COntrol

adam
Tuesday, May 21, 2002

Joe AA. I agree. Using the mouse to select to the end of the line  and then selecting cut from the menu is not good. In emacs Ctrl-K is just what you want. I was thinking more of the "select from the start of the word in the middle of this line to just after the close paren near the end of some line 10 lines further down". Keyboard navigation is just two slow for that to work well for me. In emacs it would be quite a few keystrokes, which could be reduced of course if you spent time working out in your head the optimal sequence, as opposed to left mouse button at the beginning, right mouse button at the end. Anyway, horses for courses I think.

Alex Moffat
Tuesday, May 21, 2002

I think the productivity problem as it relates to IDEs is NOT the editors, but rather the insistance of IDE writers to "Eat their own &younameit;"; i.e., build the IDE with the IDE.

I would have loved to see someone (preferably NOT Microsoft) build a good General Purpose MVC IDE.

I KNOW everyone says that that's how THEIR IDE is built (see JBuilder as an example), but the fact is that no real good IDE framework is actually used.

A good IDE framework would be built SPECIFICALLY for the target OS (Bye bye Java. And I *am* a Java maven, but you know... Suitability to task et al).

A good IDE framework would have
an editor (plug your own).
a debugger (for any language -- it's an MVC, right?) including exception handling
version control interface (e.g., see JBuilder)
coding assitance (e.g., function completion)
scripting, loggin, document generation,
UNIT TESTING, make (ant),
as well as 12,231 other great features.

The point is that the language differences, be the language Java, C++, C#, SQL, Rexx, Python or Spanish, will be delegated to the Model.

The rest of the stuff is pure IDE and will be common across all models.

You will be able to use this IDE for other things, as the model does not necesserily REQUIRE debugging, so you can use it for, say, word processing or spread sheets, or maintaining recipes.

So, hey, we suddently get our unified single editor as a by-product of our IDE Framework...

Amir Kolsky
Tuesday, May 21, 2002

In reply to Alex Moffat, you can find some pointers to research on the mouse vs keyboard at:

plan9.bell-labs.com/wiki/plan9/Mouse_vs._keyboard/index.html

I'm not really sure they are that relevant to the use of the keyboard in editing programs, though - more to do with the pros and cons of function keys in word-processors.

Personally, I really like the command language in Rob Pike's Sam editor, but can't get along with the mouse interface - plus Sam tends to get understandably angry when you run it under Windows 2000. Can anyone recommend an editor with a decent command language and regular expression interpreter, and a standard Windows look and feel? I've tried UltraEdit, but the menu layout drives me crazy, and I really want a single command window where I can type arbitrary commands if I need to, not a separate dialog box for each function.

Andrew Simmons
Wednesday, May 22, 2002

Textpad doesn't have the ability to enter commands directly, but it has good regex support and the standard windows look and feel.

One thing it's lacking though is a macro editor. You can record macros but not edit them.

http://www.textpad.com

Matthew Lock
Wednesday, May 22, 2002

Both SlickEdit (I know I sound like a commercial) and Codewright have powerfule extensibility features.

SE uses a C style macro language while CW uses DLL's to exend the editor (I haven't used CW in 4 years now, so this may have changed).

SE also has versions of their editor which run on Linux, Win32, Solaris, AIX, and others (this is quite useful, IMO).

Nat Ersoz
Wednesday, May 22, 2002

Responding to the original questions:

> The Pragmatic Programmer

A well designed book but do not believe everything they say.

>they believe you should master one editor and literally use it for everything.

That section in particular I thought was foolish.

> As a result, they say that productivity will jump up to 2-3 times its current level.

This is certainly not true.

>They also believe that many students and early programmers are hindered early in their development by their reliance on IDEs.

I seriously doubt this is generally true.

>Is it realistic to master and use only one editor at your job?

Places where I have worked I have had complete freedom to choose my own editor, as has everyone else. After all, we're editing plain text files. On the PC, I use CodeWright almost exclusively as it does everything I want. On Unix, I use emacs exclusively as it does everything I want. On Mac I use several different ones as there is not one that does everything I want. Fortunately all of the Mac ones are similar enough for this to be pretty transparent. Switching from emacs to the Mac though requires a complete context shift. I might have several editors open on the mac at any one time to create the illusion of one complete editor.

>Are you at a job where your forced to use a specific IDE, though you're mastered another type of editor?

Wow! Wouldn't that be really dumb for a manager to demand such a thing? Is anyone plagued by such a circumstance? Frankly, it seems almost unbelievable that any manager would think forcing plain text editor choices would be a good way to spend his or her time.

> Do you think over reliance on IDEs stiffle productivity?

Not at all; the opposite is true. I can create giant make files using esoteric features and am quite glad that IDEs take that chore away from me. I am thrilled when I type 'sttaic' and immediately see the typo because it is in the wrong color. I am excited no end when I double-click on a function name and the file with that function in it opens up and scrolls down to where it starts. All these things save a lot of time and don't make me stupid. Does trying to remember where every function in every file is make me more productive than having the IDE keep track of that for me? Of course not.

> Or do you think that editor usage is no big deal?

Pretty much.

X. J. Scott
Wednesday, May 22, 2002

All the software that I write is for unix/c++ systems, but I have not come across an editor that is superior to the one built into VS.NET.. it blows away anything else I have ever tried (including VS6, Source Navigator, Sniff, Xemacs, etc) and the clinching factors are the integrated object browsing, jumping to definitions/declarations, collapsing blocks of code, auto hiding windows, intellisense, the list goes on. The productivity gains from all the included features is unmistakable. The colleagues I work with still use vi or xemacs, with the more daring ones using nedit, and I have to laugh when they try to find definitions or move around their code. They usually end up asking me where something is, or what a method is called.....

Frank Mair
Friday, May 24, 2002

Frank Mair said:

<<The colleagues I work with still use vi or xemacs, with the more daring ones using nedit, and I have to laugh when they try to find definitions or move around their code. They usually end up asking me where something is, or what a method is called.....>>

Rather than the editors being the problem, I'd say your colleagues don't know how to use their editors very well. Editors that are used most often by "real" (everyday, doing it for money) programmers have all these features either built-in or in conjunction with an external tool (e.g., Exuberant Ctags).

To me, this was the real point of the "Pragmatic Programmer" discussion: using one or two editors for everything forces you to not only discover the features that aren't immediately apparent via dropdown menus but also to learn to think about your problems in a different manner. Skipping around from editor to editor forces most people to only use the common-denominator functions, which with most editors is barely scratching the surface of what they can do.

Chris Winters
Friday, May 24, 2002

I can't believe nobody has mentioned CodeRush from Eagle Software. For Delphi programmers, CodeRush enhances the IDE with lots of programming productivity enhancements.

eg Template Expansion: What you type
f MyFunction < escape > i < newline >
bg < newline >
fri < newline >
FItems < newline >
FItems[i].pr;

(Obviously the stuff in angle brackets you don't type.)

What you get:
Function My Class.Myfunction : integer;
var
i : integer
begin
for i := 0 to FItems.Count-1 do
begin
  FItems[i].Print;
end;
end;

CodeRush has lots of features other than just code template expansion. Eg Write comments using formatting and images, UML Diagrams in unit headers, visual matching of block delimiters. Bookmarks are excellent - eg you can leave  'trail of breadcrumbs' bookmarks that are pushed onto a stack and popped off when you press escape, moving you back through your code. Lots of other stuff as well.

< / advert >

I just wish the guy would ship a 'release' version of the product rather than delaying to add more features.

Cheers.

MArk Smith
Thursday, May 30, 2002

*  Recent Topics

*  Fog Creek Home