10

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.

4 Answers4

22

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.

4

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).

ptyx
  • 5,871
2

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.

John Bode
  • 11,004
  • 1
  • 33
  • 44
1

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.