Software Development optimize

Poll: Is an IDE a necessity?

Some developers consider IDEs abominations, while others say they can't live without them. What is your take on IDEs? Let us know by taking this poll.

Since I've been doing some work with IronRuby, I've been looking at a lot of Ruby-related sites. One thing that strikes me is how many people work with Ruby without the benefit of a full-fledged Integrated Development Environment (IDE) like Visual Studio or Eclipse. I've seen this in a number of other languages as well.

I've worked without an IDE, but I've always preferred them, if for nothing other than the built-in debugging facilities. I definitely feel that highly complex languages and ecosystems like Java and .NET pretty much require them, while more lightweight systems need them a lot less.

I know some developers who think IDEs are abominations. What's your opinion of IDEs?

J.Ja

About

Justin James is the Lead Architect for Conigent.

38 comments
jameswang6
jameswang6

a proper tool helps a lot. We human beats the wild animals by using tools. IDE is a useful tool for software design and code in many cases.

Sterling chip Camden
Sterling chip Camden like.author.displayName 1 Like

... the average IDE gives you a sword of gold. (Gold is too malleable to cut well)

apotheon
apotheon like.author.displayName 1 Like

It's obscenely heavy, too -- and a sword is difficult to maneuver when all you need is a knife. Nice analogy, that one.

Hazydave
Hazydave like.author.displayName 1 Like

Back in the 70s, while I was teaching myself programming as a kid, I was happy to have a screen editor. Then I discovered Emacs in college, and eventually, multi-windowed programming environments. And then along came IDEs. And for the most part, I found the them limiting and kind of stupid. The text editors we're remotely as intelligent about the language as Emacs (TECO Emacs, Gosling's Emacs, and finally, the big-boys, like GNU Emacs and XEmacs), the build systems weren't as smart as make. Eventually, I took on a Java project, and having a day to spend learning the language (at the time, I was programming daily, and already knew about 40 other languages, so this was no big deal), so I downloaded the free IBM VisualAge Java. That was the first IDE I found even remotely useful... and it only really made it was there was enough screen real-estate to actually use some of the power of the language-specific IDE (class browsers, etc) without their getting the way of the editor. Of course, Eclipse is the modern form of Visual Age, but I still prefer Emacs + CLIs for C programming.

Dethpod
Dethpod

When I write an app I work with a minimum of 5 languages: (X)HTML, CSS, JS, SQL , a back end language and framework or two. Not to mention the built in functions of the various JS libraries: jQuery,jQuery UI, MooTools, ExtJS, Spry etc as well as the Application frameworks, third party class libraries, extensions, plugins and my own classes. So code assist and inline help is a freakin godsend. I don't know who can keep track of all of the tags, attributes, methods, their arguments, let alone remember how to spell all of them (Dyslexia is a biotch yo). Don't get me started on PHP's inexplicable use of underscores.

apotheon
apotheon like.author.displayName 1 Like

JavaScript libraries are notoriously inconsistent in their coding conventions. Worse, PHP's core essentially has no coding conventions; it's a damned disaster area. I try to avoid technologies that are so badly designed. I feel for you. If that's the only kind of coding you do, I guess I can't blame you for relying so heavily on an IDE. To a significant degree, the purpose of an IDE is making up for the failings of the languages we use.

joe
joe like.author.displayName like.author.displayName 2 Like

Having an integrated environment isn't a bad thing, in and of itself. The problem with most IDEs is that they lock you into their way of doing things. The project/solution config and setup are all specific to the product. This makes it difficult, if not impossible, to seamlessly change from one to another. It's understandable from a companies perspective because they want to make money. If you, as a developer, can easily change products at will then they can't maintain a dedicated income stream. But IDEs are, and should be seen as, tools. It doesn't matter what brand of screwdriver you use so it shouldn't matter what IDE you use, either. Products should compete on features and usability rather than lock-in. At least that's my opinion.

Sterling chip Camden
Sterling chip Camden like.author.displayName 1 Like

I prefer the Unix tradition of discrete tools that each do one thing well and work well together. Then I can combine them in the ways that work best for me. Best of all, I don't get the time sinks I see in so many IDEs when they're parsing/tagging source files or just being their slow-dog selves. That said, it depends on your definition. In a way, vim is an IDE. You can certainly map shortcuts and write supporting scripts that automate most of your programming tasks, if you so desire, so you can stay in vim all the time. But that's probably not what most people mean when they say "IDE".

apotheon
apotheon like.author.displayName 1 Like

Because of the way separate tools tend to be designed to be easily integrated with each other on an ad-hoc basis in Unixy environments, I get many of the benefits of an IDE without having to buy into someone else's concept of the "correct" workflow. This is especially important given that I do not always use the same language, or even the same type of language; each language's needs are different, in terms of what the language does for me, the tools the language's distribution itself provides, the development style that works best for the language, the stumbling blocks for smooth development and debugging, and so on. Ideally, in Ruby you should have at least four things available at all times: 1. editor (some vi-alike, naturally) 2. REPL 3. a window for running tests (You are using tests -- right?) 4. a window for actually running the code Another window for something like ri isn't a bad idea, either. More windows as necessary; I, for instance, often have a small window for using scp to transfer code to a server, commit changes to my DVCS, and so on. A feature-rich vi-alike such as Vim can actually have some of these capabilities integrated with it, too. Technically, what I use is not an IDE, though. That first letter, I for Integrated, implies a vertically integrated set of functionality all accessed through a single point-and-click interface. In my experience, the problems with something like that include issues like slow operation (because one tool is trying to do too many things at once) and too-significant and too-frequent context switching for the developer (that is, having to change the way I think and behave regularly to adjust to different parts of the tool).

Justin James
Justin James like.author.displayName like.author.displayName like.author.displayName 3 Like

A language like Ruby is set up so that integrating the various pieces into one big tool doesn't add much. What a tool could do to help is stuff like Rails-specific syntax highlighting, for example. But "integrating" them would get you little more than what you are doing now... other than the ability to minimize all related windows at once with one click... But for something like working in .NET, Visual Studio is a necessity for all but the smallest console applications or libraries. There's just too many moving parts, and you have too much dependence on the gigantic .NET Framework itself... no one knows that whole thing. Even C# itself is very dense, the language spec (off topic, the C# spec is surprisingly well written, easy to understand, and may well be one of the best resources to learn the language...) is humongous. Just trying to remember all of the choices in LINQ is overwhelming unless you use it in esoteric ways all day long. A language like Ruby, Perl, Python, F#/OCaml, etc., on the other hand, relies on the developer understanding a few key concepts inside and out, and leveraging them for maximum usefulness. That's a world of difference. J.Ja

apotheon
apotheon

I haven't tried it either. I was hoping you could give me a report. Aside from tab completion in IRC, the shell, and Pentadactyl, I generally don't feel a burning need for autocompletion capabilities, so I haven't taken the time to try Vim's Omni Completion.

Sterling chip Camden
Sterling chip Camden

I haven't tried it yet, though I saw a link to it somewhere (was it on the FreeBSD questions list?). My experience with auto-completion in other tools makes me wary of the slow and bothersome. But perhaps vim implements this better than most. Have you tried it?

apotheon
apotheon

Have you tried out Vim's "Omni Completion"?

apotheon
apotheon

What features do you see that (for instance) MySQL has and PostgreSQL lacks?

mattohare
mattohare

I do a platform review every two years, unless something critical happens to cause it faster. So far, PostgreSQL has been light on its abilities for heavy industrial use. The two mates of mine that use it as their primary engine have agreed with me going the other two directions. Truth be told, I'd rather go with MS-SQL if I can afford the license and I can get rails to work well with it. If I can afford the MS licenses, I'm sure I can also afford staff to produce the code needed to have rails work with it as well. As for Oracle and MySQL, I think the open-source nature of MySQL will be a help to it. If anything, I can see Oracle taking features from MySQL into Oracle to make it better.

apotheon
apotheon

PostgreSQL is more compliant with the SQL standard than all three of MS SQL Server, MySQL, and Oracle's enterprisey DBMSes. . . . and the owner matters too. Expect Oracle to ruin what little value MySQL has.

mattohare
mattohare

MySQL and MS-SQL (from 7.0) have been close enough to the standard that i'd learnt to be natural to me. Oracle's SQL seems as far from standard as TurboPascal did from standard. That gets really important when it gets to outer joins.

apotheon
apotheon

Have you noticed that Oracle owns MySQL now, too? Switch to PostgreSQL.

Sterling chip Camden
Sterling chip Camden like.author.displayName 1 Like

... with its attendant slowness. I don't want to embed vim in VS -- that would defeat the purpose. I just want the code-generation of VS to feed vim on demand. Each one of VS' code-generation wizards should be an atomic, command-line-driven function that I could launch from vim.

mattohare
mattohare like.author.displayName 1 Like

I know they have a large installed base, but MS-SQL and MySQL together seem to outnumber them. And, I don't see Oracle growing that well in the main stream.

Justin James
Justin James like.author.displayName 1 Like

gVim's installer indicated a VS plugin, but I didn't see it post-install. You might want to check that out. J.Ja

Justin James
Justin James like.author.displayName like.author.displayName 2 Like

... NetBeans is dropping Ruby support. They claim a lack of interest. I claim it's Oracle trying to stomp on Ruby, now that they control NetBeans. J.Ja

Sterling chip Camden
Sterling chip Camden like.author.displayName 1 Like

... I hate to sacrifice the quick and powerful editing capabilities of vim in order to gain those benefits. For me, Rails is intelligible enough to do without all those bells and whistles. Vim has visual cues for missing closing end, etc. along with other syntax highlighting. It doesn't cross-reference the stylesheet, view, and controller like you've described -- but in my experience those kinds of tools slow down the overall experience when they're enabled all the time. YMMV.

apotheon
apotheon

So far, you've described benefits that are available with Vim and multiple workspaces on Unix. I guess, to some extent, IDEs make up for the lack of some capabilities of the developer's workstation platform, since MS Windows doesn't offer quite the same capabilities for environment management.

Sterling chip Camden
Sterling chip Camden like.author.displayName 1 Like

Not using Visual Studio for .NET coding is like swimming upstream. I just wish I could take everything that VS does for you in the .NET world and hook it up to vim as the editor. If I spent more time working in .NET than I do, I'd write it.

mattohare
mattohare

It's true that I could do it with ConText and a windows explorer window. But, Netbeans really does bring some nice things to the table. I have a right click option to go between the view and the related method. Classes from my style sheet are in a dropdown in my views. I know sooner when I miss a closing item ('end', ')', ']', etc.). It supplies closing tags, quotes and other punctuation in the views. Yes, I can code with out it. But, can I code with the same speed and accuracy? Probably not.

apotheon
apotheon like.author.displayName 1 Like

I knew someone was going to essentially dispute my statement about needing VS for .NET when I wrote it -- and I thought it might be you. I went ahead, anyway, on the basis of the thought that there are exceptions, but those exceptions are mostly corner cases, and even if they aren't I'd be happy to have someone show I was mistaken in this case.

Sterling chip Camden
Sterling chip Camden like.author.displayName 1 Like

C++ and Synergy/DE, specifically. I admit I spend a lot of time on the MSDN site at the same time. I'll also admit that for C# I usually use Visual Studio, even though I curse it's slowness and its dearth of editing capabilities. All the generated code for Forms is just too much to write by hand. Maybe some ambitious vimmer will one day develop a set of scripts to generate that code in vim. Nah, real vimmers don't write C#.

apotheon
apotheon like.author.displayName 1 Like

What is this "minimize" of which you speak? Of course, I actually know what you mean, but . . . 1. Minimizing everything at once is easy even on MS Windows, by way of a "show the desktop" button in the quicklaunch bar. 2. Once I learned the joys of workspaces (or multiple desktops, depending on the specific environment you use), the idea of "minimizing" windows became quaint, outdated, and cumbersome for me. I've tried the workspace management software options for MS Windows a few years ago (there was even one in Microsoft's PowerTools), and found them slightly less useful than their Unixy counterparts due to some slightly quirky, suboptimal behavioral characteristics. > But for something like working in .NET, Visual Studio is a necessity for all but the smallest console applications or libraries. This is one of the things I don't like about .NET; it is so complex to use that it requires tools to abstract away a lot of that complexity. I understand that it is a necessary technology for many tasks in particular environments, but that doesn't mean I have to like it. Dismiss it as personal preference, if you must. Of course, the upshot is that if you do .NET development for anything nontrivial, you need Visual Studio -- to some extent at least, even with languages that outside of the .NET ecosystem would not require an IDE, because you still need to make use of the rest of that .NET ecosystem. If you do heavy .NET development, you should be commended for the choice to use an IDE. For the time being, at least, the world really does need .NET developers, after all. I just prefer to stick to ecosystems that reward an understanding of core principles of the technology's intended development model more than facility with its assumed toolset. Your mileage, of course, may vary.

EricHenry
EricHenry like.author.displayName 1 Like

Granted I'm currently just a student/hobbyist, but in my experience so far, it has really come down to what the end product requires. If it will be a windowed desktop application, by all means, use an IDE, nobody wants to code windows by hand. If you're doing libraries or console applications, it's still your preference, but I prefer to do them in a simple text editor. Syntax highlighting is a plus but not required. I've also found that it helps me to learn more when I do it with a text editor for the fact that I don't have the IDE alerting me at the very moment I make a mistake. It makes me code a little more carefully than I would if I just 'let the IDE catch it'.

apotheon
apotheon

You seem to have a good attitude. Use what you need for the task at hand. Believe me, I know that "Web design" is not the same thing as programming; I've done enough of both to know the difference. Even so, it is clear to me that there is an analogy to be drawn here, based on my experience: When I first started doing a little Web design, just learned how HTML works and used a text editor (Notepad, in fact). I eventually gave Dreamweaver (a WYSIWYG Web designer) a shot, and liked it -- but it took about six months for me to discover I preferred HomeSite (basically a Web design IDE for its day) because it gave me better control over the end result than a WYSIWYG tool. Then . . . I discovered vi. I still used HomeSite from time to time, basically just to generate tables, but did pretty much everything else directly in plain text. The flexibility, customizability, and deep immersion in the "code" provided a significant advantage,and in time I got comfortable enough with even the most complex nested table usage (this was before CSS was "the thing") that I was faster without HomeSite's auto-generation than with it, once you count the tweaking time necessary to fix generated code. Judging by both my own experience and what I have observed with others, the benefits accrued from reliance on an IDE depend on both the technology (programming language, framework, platform, et cetera) you use and your level of comfort and skill with the technology. There are highly skilled programmers who use IDEs with their favorite technologies, of course: mostly, the reasons involve technologies that essentially require an IDE (such as C#.NET programming) and familiarity with a personal development style that involves an IDE. I believe a developer benefits from exploring the option of not using an IDE when the technology does not require it, however -- not just when a given technology does not benefit so much from an IDE, but also in cases where the technology does benefit substantively from the use of an IDE for some tasks (e.g. code completion), but not for others (e.g. integrated test runs of code).

Sterling chip Camden
Sterling chip Camden like.author.displayName like.author.displayName 2 Like

Between a visual design tool and a visual coding tool, though most IDEs mix the too. I use IDEs for visual design, like arranging the layout of controls on a window. I've even written a considerable number of those kinds of tools over the years. But when it comes to writing code, a visual development environment is not a good match and tends to get in the way. At least, that's my experience.

mattohare
mattohare

I guess it can be for visual coding, but project support is more of what I use. For example, when I work on my embedded ruby files, it's nice to have the tool aware of my cascading style sheets. When I work on a method of one of my controllers, it's really nice to navigate right to the view for that method. (Especially since Rails uses an odd [for me] counter-intuitive file structure in the apps folder.

Tony Hopkinson
Tony Hopkinson

Well no, damn handy, most definitely, particularly on windows. It's a different way of working mainly, I can certainly develop without one, though I have to retrain myself, a lot more debug lines for outputing state and branch points mainly. It is a bit back to the old days, there again it works outside of the IDE as well, which can be a necessity.

jkameleon
jkameleon

My motto always was "Concentrate on problem, and let the computer worry about the computery stuff". Yeah, I know, I'm not what they call "a real programmer", but who cares. The glory days of programming are long gone anyway. http://www.cs.utah.edu/~elb/folklore/mel.html

mattohare
mattohare

I was using a text editor (ConText) for a while for my Rails development. Then I went to netbeans. It has the project management and autocomplete (that doesn't always help). It does some error checking, but I wish I could turn off the spell checker. I also like how the IDE helps keep my CSS integrated with the embedded ruby pages. It could do some step-by-step debugging, if I could get all the settings right on my system.

Mark Miller
Mark Miller

I used to love IDEs, and I was glad to leave command line tools behind from my days developing on Unix in the 1990s. Then I had the experience of an IDE tool leading me down the garden path to disaster in ASP.Net, and I became a lot wiser about letting the tool design my software for me. I agree that IDEs are nice for organizing your code, giving you logical editing tools that allow you to look up API calls easily, refactor your code, and look out for undefined variables, and syntax errors. And of course, having a full screen debugger with watch capability is nice. They can also be nice for laying out a UI. Since my experience, I restricted my use of them to that stuff. The tools that CRuby came with were designed for the command line. I'm sure there was a way to debug a Ruby program, but I can't remember. Maybe you could do it inside irb? When I was learning to use it, it didn't seem that necessary to have an IDE, or even a traditional debugger. If you were using Rails, you could just bring up a browser, after doing the initial project setup, and simultaneously have your code in an editor and run your app. in the browser. Any changes you made in the code would be instantly reflected by just doing a refresh on the browser. There was an interactive tool you could use with Rails (I think it was called "rake") that I think allowed you to monitor your app. I don't remember it allowing you to step through code, but I could be wrong about that. My memory is you could get diagnostics through it. Of course, one way to check state was to check your database. I just played around with Ruby. Nothing serious. I'm sure at some point I would've really liked a way to debug step by step through a Rails app. if I had tried to develop something serious in it. I remember asking some people in the Ruby community about why there wasn't an IDE for it. The response I got back was that there was one group working on one at the time, but that it was in beta. I think it was mainly designed for desktop apps. as well, not Rails. I also heard that it was really hard to write a tool that would attempt to give you accurate information about your program, since it was a duck-typed language, and was difficult to parse. Ruby was interpreted, and so any IDE would have to deal with the interpreter. They sounded like excuses to me (with the exception of the language being difficult to parse). I'd point them to old style Visual Basic as an example. It was interpreted (or could be compiled), but it had an IDE, and a debugger. It also had at least some qualities of a dynamic language (maybe it was also duck-typed?). The thing about the Ruby community, from what I've seen, is it's a Unix/Linux scripting culture. They'd no more expect Ruby to have an IDE than they'd expect Bourne Shell to have one. In any case, I've been using the PLTScheme IDE as I've been going through SICP. It pretty much provides all I need, which is not much. It has a nice editor. I'm not sure, but I think the language is interpreted in this case, and it has full screen debugging. The watch capability is rather primitive. It just shows you whatever state is within scope as you're stepping through code, but it doesn't allow you to set conditions for a breakpoint, for example.