Agile Zone is brought to you in partnership with:

Jason Whaley is a Java developer specializing in service oriented architectures, enterprise integration, cloud computing, and continuous integration. Previously, Jason has worked in multiple roles for both public companies as well as government institutions in a variety of roles for several broad ranging Java based projects. Presently, Jason works at Nodeable as a platform developer where he is helping build a next generation infrastructure monitoring and analytics tool. He is also a contributor to The Basement Coders Podcast. Jason is a DZone MVB and is not an employee of DZone and has posted 17 posts at DZone. You can read more from them at their website. View Full User Profile

Just Use an IDE

06.25.2013
| 39639 views |
  • submit to reddit

I’m a Vim user. Albeit, I’m not a very good or strong Vim user, I like it well enough for randomly editing files.

I’m also an IntelliJ Idea user, which makes me an IDE user. If at any point I want to work on a project of files for a substantial duration of time (basically, anything more than five minutes), this is what I’ll use unless I’m first learning a particular programming language.

It actually warmed my heart to read this: One Year Later: An Epic Review of PyCharm 2.7 from a Vim User’s Perspectivee

Basically everything said in that post exemplifies why one should be using an IDE. The tl;dr is

  • Any IDE will (try to) can give you autocompletion at the code level and not at the text level.
  • Code Navigation - easily get to symbols, even in other, files with a quick keyboard shortcut.
  • Easier testing lifecycle - everything is managed within the same application , no context switching
  • Easier debugging
  • Code generation - not the bad kind… just shortcuts to quickly take care of your boilerplate
  • Refactoring
  • Good vim emulation - any IDE worth using is going to have a vim emulator

.. and there are a handful of other things that are comparable to vim that are available.

The common reply is that “I can do all of these things just perfectly fine and acceptable to me with vim/emacs using $X, $Y, $Z, $A, $B, ctags, $D, $H, and $Q and some fancy management of dot files”.

And that’s great, I’m glad it works for you. But I equate using an IDE in this instance to why I don’t use Linux as a desktop OS. I really just don’t feel like dicking around with my environment ad nausea just to reach what I would consider a baseline of productivity.

I’ve also heard the more snobbish “if a language needs to have an IDE to be useful and productive, then that language stinks”. And my response to that is a paraphrase of something Tor Norbye said on a Java Posse cast: “if a language can’t be made better with the usage of an IDE, then that language stinks.

In closing, just use an IDE.

Published at DZone with permission of Jason Whaley, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)

Comments

Nicolas Barrera replied on Wed, 2013/07/03 - 8:30am

Still can't see why someone should use an IDE if he can do the same things with Vim and a bunch of well configured plugins. I 'm an IDE user, but I just can't clearly see the sustainment of your final statement in the article :).

Use the tool that is the most comfortable for you. Here comes a point I 've not read in the article which is, if you 're in a development team it's a plus that the whole team uses the same tools, with the same configuration so here users of Vim on steroids 're losing some terrain in my opinion but just because there is more people who uses IDE'. So in addition you should take into account to find a development team that fits your tool's choice.

Hope my 2 cents were useful, cheers.

Gary Trakhman replied on Wed, 2013/07/03 - 8:51am

My sweet-spot working with clojure is:  Linux as a desktop, Emacs as a one-stop shop.  Emacs has had 35 years of being great for lisp.  Given my experience, more comfortable with Linux than OSX or Windows. 

For java, I switch into eclipse, though if I want to really feel like I know what I'm doing, I'll get the work done with emacs.

this one: 'if a language can’t be made better with the usage of an IDE, then that language stinks.'

IDEs are just programs.  Cathedrals.  Maybe a corollary from me: 'if a language can be made better with the usage of an IDE, then it can be made better with emacs.'

Also, consider, the integrated aspect can be a huge pain when you start thinking about things like a build server.  I spent at least a couple hours seriously considering hacking a headless-eclipse before I persuaded everyone to let me switch the huge collection of interlocking eclipse java projects to maven.  I still haven't used an IDE that doesn't require extra consideration and hacks when used with maven projects.

Justin Vander Ziel replied on Wed, 2013/07/03 - 4:23pm

But I equate using an IDE in this instance to why I don’t use Linux as a desktop OS. I really just don’t feel like dicking around with my environment ad nausea just to reach what I would consider a baseline of productivity.

I recently (~ 6 months ago) started using OS X Lion on a Mac Mini at work and I am forever trying to find work-arounds to the silly limitations of what someone thought a user should be able to do - e.g. lack of multiple monitor support, finding ways to manage packages because after so many years of development, Apple has still not seen the wisdom of having the OS manage software installations. In the same vein, before my switch, I found myself fighting against Windows with it's limited customizability (e.g. adding custom actions via context menus) and the silly filesystem that uses mapped drives and insists on re-inventing a unified filesystem with it's so-called UNC names. I use a Linux desktop at home because I DON"T have to dick around with it to make it work.

I agree that trying to fight Emacs into some form for editing XML files the way and IDE does without any effort at all is a waste of time (and I have wasted a LOT of time on that one). But IDEs inevitably force you into developing the way the software's designer develops - which may or may not work for you. So perhaps the answer is to use a saw when you have one and the situation demands one, otherwise grab your tool of choice.

Vincent Carluer replied on Thu, 2013/07/04 - 3:20am

I've switched rencently from Visual Studio to Vim. I did it only 1 month ago now but for the moment it still looks like a better solution. 

I'm using Visual Studio when I need it (heavy refactoring, gui...) but it's minimal now.

A really good post by Kevin Berridge on why doing this (and how to do it with C#)

http://www.kevinberridge.com/2008/09/visual-studio-development.html

Step by step now i'm using vim for every language I do, essentially Java ("instead" of eclipse) and batch/shell. It's pleasant to keep the same coding tool (And I may use time by time for training or tooling "every" language on earth python, Go, ruby...).

I've always got a bunch of shell window to run build/test/deploy and tools which I construct along the way to automate painfull tasks. Works well.

Alexander Lee replied on Thu, 2013/07/04 - 10:16am

An IDE for a programming language is analogous to an Assisted Breaking System for a car.  Yeah, you can do without it, and some drivers have enough ego to think they can do better.  But for the majority, reality doesn't match ego.

Likewise, most non-IDE developers seem mistakenly proud of the fact they don't *need* an IDE, and have enough ego to think they produce readable, well factored, well tested, and well designed code without one, when in fact what is generally produced is the opposite.  If you don't have good refactoring and testing tools, such as those that are present within an IDE, then it is likely you will refactor and test substantially less, or not at all, which leads to a mess.

Now, frankly I don't care if you use an Assisted Breaking System in your car or not, as long as you aren't on the same road as me.  Likewise, I don't care if you use an IDE or not, just don't be on the same development team as me, or expect me to maintain your code.


Vincent Carluer replied on Thu, 2013/07/04 - 11:19am

I'm not sure you get the point, there are no ego issue here, it's just using the proper tool at the proper time.

There are no "Just use an IDE" or "Just use vim", silver bullets are for werewolfs.

I was surprised in the original post about the snobbish quotes and answer, I can understand some are like that, but this is not a troll war, for me anyway.

Alexander Lee replied on Thu, 2013/07/04 - 1:02pm in response to: Vincent Carluer

I get the point perfectly Vincent, though actually my post wasn't directly in reply to yours or directed at you, more the whole idea that coding without an IDE (if there is a good one for your programming language) is somehow *better* than with one.

For instance, in the case of Java, with at least two good IDEs out there (IDEA and Eclipse), there is little excuse not to use one or the other when doing any serious development, and your code is likely to be worse for it if you don't, as everyone, and I do mean everyone needs as much help as they can get when developing code.

And yes, unfortunately it is about ego much of the time.  For some reason, some developers pride themselves on being able to code with just the very basics, such as a text editor, a keyboard and a swiss army knife.  I guess this is similar to a survive in the wild mentality, but who knows.  In many cases they are hackers or lone coders, but I have run into one or two in professional life also, and believe me when I say they cause more work for a team than any raw talent they might have compensates for.

And while I agree that you should use the proper tool at the proper time, in many cases this is used as an excuse to use a *different* tool that the developer wants to use, rather than the proper tool.  So I would have to disagree that there are no silver bullets, because that is exactly the proper tool you would use for a werewolf (or perhaps holy water?).  The proper tool for a programming language is an Integrated Development Environment (IDE), and what is a Text Editor the proper tool for?  You guessed it, text editing.


Raging Infernoz replied on Thu, 2013/07/04 - 6:18pm

 I've use MicroEmacs, other 'enhanced' editor and IDEs, and I completely agree with the author.

VIM is to me the computer editor equivalent of S&M, because I detest anything which forces me to remember loads of obscure key combinations; we have screens with mice, icons and other visual controls, not f'ing dumb terminals now!

I first used Java 0.* with CygnusEd (way better than MicroEmacs) on an Amiga with custom ARexx scripts linked to a GUI error list program from the IDE part of the SAS C++ compiler, because I was so fed up with archaic command and interface text editors like MicroEmacs, and not being able to do basic IDE stuff like easily jump to a source file and scrollable list of output and stacktraces.  This was time consuming and only done because usable Open Source Java IDEs did not really exist back then.

Even ancient junk like the IDEs for the horrible VisualBasic 4 and Access make the idea of using an 'enhanced' Text Editor look dreadfully dated!

IDEs know the code to a depth that no 'enhanced' editor has any hope of doing (often as good as a compiler parser!), and even the base platform and components humiliate a Text Editor; e.g NetBeans supports template and wizard project creation (especially useful for Maven), Maven repository indexing, search & dependency selection, complex search & replace, GUI component pallets, GUI designers, tonnes of context drop-down code suggestions parsed from code and libraries, auto-completion, configurable and sophisticated interactive issue detection and correction scans, sophisticated refactoring, building and selective rebuilding, specialist dockable windows, static code testing (via plugins), proper rich debug support, rich profiling support, automatic code deployment, SDK profiles, Service profiles, Bug tracker profiles, Maven repository profiles, Database profiles, support for multiple source control systems, project structure aware source control support, and lots of other advanced build-in and plugin functionality, so is vastly faster and easier than even the best scripts in any text editor.  Most of the above is handled by plugins, which work so seamlessly together that it seems like smooth  built-in functionality!

NetBeans doesn't only support Java, it also has built-in or plugin support for HTML,CSS, Javascript, PHP, C++, Groovy, Scala, lots of Web frameworks, and more language support is being added e.g Rebol.

I won't mention Eclipse other than to say it is a cluttered ugly mess, which does not appear to have the same seamless plugin support, and seems to allow far too many ugly kludges.  I've used it in anger and was not impressed.

I prefer to avoid Intelli-J because it costs a lot too much money has some of the clutter of Eclipse, and anything which costs money can be a pain to authorize purchase in a corporate environment + I want to be able to use the same tool at home for free.

Heinrich Goebl replied on Fri, 2013/07/05 - 3:05am

I agree using a good IDE is easier and more productive. I personally use IntelliJ for all programming languages and projects. I use vim only for quick editing/viewing and in ssh.

But I disagree with your joice of desktop OS. In day-time work I have to work with Windows 7 and MacOS X. At home I'm using Linux (Mint). My son uses Mint as well - w/o any problems while I have to support many friends with their Windows boxes - what a pain!

And in my opinion MacOS X is really not better than Linux Gnome or KDE. In some cases the graphics and icons are more professional, but using a Mac is not a pleasure for me, though even ways better than Windows.

Alexander Lee replied on Fri, 2013/07/05 - 4:38am in response to: Raging Infernoz

Have to agree, Eclipse is a bit of a mess, and the layout is not inituitive, but it is probably ahead of IntelliJ IDEA in terms of adoption, mainly because it is free and there are a lot of community plugins.

Though personally I swear by IntelliJ IDEA (I do not work for JetBrains, but they make my life easier), and these days there is a free Community edition which has 75% of the functionality of the pay for version, and also the pay for version is a lot cheaper (personal commerical licence - £153+Tax in the GBP, probably cheaper in USD - http://www.jetbrains.com/idea/buy/index.jsp).  It also supports a raft of other languages.


Chris Travers replied on Thu, 2013/08/22 - 2:43am

I much prefer the VIM approach.  In the end it leads to fewer distractions and I can think of my code from a text management instead of a program logic management perspective.

Dash Riproch replied on Mon, 2013/10/14 - 10:25am

"My personal preference can be summed up with a few nice bullet points and a tonal invocation of the exasperated 'just,' so therefore my personal preference is right. Also, one must learn Linux in order to be productive with it. I call this learning, 'dicking around.' Learning is hard. I just want things done for me. Be like me."

Good post. Solid reasoning.

Hugo Blanco replied on Wed, 2013/11/20 - 1:17pm in response to: Nicolas Barrera

The key point in your comments is "well configured plugins". Sometimes people just don't feel like or don't want to spend the time doing it.

Must of the time, I fell this IDE vs Editor boils down to a matter of preference, which make all answers correct.

Chris Travers replied on Wed, 2013/11/20 - 10:20pm in response to: Alexander Lee

An IDE for a programming language is analogous to an Assisted Breaking System for a car. 

I totally disagree with the analogy here.  It's closer to the question of a carburated engine vs a fuel injected engine.  An IDE is essentially a code management tool.  Something like EMACS of VIM is a text management tool.  In theory, a code management tool should be able to do everything a text management tool can do well, and then some.  In reality text management and code management are somewhat orthogonal problems, and both apply to code.  In essence an ideal IDE is something I would probably use, but in practice there are no ideal IDE's and I find they get in the way more than they help.

Likewise, most non-IDE developers seem mistakenly proud of the fact they don't *need* an IDE, and have enough ego to think they produce readable, well factored, well tested, and well designed code without one, when in fact what is generally produced is the opposite. 


I can't speak for others, but I used an IDE (Visual Studio) for a while before deciding that VIM was better for the sorts of things I do.  Part of the problem is that folks code to the IDE instead of being able to code to the problem.  A common example would be putting logic in the middle tier instead of a nice PL/PGSQL function, not because of any clear design reason, but because the IDE supports whatever language the middle tier is written in better than PL/PGSQL.  Note that about half of my coding currently is in PL/PGSQL and the rest is a mixture of Perl, HTML with templating logic, LaTeX, Javascript, and so forth.  VIM and EMACS are the only environments I currently have where I can seamlessly jump around between all of these.  I *might* be able to make Eclipse do the code management part reasonably well if I work on configuring it well enough, but with VIM I get 90% of what I might need from an IDE across the board in all of these environments.  My fingers know VIM, some others know EMACS.  But we are all more productive than we'd be on an IDE.


Let's be clear.  We aren't talking about coding in notepad.  We are talking about industrial strength text processors vs code processors.  If the code processors could do everything I need in a text processor, I would probably consider moving.  However for the larger projects I work on, text management is a larger concern than code management.  Well-factored can be done in any environment but the choice of programming libraries is a larger factor than the IDE vs VIM.  On the other hand, 200k lines of code.... managing the text, particularly during a refactor (which as needs change is always inevitable) is a bigger issue, and one where the IDE's I have used fall short.

Chris Travers replied on Wed, 2013/11/20 - 10:43pm in response to: Alexander Lee

You say:

The proper tool for a programming language is an Integrated Development Environment (IDE), and what is a Text Editor the proper tool for?  You guessed it, text editing.

The problem I see is actually graceful degradation.  If you are using an IDE and all your code is in, say, Java, I would be inclined to agree with you.  The problem is that once you start hitting less supported languages (and many of these are important languages), the IDE paradigm starts breaking down.  When it does, you are left with a text editor, often not as good as an industrial strength text processor, and a lot of largely useless bells and whistles.

Let's look for example at what happens when you start looking at building intelligent databases on PostgreSQL.  In PostgreSQL you can extend SQL by defining functions and these can return sets, tuples, or single values.  The problem is, the function body is always defined as a string literal, because this way PostgreSQL can maintain language extensibility.  The body could be written in any scripting language assuming a decent handler (bash, Perl, Python, PHP, TCL, Ruby, etc), and the language declaration can occur either before or after the body.  This means, effectively, you can have a function that starts out:

CREATE OR REPLACE FUNCTION foo(bar int) RETURNS int AS

$$

This is not IDE-friendly.  The IDE at this point has *no* idea how to treat the function body.  Suppose we continue as:

SELECT

What should the IDE do here?  Should we assume it is probably SQL?  On what basis?  How do we even have any confidence we know all the supported languages?

The same can even be an issue for compiled languages like Java.  The reason is that while the IDE may know Java in the initial phase, it cannot know what capabilities the JVM may have when invoked inside a user-defined function in PostgreSQL.  This is because these capabilities change depending on whether the function was defined as language PLJAVA or PLJAVAU (the latter allows unsafe things like file I/O that the former does not, and so the latter can only be invoked by a database superuser).  Now these problems are only solvable by coding to the IDE, but I am not entirely sure they are solvable even there, and coding a certain way just because it makes it easier for the IDE does not strie me as a good trade, unless one can demonstrate, also, the need for the same conventions from a code clarity perspective.

So in general, once you start encapsulating a PostgreSQL db via a functional API, you are way outside the limits of what any IDE will give you and I am not even sure that such an IDE can be built.  The limits of knowledge that the editor has at that point is a hard limit and there is no substitute for a distraction-free text processing environment with nothing more than basic syntax highlighting once you go there.

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.