Steve Yegge wrote a comment on his blog:

All of the greatest engineers in the world use Emacs. The world-changer types. Not the great gal in the cube next to you. Not Fred, the amazing guy down the hall. I'm talking about the greatest software developers of our profession, the ones who changed the face of the industry. The James Goslings, the Donald Knuths, the Paul Grahams, the Jamie Zawinskis, the Eric Bensons. Real engineers use Emacs. You have to be way smart to use it well, and it makes you incredibly powerful if you can master it. Go look over Paul Nordstrom's shoulder while he works sometime, if you don't believe me. It's a real eye-opener for someone who's used Visual Blub .NET-like IDEs their whole career.

Emacs is the 100-year editor.

The last time I used a text editor for writing code was back when I was still writing HTML in Notepad about 1000 years ago. Since then, I've been more or less IDE dependent, having used Visual Studio, NetBeans, IntelliJ, Borland/Codegear Studio, and Eclipse for my entire career.

For what it's worth, I have tried Emacs, and my experience was a frustrating one because of its complete lack of out-of-the-box discoverable features. (Apparently there's an Emacs command for discovering other Emacs commands, which I couldn't find by the way -- it's like living your own cruel Zen-like joke.) I tried to make myself like the program for a good month, but eventually decided that I'd rather have drag-and-drop GUI designers, IntelliSense, and interactive debugging instead.

It's hard to seperate fact from fanboyism, so I'm not willing to take Yegge's comments at face value just yet.

Is there a measurable difference in skill, productivity, or programming enjoyment between people who depend on IDEs and those who don't, or is it all just fanboyism?


Possession is necessary but not sufficient; the "way smart" part makes me think that you've got to dig into Lisp in the back and thoroughly master the front as well.

Would a "way smart" developer with any other editor be as smart? I'd say yes.

+16  A: 

Yegge needs to meet Bill Joy. Not only is he one of the great programmers in the world, he also wrote large chunks of vi. In vi.

Short Shameful Confession: After 20 years of using vi (and vim/gvim in recent years) for everything, in the last year or so I've started using Eclipse for java editing (and Thunderbird for email), although at my current job my machine has so little memory that I usually use vi except when I need the debugger.

Paul Tomblin
+1 for vi (actually, use vim, but same difference). It's 98% of what emacs can do for less than half the effort.
I used vim for 5 years. After 20 minutes in Emacs I swore I'd never go back. Vim feels backwards.

And how many of those people are still using emacs today? Was there an IDE when Donald Knuth was still alive?

Donald Knuth isn't dead....
LOL - I was about to ask Is Knuth dead???
ooops, In assumed he was dead because he still has some unfinished books, my bad :-(
LOL - If everyone with unfinished work was assumed to be dead, the world would be much less crowded! =)
Knuth's had unfinished books since like 1965 or something.
Brian Postow
@gnovice: It'd be just as crowded - we'd just *assume* it was less crowded. Although the ability to wipe someone off the face of the earth by merely assuming they were dead could be occasionally useful.
why was this downvoted? +1
@JonH: I'd guess it's because Knuth lives on?
+5  A: 

I don't believe there's a difference, it's more a matter of preference.

However what I've noticed is that the longer you've coded, or the lower-level you've coded, the higher the chances are that you've used emacs or vi.

Stephane Grenier
The "longer you've coded" seems to argue for having started coding before there were good IDEs.
Paul Tomblin
Is there such a thing as a good IDE, sonny?
David Thornley
+3  A: 

For me the main reason I would choose Emacs over an IDE is because it allows me to do everything from just my keyboard. This is nice in that it saves some time for when I would normally use a mouse. Also since I find myself very mobile I have a tendency of having my programming "groove" interrupted due to using my slow touch pad. In addition its customization makes it shine over some IDEs for me. However if you find yourself programming fast enough with an IDE then I would say the learning curve of Emacs is not worth the trouble.


Is there a measurable difference in skill, productivity, or programming enjoyment between people who depend on IDEs and those who don't, or is it all just fanboyism?

I don't think you could really get an answer to that. There are so many different ways to measure skill, productivity and programming enjoyment - and all of them are probably very subjective and/or can't be broken down into ONE thing causing it or not.

It's still an interesting question tho.

My personal belief is - it depends on the programmer :)


Fanboys dude. IDE is not Editor. IDE need not be the best editor.
+9  A: 

With the quoted text beginning "All of the greatest engineers in the world use Emacs," I wouldn't take it at face value either. Does he know all of the world's greatest engineers? Is it the same list of world's greatest engineers that you or I have?

Once learned, a powerful editor like EMACS or vi will make you more efficient, or at least more efficient if you happen to be caught without your favorite IDE.

It's the "once learned" part that's the killer. It's a lot of work and practice to use these tools productively, and it's very tough at the beginning.

John at CashCommons
+3  A: 

Personally, I feel that you should use whatever makes you more productive. If you don't have the time to invest in a project to sit and learn Emacs, then it's probably not the best use of your time at that point.

I do, however, feel that it is a good idea to get to know other IDE's when you have ample time to do so.I use Visual Studio in my day to day work, but at home I use Eclipse for small projects and have used Emacs as well. At the particular point where I considered using Emacs, my effort was better served getting actual work done than slowing myself down wrestling with Emacs.

I think to a certain extent it's absurd to think that all of the best programmers use Emacs. There are many amazing programmers who aren't as popular (or as vocal, perhaps) that don't use Emacs.

Bit Destroyer
+23  A: 

The best programmers use vi or emacs, because the most experienced programmers are the best, and 20 years ago, there wasn't much choice except vi and emacs.

After having started with vi (ca. 1987) on a machine with a very slow text terminal, I converted to (GNU) Emacs after a few years (on a faster machine), and used it almost exclusively for nearly 10 years.

Emacs was the first truly integrated development environment - the whole edit/link/compile cycle could be controlled in emacs, and you could roll your own for whatever compiler you used.

Nowadays, IDEs such as eclipse are even better integrated (to be honest: emacs sucks at graphics), but Emacs is still one of the best environments for "pure" text editing.

+1 for the self-fulfilling prophecy in the first paragraph.
"the most experienced programmers are the best" - so very far from the truth, at least by implication. Not saying inexperienced programmers are better, but just because he's been doing the same thing for over 20 years - does NOT mean he's doing it well.
There were lots of different editors 20 years ago. Most of them simply haven't survived, generally with good reason. Why is a guy who used vi or emacs in 1989 any better than a guy who used some MS-DOS based editor in 1989, or whatever the heck it was I was using on the Control Data mainframe?
David Thornley
+61  A: 

First let me say, I am a self professed true believer in the cult of Emacs.

That said, the blogger is nuts. You write in what you find useful. I find that Emacs helps me, mainly because I spent my college years pre-paying the start-up cost of learning how to modify it to suit my needs, and modifying myself to its needs.

But other people do things differently, and as they say "That's OK".

Brian Postow
Agreed. I love Emacs, but thinking that Emacs will make you a better programmer is like thinking that using Tiger Woods's golf clubs will make you a better golfer, or using Eddie Van Halen's guitar will make you a better musician.
Kristopher Johnson
Disagree strongly with Kristopher's comment above. Using a great sports person's/artist's tools will definitely not make you as great as them. But, using the RIGHT programming tools for the RIGHT job definitely will! You might be forgiven though for equating programming with sport and art. :)
Bart J
@Bart: His point is that there are multiple "right tools". Tiger Wood's golf clubs are excellent tools and are perfect for the job, but there are also other clubs that can provide the same results. The tool a good programmer uses doesn't define them, their creativity and abilities do.
I think the whole point with Steves statement is that Great programmers use emacs, good software developers are more productive using an IDE.Great programmer always program, even when producing code they program, they automate tasks, they love make, ant, bash, perl and hudson. They know that manual tasks in any part of the software development cycle is prone to errors.Great programmers also know that if someone else builds your code (e.g the IDE or anyone) then you always depend on that one elses skills when it comes to maintaining the code (e.g the IDE or anyone)
Actually, it *can* make you a better programmer, just the same as any other programming language can.

I used emacs in college. that was about 16 years ago. I haven't looked back. While I wish I could still be comfortable with emacs, the truth is I am quite productive with my MS IDE.

the text you posted is just a troll. Yep. No other reason for it than to start a religious war.

+49  A: 

He (Steve Yegge) has elaborated on this, in bits in pieces, in other postings of his. is probably the most comprehensive, but the info is buried in there since it's on a tangent to the main subject.

I guess to summarize: the programmers who are merely good or competent will pick up an IDE and get to know it really well, and maybe do decently enough in it, but they'll restrict themselves to what the IDE provides for them. In other words, they adapt themselves to the IDE. The great programmers, on the other hand, will adapt their environment to suit themselves, in such ways as writing scripts or their own tools, or extending their tools. And to that last point, not only Emacs is the most extensible environment there is, it is also the easiest environment to extend there is, and it is the environment where you reap the most benefit from extending it--your extensions integrate into Emacs like they are stock features, and so your future extensions may build upon your previous ones (positive-feedback-loop kind-of thing).

Cirno de Bergerac
Why is this limited to emacs? I often modify Netbeans (via plugins, api, config) at work for the benefit of the other developers working on the same project. Couldn't what you are saying be applied to any open source IDE?
The difference is the energy it takes to extend the IDE. With emacs, all the configuration files are elisp program files. So essentially, the barrier for entry is ridiculously low (just change your .emacs file)
Yeah, emacs is great if you want to spend lots of time screwing around with adding things to emacs instead of doing your job. I already have a hobby, thanks.
Angus Glashier
Along the same lines as Angus. A good IDE shouldn't have to be tinkered with endlessly to get the job done. A good IDE should have all the features one needs. Sure you may want to configure the shortcuts and layout, but you shouldn't need to write a bunch of scripts to handle everything.
Kibbee: I started using emacs almost 18 years ago. In that time, I have rarely had to "write a bunch of scripts". If there's something you need to do - to save yourself time, make yourself more productive, or improve quality - it's probably been done before, so it's just a matter of editing .emacs.
I'm kind of curious how you would establish that emacs is the most extensible and the easiest to extend. For instance, I've been using TextMate for the last few months -- extending it is dead easy, and filtering your source through arbitrary external programs is as powerful as you can get.
Angus: you're right. If you have to screw around with adding things instead of getting your job done, you've missed the point--Emacs or not. Sol: There is more to extending then sending source through external programs. In fact, that isn't all that powerful an extension mechanism at all.
Jonathan Arkell
The difference between extending emacs and extending netbeans, visual studio or eclipse is speed. Adding extensions to eclipse is like writing an entire application. In comparison writing an extension for emacs can be a single line of code.
Justin Tanner
Justin, what about Intellisense? Is there one for emacs yet? Or would i have to write one myself
gnomixa, yes,
@supercheetah - looks very primitive compared to the intellisense found in Visual Studio, e.g. icons shown next to available members are useful! Personally, without strong refactoring support I've got little interest in Emacs.
I've written an extension to eclipse. it was shockingly easy. and i could do it in java, which happens to be the language I am coding in, rather than lisp, which is not.
Peter Recore
+1  A: 

One of the great features of emacs is that it can handle pretty much any file type you throw at it, of any size. Admittedly, if you're opening a crazy huge encrypted file, it won't necessarily be useful but it will open. Most editors (and IDEs) will give you major heartache if you hand them a file that's too big and / or not one of their expected formats.

Try opening a 1 Gig file in Notepad for an example.

I started using Emacs somewhere around 1980 and it has always been a tool in my toolbox. It's not the only tool but it's always something that I can turn to and know that I'll be able to get some useful work done.

Obligatory inflammatory comment: On the other hand, I have nothing good to say about vi. I've always felt that vi would happily kill me and sell my organs just out of spite....

In real life, I use Netbeans for almost all forms of development and I use emacs every now and then to make a quick edit. There's almost nothing out there that is quite as convenient as emacs (for me) when it comes to getting something crazy done right now.

Anybody else ever have to edit static strings in compiled binary executables? Is there a better tool for that sort of thing than emacs? It certainly works for me.

Bob Cross
Whereas Visual Studio would completely miss that opportunity, and instead content itself with rifling through your wallet to see if there was any spare cash.
Sorry, I wouldn't know. I use Netbeans almost all the time and emacs when I need it.
Bob Cross
+2  A: 

I've used IDEs from the very beginning (arguably; having started with QBASIC), and for many, many years. I've now switched almost completely to VIM (in diverse flavours) for all my development work and I don't regret it. My productivtity has definitely increased.

Of course, nothing will replace the Windows Forms designer from Visual Studio. But compared to VIM (and Emacs, I'm sure) the text editor inside Visual Studio is really lousy. Once you harness the raw power of the console and the GNU developer tools (by which I mean make, GCC, binutils and gdb, and then some) you'll notice that these tools may look primitive but they're just the opposite, and actually offer all the tools that an IDE provides (well, except for the forms designer).

It's just that you've got a very steep climb ahead of you when you first start using these tools and the incentive may be small. I was lucky enough (?) to be forced to use these tools so I didn't have a choice that I could weasel out of.

Konrad Rudolph
+2  A: 

I don't think it would make you a better programmer, but when you have THAT level, you will most likely use emacs ( or vi )

: - /

The good thing about those two ( I have never used emacs before, but I still use vi for the most mundane task ) is the fact, they don't interrupt your train of thought, you don't have to take your hands out of the keyboard to grab the mouse, and hunt in the file menu for the correct option. You just, keep writing. Inside your mind you say something like: "Replace all the occurrences of this word for that", press enter and continue with your work.

Besides, I don't think they use emacs is their only tool.

Would it make you better programmer? Probably not. But when you have that level of expertise, probably you will like how fast can you code using those tools.


I began with emacs but switched to vi which to me is more elegant because of it simplicity. Also if you ever are stuck in single user mode, ed commands are a subset of vi commands. I don't know if emacs can handle that.

So in that regard I think vi makes you a better programmer..

Emacs *DOES* have a M-x vi-mode although, I suspect that that was sort of a joke...
Brian Postow
Knowing the basics of vi is essential for doing sysadminning. That's not programming, however.
Xiong Chiamiov
+4  A: 

While the IDE's have gotten a lot better in the last decade, they still contain the programming in a little safe "bubble", far away from some of the uglier details. What tends to happen is that this increase in abstraction allows for more programmers to do more, with less knowledge. That, of course, doesn't apply to all programmers, but easier tools do bring programming to a wider audience.

More knowledge of lower-level tools, often translates to more stability in the code, since there are less chances of "going against the grain" accidentally. It's unfair to just list out EMACS as being the only leading indicator, since it comes from a whole range of languages and tools, and really is more about the depth of understanding, not the specific technology.

Way back, you either learned VI or EMACS on the UNIX boxes or you specialized in PCs (OK, there was VMS, CMS, AS400, etc. too, but those were older technologies). Both streams attracted very keen people, but the UNIX guys tended towards wanting a sophisticated solution, while the PC guys just wanted it done quickly. The cultures were very different.

Paul W Homer
+4  A: 

Steve Yegge is a becoming a bit of a troll.

James Dean
I think that he's just making his point look controversial to get more interest. Would it be interesting for him to say: "using your current IDE you're gonna be as effecitve as me using emacs"? Nope. So, he's sorta provoking with his "you've gotta use emacs, period" statement.
Bartosz Radaczyński
+1 agreed - he does talk a lot of shit
Greg Beech
+1 I dont know how a programming environment can make you smart. Why isnt it a personal choice I like GUI/Whiz/ Bang stuff...some dont..why cry about it??
I put it to you that many prolific technology bloggers are trolling. It's kind of within their interest to drum up page views, whether for their own ego, or advertising revenue. Flamebait and trolling are almost as good as sex when it comes to getting attention on the 'tubes.
I'm pretty sure that you can't, by defintion, troll your own blog.
Agree with jrockway
+1. He's not trolling his own blog, he's trolling those who read it.
+1  A: 

I started using Emacs about a year-and-a-half ago because it was the confluence of several wants -- wanted to work with regular expressions (in an editor that supported them), wanted to learn lisp, wanted a better editor.

Editing my code with regexes taught me a lot about finding patterns in the code. The keystrokes took a while to get used to, but I fly a lot faster without the mouse.

Emacs gave me the ability to keep work with my notes and coding in the same application -- minimal context switching means minimal brain-switching, and I can keep focused on the task at hand.

Michael Paulukonis

I'd say that he's at least somewhat right. As others have noted, the editors in IDEs are sort of limited compared to either vim or emacs. At the same time, both vim and emacs are available, when there's no chance of having a full-blown IDE working (over ssh sessions for instance). And yet another thing is not having to reach for the mouse. It trully is a killer feature - one can easily do things at least twice as fast. You won't, however, benefit from this, unless you're at least a decent typist (which, BTW is another point that Yegge is making quite clearly on his blog, you've gotta type well).

Bartosz Radaczyński
+2  A: 

Being able to use some customizable editor allows you to do nifty things, but emacs in particular isn't necessarily the Very Best One Possible. I'm a SlickEdit user myself, I do all the same weird half-automated stuff with it that emacs is famous for. I've seen people do similar things with vi and various Windows-based editors.

So, yeah, socket sets good, but arguing that Craftsman makes the One True Socket Set is kind of dumb.

As an aside, I might be inclined to try SlickEdit if it weren't for the braindead marketing: "10 reasons not to use SlickEdit -- #1: you like being a bad programmer. #2: you want to spend more to do less. #3: you're an inbred moron. etc etc etc"
I got into Slick before it HAD marketing; it's just that it was the only real editor that ran under OS/2 3.0 at the time. Which is probably about the same reason that all those other guys use emacs...
+8  A: 

I'm an Emacs fanboy, personally, but Emacs is just a tool. It won't make you a better programmer any more than a super-fancy pen will make you a better writer.

The clarification that "great programmers" adapt their environment to themselves may have some merit, but lots of tools can do that (e.g. vim and SlickEdit), so there's nothing particular about Emacs in that regard.

I think what's most likely true is that "great programmers" are passionate about programming and people who are passionate about it tend to find tools that help drive that passion. Emacs (and vim and SlickEdit, et al) is such a tool.

Joe Casadonte
Super-fancy pens make me feel all Hemingway-ish.
What is particular about Emacs with respect to "adapting the environment" is that it is far simpler to do so in Emacs than either in Vim or SlickEdit. (or any other editor I know of)


Discipline, critical thinking and a desire for self-improvement will make you a better programmer. Your tool set, while a major factor in your productivity, won't create genius.

If you don't like emacs or vi, don't use them. By making the conscious choice not to, you're shaping your development environment to fit your own needs and work practices. In any case, you're entitled to use what you like - and ignore anyone who's foolish enough to berate you for the tool you use to write bits to disk - it's the bits that matter.

Note: "Tool set" here means, literally, the "brand" of tools - specific editors, compilers, etc. Conceptual tool sets, e.g. the use of version control, unit testing - all in general - are a part of the self-improvement process.

+22  A: 

Improving your clear thinking and problem solving will make you a better programmer. No program can do that.

Using a better hammer won't help me build a nicer house unless I know how and why. ;)

Jas Panesar
A good analogy for what I wanted to say, too.
But a bad hammer would ruin your productivity while trying to build the same house and you'll probably end up with a different house.
That's fair! An average programmer wouldn't fare much better with the expensive hammer.
Jas Panesar
A great programmer can build a great house using a stone for hammer. (He's slow - but he still can do it. :D)
Yes, but having an editor that lets the code flow out of you organically (which I think Emacs is better at than most editors) can improve your clear thinking and therefore problem solving.
@Skulldrick - I think there's something to be said for sure for the tools that you do (or don't use). Using the right tool relative to the job at hand, your inclinations will obviously help. If notepad does it for some people, so be it. I still see tools as a magnifier, and not as much of an enabler. Tools that "get out of the way" and leave your thinking to focus on work instead of interacting with the app's complex tapping or clicking seems attractive to me. Coda or Textmate also focus on that for a reason and seem to have their followers. Cheers!
Jas Panesar

The comparison between Vi and Emacs sounds like the comparison of GNOME and KDE to me. Vi (and its dialects/implementations) are simple, no-frills, easy-to-master, scriptable, extensible, pretty much universally available (on all Unixes) editor. Emacs on the other hand, IMO takes a harder way to do the same things. It takes time to master, but I guess since THE great programmers have used it, I feel great too after I have mastered it :-)

But, to get the job done when I have text based editors, Vi is definitely easy to get started with. Perhaps, Emacs ultimately motivates you to learn Lisp, which will definitely change the way you program. That is a indirect effect, IMO.

+4  A: 

No. Good code makes you a better programmer.

That said, good text manipulation is key to efficiency. Either vim or emacs will change how you work with text -- both are proven effective but are almost at odds with each other in terms of style. Also, this debate is rather old (back to the 80's and 90's where text -> compiler was key), so there are many other text editors and/or IDEs that can help you be the best programmer you can be.



We all walk different paths in life, we look at problems from different angles.

To be a great programmer the editor can't help you be better, other things make your programming skills better. But please note that the wrong tools that don't help you can actually hinder your own evolution as a programmer.

Or if we take the example of a carpenter, a great hammer can't make a great carpenter any better, but a bad hammer can stop him from doing his best.


+1  A: 

Mastering the Emacs key bindings and its built in functions will allow you to manipulated text faster than IDE's such as Eclipse or Visual Studio.

Don't take my word for it, check out these videos of pros using Emacs.

Once you get to a decent level in Emacs you can effectively edit any language: Java Script, Java, Ruby, Python, HTML, C, C++, etc.

Getting started with Emacs is a pain in the butt, the out of the box experience is worse than bad. Emacs default configuration does not expose the Emacs newbie to the more powerful features (hippie-expand, etags, yasnippets, etc) of Emacs. I suggest started with the Emacs Starter Kit dot files.

Another reason that Steve Yegge claims that the world best programmers use Emacs, is elisp. Elisp allows the experienced programmer the power to easily expand Emacs. Writing an extension in Eclipse or Visual Studio is significantly harder than writing a quick function or even a new minor mode in elisp.

Justin Tanner
the question is why start using it at all? If one is happy, comfortable and productive, why waste time and effort on learning emacs? I would much rather learn a new programming language or research new technology than learn an old editor, albeit a powerful one. There are only 24 hours in a day, use time wisely.
another thing i would like to note that it also depends on the technology you are using. Does Emacs have Intellisence? I used it in college on UNIX machines and I am sure it has changed since then. But for .NET Intellisence is a MUST. There is NO way anyone could remember ALL the function names in all classes in all namespaces. And I am sure not going on MSDN every time I need to look up a function name. If Emacs offers Intellisence I would consider it.

I use IDE (Eclipse) for writing code, but for analyzing logs you have to use a text editor.

Emacs is much better that anything like Ultraedit or Notepad++. They are just not comparable. With a few simple elisp scripts I can save hours of work which would be necessary in Ultraedit. The only inconvenience is that such analysis tasks are assigned more and more to me just because it takes too much time for other to do it.

Oleg Pavliv
+1  A: 

I believe its a large misconception that using these text based editors such as VI and Emacs are looked highly upon or needed to become a "great programmer". I always felt IDE's are mor e powerful then they use to be, and it truly comes down a preference and style.

+1  A: 

I know you didn't ask this, but one thing learning emacs (unexpectedly) improved for me was manipulating a command line. Before I learned emacs keybindings I used to move the cursor and navigate history using the cursor keys because I didn't know any better. It was something of a lightbulb moment when I realised I could use backward-word, move-beginning-of-line and backward-kill-word (which I have always bound to C-w, as Stevey suggests) in bash (M-t is often useful too, and most impressive to those who've never seen it before).

I do quite a lot of work on Solaris, where the root shell is "the posix shell", and does not have emacs bindings by default. I find that my fingers now type exec bash of their own accord, every time I log in, so much faster do I feel with the now-familiar editing commands under my fingers.

Must admit though, I still find Knuth's books hard going (though worth it) - so I don't think it's magically improved my programming.

Tom Dunham
Man, I really need to learn more of those tricks... Anyway, can't you get your login shell changed, or did you actually mean "the shell for the root user" when you said "root shell"? If so, why are you logging in as root???
+6  A: 

Is there a measurable difference in skill, productivity, or programming enjoyment between people who depend on IDEs and those who don't, or is it all just fanboyism?

Let's just narrow this down to Visual Studio vs. Emacs---the question is too broad otherwise, and I suspect most people (at least here on StackOverflow) are familiar with those two. [I am, and I use and prefer emacs]

Next, let's break the three components of the question down.

Programming enjoyment boils down to primarily liking programming in itself, and secondarily to not have annoyance factors pop up when you do it. Using tools that you struggle with is going to subtract from the enjoyment. So, I would guesstimate, the enjoyment is likely maximized by using tools you like and are familiar with.

Of course, once you do get familiar with a new tool, you may find that you like that tool better, and thus will like programming more if you do it with your new favorite tool. It isn't clear to me that people in general will like VS over emacs (or vice versa) when they know them both well.

Next, programming skill. If there's any connection between skill and choice of VS/emacs, I think it's skill causing choice, not choice causing skill. None of {VS, emacs}, in my experience, seem to make me learn anything about writing better code.

A good tool may make me able to write the same code (and thus same quality of code) in smaller amounts of time; if we assume that productivity = quality of code \times\ code per time, then it stands to reason that any editor that'll let you write good code in less time is a productivity boost.

I may be too unfamiliar with VS, but here I think emacs has some strengths that I haven't found in VS. It may sound ridiculous, but something as simple as cursor movement with Ctrl-[fbnp] is a real boon---it means you don't have to move your hands to the arrow keys. Another thing: you can do a search or replace which includes newlines, which I use often enough that I'd hate to miss it.

Another thing I like is the ability to embed a shell in my editor. In my experience, it's much more valuable on non-windows platforms (and my first "programming" experience, IIRC, was writing DOS .bat files, so I'm not just a flaming fanboy), but on those platforms it's a big win. It makes emacs "integrate" with "everything" (file search with find/locate, text search with grep, version control with svn/git/hg/..., you name it).

Final verdict--should you learn emacs or not? And is it all fanboyism? If you got the time, I'd say it's always worth learning new ways of doing the same thing, because the new way just might turn out to work better for you. And I encourage you to not reject it for what it appears to be when you're all new to it. In that sense, it's like switching to the Dvorak keyboard layout: you're slower at first, but once you get up to speed you're likely to be at least as fast as on qwerty, and more comfortable. I recommend the same approach to learning new (programming) languages as well: because you don't know the vocabulary (standard library), saying things is hard, but the reward is still there in the horizon waiting for you.

Jonas Kölker
"Let's just narrow this down to Visual Studio vs. Emacs---the question is too broad otherwise, and I suspect most people (at least here on StackOverflow) are familiar with those two." -- Really? I thought that there were many more rabid *nix fanboys like myself who wouldn't be forced to use VisualStudio, much less use it voluntarily. Hrm.
Xiong Chiamiov
+3  A: 

No. If you believe using emacs makes you a better programmer, you are confusing cause and effect.

I do use it daily, though. I find that I'm more productive with emacs+maven than with Eclipse for java development (although I do still fire up Eclipse every now and then to do the occasional refactoring or debug session).

These are my reasons:

  • The actual text editing experience in emacs beats everything else. It's amazing how fast you can accomplish so much using only your keyboard. Eclipse is more mouse-oriented, and when you type you encounter lots of irritating snags.
  • Being able to customize emacs using elisp is incredibly powerful. I'll go so far as to say that if you're not taking the time to learn rudimentary elisp and customizing your environment you're simply wasting your time.
  • There are extensions for practically anything you could ever want to do in a text editor.
+1 for correlation != causation
Xiong Chiamiov
+2  A: 

IMHO IDEs tend to be optimised around a specific platform or language or OS: Eclipse JDT is great for Java, Visual Studio is C++/.NET-centric, etc. They help productivity a lot (again IMHO) if you're only working on that platform, but if you change platforms you have to basically learn a new IDE (or at least a new set of plugins, views, perspectives and I don't know what else for Eclipse).

The advantage of knowing emacs, or Textmate, or vim (my personal preference), or any generic editor, is that the skills you acquire in that editor apply regardless of what platform you're writing for. They're optimised for editing text, and once you master them, you can edit text very efficiently in any language.

There's also Yegge's assertion that great programmers adapt their tools to their working style rather than vice versa. I think this is a win for generic editors, because you customise one editor, rather than having to work out how to adapt four different IDEs to all behave the way you want.

Sam Stokes
The problem comes when you have to write *on* a different platform than the one you've been on: e.g. you move from *nix to Windows, and your scripts break because they were assuming a bourne shell with '/'-based paths in a FHS-like structure with PostScript-based printing...

No offense to anyone, but it is the stupidest thing I have heard in a long time.

Any editor/IDE is only good when you know how to use it well, which will make you more productive. For some people it's emacs, for others it's Visual Studio, etc etc. It's what you take from your editor that matters.


"The text you posted is just a troll. Yep. No other reason for it than to start a religious war."

I agree with the quote.

Anyone who believes that the true added value of a programmer is in the editor that that programmer uses, is an idiot.

Anyone who believes that the true value of a truly valuable programmer can be diminished by giving that programmer the wrong editor, is an idiot.

(Oh yes, I might include an exercise in formal logic here - add truth values to make these propositions consistent with common logic :) FORALL programmer : good(programmer) ===> usesEMACS(programmer) FORALL programmer : usesEMACS(programmer) ===> good(programmer) (FORALL programmer : good(programmer) ===> usesEMACS(programmer)) ===> (FORALL programmer : usesEMACS(programmer) ===> good(programmer))

(And as for the religious warfare :) All truly valuable programmers were raised on ISPF, not EMACS.

I voted it up from it is so typical on this site to see practical posts like this one voted down. The world is full of snooty developers who like to think that they are better just because they use a different tool. Grow up.
Who told you Emacs was just some text editor?
+1  A: 

Emacs made me more efficient at text manipulation and filesystem navigation. And since both these things are involved when I program, it's made me a more efficient (thus better) programmer.

+2  A: 

I'd argue that the best programmers tend to be the ones that will take the time to customize their environment, making it faster/easier to perform the tasks that they are likely to do. Emacs is one of the most powerful editors when it comes to customizing your environment. It has a steep learning curve but, once you're past that, there's virtually no limit to what you can make it do for you.

Someone once said that the best programmers are the lazy ones; the ones that, once they need to do something more than once, find a way to automate it so that it takes less effort to do. Emacs allows you to be very, very lazy ;)

+2  A: 

I think Emacs can make you a better programmer, albeit indirectly. I think Emacs got me to actually write in a functional language (Elisp) which has me interested in other functional languages (Clojure) which I'm told will make me a better programmer. That said, I suppose time will tell.

Justin Lilly
It's a really old style of Lisp (with only dynamic and no lexical scoping), but it certainly does have much to teach. That, and it can be a pretty nice text editor on those days on which it actually works right!