Take the 2-minute tour ×
Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. It's 100% free, no registration required.

Reading this other question makes me wonder if I (as an absolute beginner PHP programmer) should stick with WAMP and Notepad++ or to switch to some IDE like Eclipse.

It's understandable that skilled developers will benefit from a big shiny IDE. But why should an absolute beginner use an IDE? Do the benefits outweigh the extra challenge of learning the IDE on top of learning to develop?

Update for clarification:

My goal is to get some basic programming experience. By choosing PHP and WAMP (and FogBugz and Kiln) I hope to avoid having to navigate the tricky / messy OS specifics and compiling etc. and just focus on basic functionality like an online user registration form.

I've got lots of theoretical understanding from university a decade ago but no practical experience. I want to remedy that with a hobby project that would be similar to a real-world sellable web app.

There are so many questions to ask. So many pitfalls I probably have to blunder into. This question is just one piece (my first!) of that puzzle.

share|improve this question
    
Depends what you mean by IDE... Notepad++ can be used as a rudimentary IDE. –  Oded Jan 14 '12 at 21:02
7  
Yes! No! I don't know.. Go with what's right for you! –  Ben Jan 14 '12 at 21:17
1  
the situation with a plain editor is the baseline - the experience common to all programmers. All the tooling on top of that is just that - tooling on top of that - so you should start learning the basics to appreciate what the IDE can help you with. –  user1249 Sep 1 '12 at 9:52
    
I ran a little screen scrape on programmers.stacexchange.com. Using the word "depends" or "depending" seems to increase the likely hood of votes while people answering with phrases starting with "I would..." or starting with "Yes" or "No" tends to be voted down. Tip for writing posts: don't have a clear opinion on anything. –  Jason Sebring Dec 7 '12 at 22:13
add comment

14 Answers

Depending on what kind of program you are trying to create, a IDE can make the whole process, especially building and deploying, much easier. This is especially the case when you are using relatively complex frameworks.

On the other hand, doing it all by hand greatly improves understanding what happens under the hood. For that reason, creating a few small programs "the hard way" is a good exercise for a noob.

share|improve this answer
add comment

Should a n00b use an IDE? This depends on what your goal is as a n00b. Here are some possible immediate goals:

1) Just start learning some programming language/something about programming (lightweight introduction)

2) Become a master and understand how everything works (heavyweight introduction)

For 1), use an IDE. Using a good IDE will make your life EASIER. Not harder. Learning how to use an IDE is rarely all that hard after you get it installed. Then to compile and run your program, you'll just click a "run" button or something like that. Debugging will also be easier...just click some debug button.

For 2), don't use an IDE (at first). If you want to understand everything perfectly, then using a command line debugger and compiler will give you more insight into how everything works. This will be harder and might be discouraging at first.

share|improve this answer
    
How would not using an IDE give you a better understanding of how everything works? You'd be missing out on compiler command line options and debugger commands, but those are both things that you can learn later on in a one-page explanation. Makefiles aren't all that much harder either. I can't quite think of anything else that isn't trivial. –  Rei Miyasaka Jan 15 '12 at 0:16
3  
I'm not saying there's a night and day difference, but I certainly wouldn't classify Makefiles and all that as "trivial" for a new developer. I'm also not saying that you're going to be completely oblivious if you start with an IDE. I'm only saying that starting with the command line gives you a better idea of how things work. –  Casey Patton Jan 15 '12 at 0:21
    
Well, I mean, Makefiles are pretty trivial later on once you understand that building programs usually involves several steps and a lot of files -- which IDEs will teach you along the way anyway. –  Rei Miyasaka Jan 15 '12 at 1:10
3  
@ReiMiyasaka, do IDEs teach you that along the way? My impression is that many coders never figured out what happens between entering code into IDE and producing executable code. –  Winston Ewert Jan 15 '12 at 2:06
    
@Winston Yes, they do. There's no way not to notice that something happens to bring together dozens of code files and libraries. Learning the exact format of the data that describes the interactions is useful, but again, it's something that can be learned in a few hours once it's already understood that something is indeed happening. Have you ever tried teaching linked lists without explaining what they're good for? Linked lists make a lot more sense to people once they have a reason to need to know the details of it. Same deal with makefiles and compiler parameters and all that. –  Rei Miyasaka Jan 15 '12 at 18:24
add comment

As someone trying to learn a new language on a small hobby project I would say stick to a text editor with syntax highlighting.

When you are first starting out you are going to make mistakes. You will forget a semi-colon somewhere or misspell a variable name. Without and IDE you will have to focus just on the language and how you wrote it. This is valuable learning.

A big shiny IDE will try to save you time by trying to catch these mistakes, which robs you from your learning. Also as others have said learning the IDE will also place more overhead on your learning. Imagine when the IDE suggests something, you will wonder why it is making the suggestion, or even is it the right thing. This will just add confusion.

I like to start a new language with just the text editor, then I look into any Eclipse plug-ins once I'm confident enough.

share|improve this answer
add comment

the extra challenge of learning the IDE

You mean, the part where the IDE does most of the work for you?

Now, I've never used any PHP IDEs, but presuming that they function similarly to other kinds of IDE, they save you massive amounts of work. The work involved in learning the IDE will be trivial compared to the functionality that the IDE saves you from having to do yourself. Things like code completion and syntax highlighting are incredibly useful tools and completely irreplacable.

Everybody who codes professionally does it with the help of tools such as IDEs and for good reason.

share|improve this answer
2  
I work with PHP professionally and i don't use an IDE, i use Vim! –  Gary Willoughby Jan 14 '12 at 21:56
1  
@Gary VIM is an IDE. –  rightfold Jan 15 '12 at 0:09
2  
No, it's an editor. Definition of an IDE: en.wikipedia.org/wiki/Integrated_development_environment Vim is not that. –  Gary Willoughby Jan 15 '12 at 0:14
1  
I'm pretty sure that Vim comes with things like code completion, or can be added in to do such, which pretty much makes it an IDE for this purpose. –  DeadMG Jan 15 '12 at 0:51
3  
There is a big difference between VIM and an IDE. VIM doesn't hide the details of what is going on like an IDE does. Many of the benefits of an IDE are available in VIM. But calling VIM an IDE just isn't correct. –  Winston Ewert Jan 15 '12 at 2:09
add comment

I think an inexperienced PHP developer would be a lot more productive with an IDE.

The question should be, should experienced PHP developers need an IDE?

share|improve this answer
1  
thats actually what i thought it meant from misreading the title... –  bunglestink Jan 14 '12 at 23:32
add comment

there are a few things that will help any programmer in any language no matter what the skill level:

  1. syntax highlighting plus brace matching

  2. syntax checking as you type (very handy to avoid the dozen errors all coming from a single forgotten ; or mismatched braces)

  3. easy documentation browsing (however this does not need to be in the IDE itself),

    • the main libraries of any language will have online documentation that you can access in your browser,
    • but the internal documentation (from the project you are working on) will not be unless you explicitly make it available
  4. auto format to the one true brace style and correct spacing (so you spend less time enforcing those rules) (again this can be done with an outside tool)

only 1 and 2 need to be in the IDE/editor

share|improve this answer
add comment

As a rule of thumb I choose like this:

  • If it's a small application with not many files, stick with the command line.
  • If it's a large application with many files use an IDE, as you'll constantly be switching between files and can benefit from the quick browsing and overview features (especially object oriented languages).

Learn to use both when appropriate. Start off with the command line.

share|improve this answer
add comment

I always use an IDE (Eclipse) and would recommend it even for a beginner. Main advantages if you are starting out:

  • Instant feedback on bad code (e.g. syntax errors in code)
  • Takes care of setting up projects using standard conventions so you don't have to worry about configuration / OS specifics etc.
  • Can often generate sample code that you can build upon and learn from
  • Avoids you having to remember a whole set of arcane command line options and invocations so you can focus on the code.

However, although I think you should use an IDE in gerneral, I think it is worth doing at least one or two manual executions of your code at the command line. This is so that you understand what is happening under the hood. This understanding will help you if you need to debug issues later on.

share|improve this answer
add comment

If you reasonably expect you will principally be writing code during lifetime, or hell, even if not -- you should get an extensible editor/IDE and start learning it. If you can't afford anything, go with Notepad++ or similar -- something that will let you begin on your life-long task of deciding "how I like my hotkeys", and learning the conventional ones.

Your tooling IDE's, as I call them -- Visual Studio, Eclipse, What-have-you, will come and go and evolve, often becoming too bulky and non-responsive to be used when you just want to blurt out code, or massage/refactor it in certain ways.

Thus, you have your "home" editor, the one that stays with you a lifetime, whom you love more than your GF.

You will get to the point where it will be perfectly natural and productive to work on something using both your Tooling IDE and your Home IDE at the same time, leveraging the best of both worlds.

My Home IDE is SlickEdit, which I have used and extended over the last 10+ years, in such time I have written 120+ Macro modules for it, and I have 1000+ hotkeys going.

Do I remember them all? No, probably about half at any given time, maybe 60%, but the others are for specialized tasks, that I end up looking up in an on-demand fashion.

Remember, life is short, and if you do the math on any big project you will see that even if benevolent aliens where telepathically dictating perfect code into your head for you to type out 8 hours a day -- it would still take MONTHS to write something big (without a smart editor, macros, templates, etc).

This is why. Plan long term, pave the road into the future every so often.

Actually, very often. Even though it costs you now.

share|improve this answer
add comment

The other, un-asked question: does an experienced PHP programmer need an IDE?

An IDE helps you to automate the build process - but with PHP, there is no build process. Syntax highlighting is a very nice feature, but you don't need a full IDE for that, a lot of lightweight text editors provide highlighting.

I do my PHP work in NetBeans, but that's only because I'm used to NetBeans. I bet I could do it just as well in any number of text editors.

share|improve this answer
add comment

Using an IDE will make life a lot easier. PHP especially has a lot of inconsistent functions that autocomplete in IDEs can help a lot with. Plus, having a debugger in your IDE is truly invaluable...

There is something nice about the simplicity of working with raw files in a text editor, but if you are looking to learn what its like to produce a real web application, the learning to use the features of an IDE will be a huge assistance in the long run.

share|improve this answer
add comment

I can only share my own experience, as well as some insight into how it effects a developer.

First off, I'll state that I enjoy working in both kinds of environments. Whether I'm using Vim and a makefile with GCC or QtCreator/Visual Studio with their respective environments and compilers purely depends on the project itself and the scale of the application.

For learning, I will occasionally use Vim simply because I hate not knowing how things work and simply going off and writing something through ignorance. When I first learned to code I did it through C# and Visual Studio. This taught me the basics. After a while, though, I decided to take it upon myself to learn how to use Makefiles and a decent Text Editor.

Rei Miyasaka said in a comment that anyone can learn how to use a Makefile within a couple of hours with nothing more than a page's worth of information. I whole heartedly disagree with this, especially for someone new. It can take a few days (at least, in my case it did). Also worth noting is that most documentation on Makefiles spans hundreds of pages, and while you can get a good introduction through a single page, to really know how to use them takes far more time and reading.

In my opinion, if you're ambitious enough and you've just started learning, roll a Linux distro (doesn't matter which one as long as it has a good package manager and is relatively stable - I recommend Linux Mint or even Debian itself), and learn C. Start off with a text editor (syntax highlight, auto-indentation, and line number support are musts - everything else is purely preference), simply learning how to invoke the compiler via CLI. Once you've gotten to the point where you're past learning how to code using only one source file per project is when you then start learning how to write a Makefile. Also worth picking up is Valgrind (if you are writing in C/C++, I'm not sure if it supports other programming languages). After a few months of coding in this environment, as you take on bigger projects, learn an IDE (preferably something FL/OSS) and you should be good to go.

The reason why I suggest this is because using an IDE severely limits a programmer when they are just learning. Autocompletion and project/build management is very nice, however if you don't have any idea on how it works underneath the hood, you're going to be severely limited in terms of debugging and/or figuring out why your application isn't running properly, especially if it is just because of an improper build or compiler setting specified by you or the IDE itself.

Cheers.

share|improve this answer
add comment

In my computer science classes, we did not start off with an IDE. It was something we did AFTER we understood what we were doing.

IDEs tend to abstract away too much for beginners and ends up producing educated fools. In the beginning, it is critical you get a good understanding or you will end up thinking in the IDE alone and cannot figure out basic things without it. You will also be limited to only what the IDE can do. Some IDEs are downright malicious in having such abstractions and having their own paradigm that it actually makes people dumber using it. Case in point web forms for ASP.NET.

There is something to be said for bootstrapping yourself.

share|improve this answer
add comment

Here's my take on this:

  1. Beginners are the only people that need IDE. This is because of debugging -- beginners still can have problems understanding how program's execution works, and stepping through the code can help with that.
  2. Mediogre programmers can speed up their programming process because IDE's provide features that let you easier navigate in large source repositories and find where each symbol is located in the source code. They don't need ide any longer, but it sometimes makes life easier.
  3. Advanced programmers do not need IDE. They've done it long enough that IDE's user interface is just too slow for them - pressing a key and waiting for response just takes too long time - instant response is required in order to not waste time. Navigating the source code is not the main priority, since they can remember where every piece of code is located in - they did read the whole code before modifying anything.
share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.