Auto-complete is a lovely way to learn a new language.
Auto-complete is a lovely way to learn a new language.
Yes, you may see results quicker, but I've found all that happens is you become reliant upon auto-complete to do the thinking for you. All too often I have seen people use auto-complete as a tool to help them just mindlessly code away rather then taking the time to actually figure out what it is they are trying to achieve. Forcing yourself to actually look at the API and type out a function name cements a concept so much more then autocomplete.
Agreed. Back in college I remember reading a book about effects of various computer aids on our cognitive development [the users in question were mostly teenagers/students]. Programmers were mentioned too. Relying on compilers to catch syntax errors or auto-completing IDEs to suggest method names we're basically refusing to pay attention/memorize things, which ultimately leads to a much poorer skill quality. Ever since then I've been training myself to expect my code to compile at 1st try, i.e. I would do a quick reviews before hitting the "build" hotkey.
From my experience: I think most Microsoft developers will feel completely lost if left with a command line compiler and notepad.exe Even if you take coding out of the equation, many don't have a good understanding of what makes an executable, i.e. they wont' be able to build a project without an IDE.
Where auto complete comes in is when one wants to port knowledge from one programming language to another. For example while I'm a computer science student I moonlight as a PHP developer and I don't really care to memorize PHP's perverse (idiosyncratic if you prefer) functions. But I know that array_ CTRL-Space in eclipse will tell me that array_filter takes the list as it's first while array_map takes it as it's second argument. One can blame that on PHP's designer but at the end of the day auto complete saves me from memorizing something I really don't need to know. (Ok now that I've looked it up and written it down that bit of knowledge will probably stay with me forever)
Haskell is way more consistent in that regard, but I still couldn't survive without Hoogle.
And Java without auto complete takes not only twice the time to write but would also force me to remember that Collection is in java.util while Iterable is in java.lang. I think anyone would be hard pressed to explain to me why I need to know that.
So I think I made my case that skills are not dependent on rote learning of a function's argument order or a class's namespace.
Furthermore it seems to me that auto completing IDEs actually help with remembering often used "phrases".
But I agree with your point about learning. The trade-off is always that it takes more time to learn without help than with but later, one tend to rely too much on the help. The difficult thing is to know how to go back to basics at some point.