You sound like you're using and IDE of some sort. I find their completion to be extremely useful when I can't remember exactly what function I want to call, but less useful when I know it and just want to get it typed out.
I use Emacs so I don't even have the nice semantic completion that IDEs offer (Emacs has some of that with its "cedet", but I can never figure out how to get it to work properly). But Emacs's completion heuristics are good enough for almost everything I do. When you hit the complete key in Emacs (M-/) it first looks backwards through the file you're in looking for the word. Then it looks forward. Then it looks in the other files you have open.
That looking backwards first thing is the key to why it works so well. And that's because most of the time you're referencing variable or macros that are nearby in your code, and almost always just up a few lines. It makes it correct a very high percentage of the time, so much so that I rarely completely type a variable name twice.
You sound like you're using and IDE of some sort. I find their completion to be extremely useful when I can't remember exactly what function I want to call, but less useful when I know it and just want to get it typed out.
I use Emacs so I don't even have the nice semantic completion that IDEs offer (Emacs has some of that with its "cedet", but I can never figure out how to get it to work properly). But Emacs's completion heuristics are good enough for almost everything I do. When you hit the complete key in Emacs (M-/) it first looks backwards through the file you're in looking for the word. Then it looks forward. Then it looks in the other files you have open.
That looking backwards first thing is the key to why it works so well. And that's because most of the time you're referencing variable or macros that are nearby in your code, and almost always just up a few lines. It makes it correct a very high percentage of the time, so much so that I rarely completely type a variable name twice.