Je rajouterai à la bonne liste de SpaceFox : le refactoring.
Dans un code très conséquent, changer le nom d'une classe ou d'une variable peut devenir vraiment vraiment pénible (et dans un langage non compilé c'est encore pire, on ne peut pas faire confiance au compilateur pour nous indiquer des références qu'on aurait pu oublier). Changer un nom de package, namespace ou autre peut vite devenir une torture.
Dans ce cas, laisser l'IDE faire permet vraiment de travailler l'esprit tranquille. Franchement, il est extrêmement rare que je ne change pas le nom d'une classe dans la vie d'un projet. Le refactoring automatique d'un IDE m'aide vraiment énormément.
On s'éloigne de l'auto-complétion mais il me semblait utile (puisque c'est aussi une de mes petites manies) de mentionner ce fait.
Et je plussoie également le message de Stranger. Quand on travaille avec des libs récentes, (en version SNAPSHOT) ce qui est mon cas en ce moment. Je sais que la doc en ligne, même auto-générée, ne reflète pas nécessairement la dernière version du projet que j'ai checkout. L'auto-complétion m'aide énormément, pour ça et mon code qui n'est pas encore documenté. Je ne connais pas par coeur les primitives de certaines classes que j'ai écrites, notamment si une propriété est accessible publiquement ou pas encore, si j'ai écrit ou non telle ou telle surcharge de méthode de convenience. Si elle n'existe pas encore, l'IDE me propose de la créer automatiquement, m'amène sur son implémentation, et j'écris dedans.
Après, +1 également pour IntelliJ, même si les raccourcis et l'organisation des menus sont une vraie vraie galère à prendre en main.