tags:

views:

172

answers:

10

I didn't find a question on this while searching SO but if anyone does please tell me.

There are alot of questing on the pros and cons of IDE's and what IDE to use for this and that language, like "Why should I use an ide?" and "Are we too dependent on our IDE's?".

But as a beginner just starting to understand how to build GUI's with Swing and getting a grip on the workings of event handlers and whatnot I started to wonder, when should you actually start using an IDE to further productivity and not stifle the learning experience?

The intellisense function is really helpful but sometimes makes me feel lazy for not thinking that extra bit and looking things up in the book im reading or the api documentation. However the ability to set flags in the code to step trough to find logical errors and actually go into the parent method are sometimes useful to get a better understanding about what goes on in the code.

I read somewhere that you should have a good grasp on the basics of a language before using the IDE, but what is the basics? And what is good?

+5  A: 

An IDE is a tool you should use from the start. Understanding how languages work is important but memorising every little detail, not so much. A builder would no more learn how to make a mud hut with his barehands before building something with power tools than you should learn to program without using an IDE.

That said, you should be aware of what the IDE is doing for you so that in circumstances where you are faced without one, you know the things you need to make up for. An IDE can't write good code for you, it can't even tell you how to write good code, or suggest good code, it can only supplement your own skillset (at least right now, in 2009 - I can't speak for our robot IDE overlords of 3452).

Jeff Yates
I very much disagree. Starting at the low level for just the first few months or whatever is extremely helpful. (see my answer near the bottom)
jjnguy
@jjinguy: I disagree. The IDE isn't the problem. I started out using an IDE (emacs at the time, it had plenty of support for coding that went beyond just text editing) but I was encouraged to avoid frameworks that abstracted away from what was really happening. I believe that it is much more important to understand what you are writing and developing for than it is to worry about the tool you using.
Jeff Yates
A: 

If you know the ide well, it will help you explore a new language/technology that it supports.

If you don't know the ide, better don't use one at first. Use a simple text editor (notepad++ on windows), command line, and the official reference.

Mercer Traieste
A: 

I think that you should be able to manually do anything that the Intellisense is doing for you automatically. For example, you should know what function you want to type before hitting Intellisense.

samoz
I would disagree here. For me, one of the most important reasons to have code completion/intellisense is to see what API a given object offers.
Fabian Steeg
Reading documentation encourages you to learn new things though. Cherry picking the documentation that you read (through Intellisense) could prevent you from reading about some alternative technique that might work better.
samoz
@samoz: No, reading documentation encourages YOU to learn things. Do not assume that others learn the same way as you. Intellisense is a superb way of finding things you may otherwise not know. I don't read a dictionary to learn every possible word, I read other books with stories and look things up as I go.
Jeff Yates
Lately I've been working with a lot of Visual Studio Automation namespaces and I have been loving intellisense... if I want to check if a particular object has the Name property for example, I can just start typing Object.N and then boom I have the information that I need. Saves me 30 seconds of going to MSDN every time.
muusbolla
@muusbolla but it robs you of 5 minutes worth of emailing checking and Stack Overflow browsing from "well, while I'm in my browser..." moments
samoz
+1  A: 

I would suggest using an IDE right off the bat...but not worrying about most of the functionality. As you learn the language and become more familiar with processes, aspects of the IDE will suddenly become obvious at the right times.

Beska
+7  A: 

The only downside to using an IDE would be using its tools and wizards and not understanding how the code they generate works. If you are using an IDE for code completion, syntax highlighting and debugging then that's great. If you are using it to generate GUIs that you can't build by hand or generate Web Service code that you don't know how it works, then that's bad. But that's bad regardless of whether you're a beginner or not.

Your instincts are right. Understand how things work and how to code things by hand before just trusting the tool blindly.

geofflane
A: 

Well, if you're expirienced in other languages or just might have worked with them, then use IDE right away.

But for complete beginners, I wouldn't suggest it.

usoban
+3  A: 

Don't start with an IDE. Here's why:

I learned Java using Notepad and the command line. If I needed to know what methods a particular class had, I looked at the APIs online.

I did that for about half of a semester. Then we switched to Eclipse.

Doing it that way, I became very familiar with the Java syntax, lots of the core libs, and how the Java 'compilation' and running process works.

People should never develop this way long term as it is terribly unproductive. But I feel it is the correct/best way to begin learning a language.

Don't start with an IDE.

jjnguy
I think that you are confusing ways to encourage good practise with perceived causes. The root problem is that you need to be resourceful and know where to look to be a developer. You happened to facilitate this by not using an IDE - but that does not equate to IDE bad, no IDE good; you could just have easily just looked everything up anyway.
Jeff Yates
Its true that using an IDE doesn't make it bad. But I would say that not using an IDE makes it easier to learn good practices.
jjnguy
I agree with this for another reason: learning initially from Notepad makes you adore IDEs so much more :P.
Joey Robert
I still don't agree. How can you possibly know you're learning good practises just because you don't use an IDE? Bad habits are learned regardless of the tools.
Jeff Yates
@Joey: Very true.
Jeff Yates
I guess, from my experience learning from the bare basics made me appreciate how everything worked better. I don't argue that you can't learn good practices while using an IDE. But, IMO it's easier if you aren't leaning on a crutch.
jjnguy
Java is a crutch.
muusbolla
+2  A: 

I don't think you should get too hung up on delaying using an IDE. Let's face it, in the real world, you'll be using that IDE pretty much all the time.

When you're initially learning, I think the most important thing is to use the IDE, but know what it's doing.

For example, when Visual Studio.NET first came out, and I played with it and wrote my first "Hello World" app, then clicked the "green go button" (!), I watched the output window with all of it's information. I then looked at the help documentation to see that this is really just calling out to csc.exe and piping it's text output back into an IDE window. So I went off and started invoking csc.exe myself from the command line and saw it's parameters that it would accept. Then I jumped back into the IDE and saw how GUI checkboxes related to the csc.exe parameters.

This way, I started using the IDE straight away, but also learnt what the IDE is doing with regards to "shelling out" to command line based utilities.

From here, I even tried typing my first C# program in Notepad and compiling it from the command line. But I wouldn't get too hung up on it, though. Let's face it, in the "real world" you're very unlikely to need to do it. I was good to scratch the itch of my curiosity, though!

CraigTP
+1 for the story; but there are cases in real life when you don't have an ide: at the client site
Mercer Traieste
@Mercer - Ok, that's true, which is why if you know what the IDE is doing from the command line, you'll be okay in the situation you describe. Personally though, as a .NET developer, I've never been in a position where I *couldn't* use an IDE, although I appreciate everyone is different.
CraigTP
A: 

It doesn't have to be one or the other - try both. Life's short enough ;-)

IrishChieftain
A: 

IDE saves you time and energy. I have no problem of using IDE even as beginner. It only helps.

fastcodejava