views:

123

answers:

4

When I investigated ruby/rails, I found this philosophy/opinion to come up over and over again. People in the PHP world often think the same way as well.

The thing is - I don't get it. I use an IDE, and frankly, I would refuse to work without it - i.e., in a text editor with basic syntax highlighting.

There are just so many great features that let you focus on the task at hand and not the plumbing - automatic version control, running the tests and getting good output, jumping to exact line of a test failure or exception in the source with a mouse click, auto-completion, seeing the methods, constructors and arguments that are available on a class you've never seen before - and getting it to work on your first try without having to waste time googling and reading a pile of documentation just to find out this basic information. The list really goes on and on when you consider even basic refactors like moving and renaming files/packages or method signatures. These are so common that doing them by hand is a nightmare sometimes.

I think I'm a pretty damn good programmer. Whenever I see production code written by others, it's almost always way worse than what I would write - either in terms of style, the design, the bloat - whatever. I actually only met one programmer I thought was around my own level in real life, and that was about 8 years ago.

So when I read these comments that people that "rely" on IDEs are bad programmers, I just don't buy it. I personally like not having to worry about all the little things so I can focus on what needs getting done, and thinking about the design of the thing. IDEs really help focus yourself by dealing with all the low-level crap that usually comes along with programming that gets in the way of blazing fast productivity.

So what is their thinking behind this idea? Do you think they are right? Why?

+3  A: 

Here are a few thoughts:

  1. IDEs are often associated with "programming" techniques that do not require a great deal of skill (e.g. drag-n-drop Windows Forms programming), and that end up creating ugly, generated, or otherwise difficult-to-maintain code. These types of things cater to developers who can't "do it on their own," which propagates the conception that IDEs are for weaker developers. The counter-point to this is that it can be much easier to develop UI code using visual tools than trying to write the UI code by hand...
  2. IDEs abstract away the lower-level details of the language and compiler, etc., which again caters to the developers of lesser ability. The counter-point here is that once you understand the lower-level workings of a language it's nice to not have to deal with it by hand all the time. Of course, if you never learn the low-level details, that's where the reliance on the IDE can become an issue.
  3. IDEs are much heavier-weight processes than a text editor and terminal, which gives the feeling of clunkiness and slowness, compared to just opening a text editor. The counter-point is that IDEs provide more functionality than the average text editor, at the expense of "agility."
  4. IDEs with "intellisense" features remove the need to really learn any library in depth, because you can just start typing and discover methods in an API. The counter-point is that with intellisense, you spend less time looking up API docs, and more time writing code, which can be good or bad.
Andy White
Your last point doesn't make sense. Auto-completion (aka Intellisense) is useful because it saves you from having to type ridiculously long method names or memorize the order of arguments. As a programmer, you still need to know which method to actually use, and auto-completion doesn't help you in any way in this respect.
casablanca
Well, you're entitled to your opinion, but I think it's easier to use an API you've never seen before when you can hit "." and see a list of available methods, rather than having to look up API documentation, and try to write everything by hand. I'm not just talking about "auto-completion," I'm talking about intelligent hints in the IDE about what classes or methods are available in the current context.
Andy White
A: 
  1. The reason is similar with "why hate windows, why hate .net, and somebody also hate java, like me."

  2. Companies want to control the Operating System, they do not like freeware, opensource, if they do, because they have no choice. When they try to make the software easy to use, they also want to make the user foolish, e.g. hide the build pharse, try to make user think we must do this in IDE. So as we know, foolish guy like it, and smart guys hate to be fool.

many reason.

guilin 桂林
A: 

I can only speak for myself. I don't look down on people that use IDEs, and I wouldn't even try to write C/C++/C#/Java code without one. However I use Notepad++ for PHP scripting, even though there are dozens of PHP IDEs (and I believe extensions for VS).

Using an IDE to write PHP code actually slows me down. They're bloated, slow, and have features I would never use when writing PHP code. When it comes right down to it, you don't need an IDE to write PHP code. Notepad++ has plugins for debugging PHP code, version control, and a few other things, but that's all I need.

The same holds true when I'm coding in Python. An IDE would just get in my way.

mellowsoon
A: 

I personally think that it is an outdated notion that people who rely on IDE's are not good programmers.

Like both you and others have already mentioned, IDE's :-

  1. Improve productivity
  2. Have tools to help improve your code (most do atleast)
  3. Also, in case of projects spanning multiple layers and build of multiple components (read most projects nowadays), keeping track of everything using something like a text editor reeks of the programming equivalent of masochism to me.

Having said that, there are SOME benefits of not using IDE's.

  1. It forces you to be fluent especially with the syntax since you do not have aids to rely on.
  2. IDE's usually take up more resources on your computer to do the things that they do.

Overall, It depends on the context as well.

If i were intending to make a change in a particular class + method and i know exactly which one it is, i do tend to just open it up in textpad and make the change and then just go to the command line and build it.

However, if i am implementing a whole new change / investigating some thing, i would definitely open up my projects in the IDE for the inherent help that i can get from it for doing these changes.

I havent come across any in my current work life but if i come across people working without an IDE all the time in todays environment and can still muster up the same productivity and quality as someone with an IDE, i would probably applaud their <dont know what to call it>-ness but thats about it.

InSane