...I first setup my C++ environment. All the time, you hear about new programmers struggling to understanding the concept of a programming environment. As a matter of fact, I know several of my friends scared off by simply trying to setup an environment. There aren't very many books that efficiently explain what the process of programming is (or at least in a detailed manner). I, who is now making his own applications with advanced concepts using multiple project configurations for all around flexibility, struggled with this for about a month. I was afraid to ask any questions, or more like, I didn't know what to ask. Questions like, "Where do I start" is too general and nobody can explain them well. It's almost impossible to teach someone to effectively setup an environment on their first time while keeping things like, cross-platform capabilities, project defines, etc. in mind. Getting someone to setup on MSVC++ is difficult enough with a single install button. A beginner setting up MinGW with MSys and understanding how to use both is simply unrealistic, even with a general readme. There are simply too many unanswered problems. We can use it because we fill in the blanks with knowledge and experience. Things like, "How do I generally compile?" or "Am I doing this right?" or "What is this file for? Am I supposed to edit this or that first? What am I supposed to configure before I attempt to compile?". It goes on and on and we simply take for granted because over time, we learn these things naturally.
An IDE answers to many of the questions: "How do I generally compile?"
I click a button / hit a keyboard shortcut "Am I doing this right?"
The IDE will tell me if I'm doing wrong "What is this file for?"
IDEs usually put some contents in the generated files... "Am I supposed to edit this or that first?"
... likely with comments where needed "What am I supposed to configure before I attempt to compile?"
If the IDE has smart wizards for project creation, nothing
Problem is, speaking as an absolute novice, the IDE takes away a portion of the learning, automating a greater number of tasks - sure, gets things moving, the problem is that this often leaves the student with the feeling that - yes they may be doing things, but they don't know what's really going on.
This situation has parallels with using a regular desktop environment such as windows - we can get things done but the basic workings are a mystery.
Personally, i am beginning on Notepad++ (albeit running on a linux machine under wine - come on guys, i am located in the home of linux - Finland!) and using the g++ compiler in conjunction. Not many problems with the basics, but, as I say, started from scratch 2 weeks ago with no prior programming experience.