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.

Possible Duplicate:
Should newbies use IDE autocomplete (Intellisense)?
Is it wrong or bad to use autocomplete?

Having used an IDE for the last 3-4 years, the other day a few of my coworkers and I came to a fairly sad realization that we had forgotten some basic Java methods/functions because we always relied on our IDE (Eclipse/STS/IntelliJ) to complete them for us (such as what a function takes in terms of parameters), is this a sign that our skills are deteriorating, that we're over relying on IDEs? (This whole discussion came about us talking about taking the Oracle Java 7 EE certification test and looking over a few practice questions, questions such as, what parameters does function X take, etc)

If so, how do you guys fight off this sort of thing? Just re-read books and stuff? I myself can't imagine not coding with an IDE because in all honesty, it does make me code a lot faster with things such as auto complete, etc while some of my co-workers suggested we code sans IDE for a few months.

I do realize that sometimes one doesn't need to know everything about a function, but I do remember a college professor telling us that IDEs are terrible because when the time comes that you need some sort of function, you'll have to waste time looking it up instead of just banging out the code from rote memory.

share|improve this question

marked as duplicate by Jarrod Roberson, ChrisF Oct 19 '11 at 9:05

This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.

1  
Very highly related - programmers.stackexchange.com/questions/114520/… –  ChrisF Oct 17 '11 at 16:35
1  
Thanks @ChrisF! Some great reading there on other people's thoughts on using IDEs in general. Made me feel better that I'm not the only one that feels that memorizing every function and it's parameters is a bit silly. Needless to say, I still have to learn it to take the Oracle Java cert :( [thankfully, work will be paying] –  congalong Oct 17 '11 at 16:40
    
Just as a note I try to write pet projects at home, or one-off applications in a code editor like Notepad++. Anything major and/or important in an IDE. –  Glenn Nelson Oct 17 '11 at 16:41
    
@GlennNelson Do you find that it helps a lot? Do you ever get frustrated when you have to go google an API or function because you can't remember it exactly? I feel like I'd get annoyed at having to look up functions and APIs but then again, I feel that may also be my own incompetence. I guess I'm sort of fighting myself on the idea that I feel that remembering little details is a bit silly, yet, if I know it, I do save time, however, even then in an IDE, I still just type out a few characters and then let the IDE auto complete the rest of it. =/ –  congalong Oct 17 '11 at 16:46
3  
You college professor was an idiot if he though you should memorize the entire standard library for a language, unless you are a savant, this isn't going to happen and is is idiotic to try. –  Jarrod Roberson Oct 17 '11 at 16:50

4 Answers 4

up vote 21 down vote accepted

Is this a sign that our skills are deteriorating, that we're over relying on IDEs?

I'm unable to hunt an animal, because I rely on the fact that when I need food, I buy it in a market nearby. Is this a sign that our skills of hunters are deteriorating over generations and that we're over relying on our society?

There are skills you need today as a developer. When somebody hires you, he expects from you:

  • to have an intellectual ability to solve complex problems,
  • to know the practices and patterns which help you to work in an efficient way,
  • to know the standards, to understand requirements, etc.
  • to be able to use a given programming language efficiently, i.e. have enough knowledge to find quickly how to translate a solution to a problem into the given language.

But this does not include knowing every name of every method in a given framework. This is because:

  • It's a waste of time,
  • If you use the tools you have to use to be efficient, they will remember those method names for you (and help you through code completion),
  • Soon or later, the names will change, old ones will be removed, new ones will be added: it's easy for an IDE to be constantly up to date; it's a bit harder to do for a human.

In other words, I would rather hire somebody who knows very well how to use tools he have to do the job, rather than someone who spent weeks learning the names of the methods.

share|improve this answer
2  
I think this points to the larger evolution of technical skills in general, in which the ability to retrieve information is favored over memorization. –  Chance Oct 17 '11 at 17:06
    
@Chance: or possibly, in fact, all knowledge. bbc.co.uk/news/science-environment-14145045 –  pdr Oct 17 '11 at 17:18
1  
Great response MainMa. That hunting example is a good analogy I'll have to keep in mind ;) –  congalong Oct 17 '11 at 17:28
2  
@maple_shaft, it's hard for me to address that concern for everyone, because I use an IDE to autocomplete, quickly get to other files, and Ctrl+click on a variable to find out where it is declared. So, if I lost that functionality, I think I'd survive. As for other things, like using Qt Designer to design GUIs, in the technical area, the risk/reward ratio is too far in the risk area, and I have problems thinking of a technical collapse that's parallel to a societal collapse that would mean I'd have access to all the tools and none of the information. –  Chance Oct 17 '11 at 18:34
1  
+1 for the hunting analogy ;) –  Jacek Prucia Oct 19 '11 at 12:29

Is programming about using the right function, or coming up with the right design?

I consider that knowing that some method or paradigm exists (or even might/should exist) is enough to look it up when you need to - that's what the IDE, Javadoc and Google are for. Of course good knowledge of the library is a time saver (although I find myself looking at the doc of a lot of APIs I 'know' already - just to be sure).

share|improve this answer
    
Good call on reading the APIs, I will be honest in that a lot of times I don't bother (case in point, Spring stuff. I just let the IDE do it's thing and I fill in the blanks ><) –  congalong Oct 17 '11 at 16:47

All that's deteriorating is the space you reserve for trivia1. There's only so much detail you can keep in your head at one time, so it's best to focus on solving the bigger problem and not worrying so much about memorizing the parameter lists for methods you don't use all the time (there should be at least a few methods that you use constantly and have internalized; I mean, you shouldn't have to look up how to call println, for example).

I cut my teeth on C and Fortran in a command-line environment, so I was always suspicious of people who claimed they needed an IDE to perform their tasks. Then I started working in Java a couple of years ago. Java's a freaking huge language compared to C, with a correspondingly huge class library, and there's no way anyone could be expected to memorize all of that.

The name of the game in software development is productivity; using a tool to make you more productive shouldn't be a problem.

If you really do feel like your skills really are deteriorating, though, maybe you should spend some cycles working in a plain ol' text editor (vi, Notepad++, etc.) and compile on the command line.


1 Syntax is not trivia. If you're starting to forget how to actually structure a class or program, then that's a real problem that needs to be remedied.

share|improve this answer
    
I totally agree with this. I think it was the utter shock of having to know some functions on the Oracle Java 7 EE cert test that to be honest, I've never used at work, school, or pet projects that kind of startled me a bit. I realize that the certification isn't really a measure of a developer's skill but I think I sort of associated the Oracle Java 7 EE as a baseline for knowing Java which is probably my main issue. –  congalong Oct 17 '11 at 17:30
    
I'm not good with my terminology, but isn't syntax much lower-level than how to structure a class or program? –  Andrew Grimm Oct 18 '11 at 1:24

I've been COBOLing for 20 years, and using a PC text editor for the last 12 years while most everyone around me slogged along with clunky mainframe editors. Oh, there were a couple of other radicals who saw the value of syntax highlighting, macros, and other heathen practices. Always thought an IDE would make me more productive, but never really pursued it much.

About 4-5 years ago, I was part of a group tasked to research and recommend a text editor. We looked at options, and quickly all of us saw the merits in an IDE over a text editor. We only were able to come up with one solution that met the needs we laid out, and one could get into a semantic discussion over whether it was a true IDE or still just a text editor with extremely advanced macro capabilities giving it IDE-like functionality.

In terms of productivity, having been on the farm before going to Paris, I don't think there can be any question that IDEs are the way to go.

share|improve this answer

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