Je rebondis sur l'argument des outils de développement qui semble être pour vous un point important pour la productivité, parce que j'ai quand même beaucoup de mal à croire à celui-ci en particulier (tout comme au "x10" entre développeur expérimenté et un débutant, mais la discussion dérive déjà donc je ne vais parler que du premier point ^^).
Pour mes projets perso j'utilise Notepad++ (ou n'importe quel bloc-note évolué équivalent), tandis qu'au boulot j'utilise principalement Visual Studio pour C# et IntelliJ IDEA pour Java/Scala. Peut-être que je suis un piètre utilisateur de ces outils (c'est particulièrement vrai pour IDEA d'ailleurs, je suis loin de connaître tous les raccourcis), mais même s'il y a des tâches sur lesquels ils me font gagner du temps je ne les considère ni l'un ni l'autre comme des outils indispensables au développement :
- Je passe beaucoup plus de temps à lire du code qu'à l'écrire, et il me semble que c'est vrai pour à peu près n'importe quel projet sur lequel plusieurs développeurs travaillent (d'autant plus vrai que les développeurs sont nombreux d'ailleurs). Les fonctionnalités qui me seraient les plus bénéfiques sont donc celles qui me permettent de lire plus efficacement, donc j'ai surtout besoin d'une fonction de recherche, d'une fonction qui permet de naviguer facilement dans le code (suivre une référence, vers à la déclaration d'un symbole, etc.) et d'un éditeur qui se lance et ouvre des nouveaux fichiers instantanément. Je peux trouver ça dans à peu près n'importe quel éditeur de code sans avoir besoin d'une IDE très évoluée.
- Même quand "j'écris" du code ça n'est pas véritablement la frappe au clavier qui me prend le temps de temps, donc au-delà d'une complétion basique pour ne pas avoir à taper entièrement le nom de mes fonctions, je n'ai pas besoin de grand chose. Beaucoup d'outils qui proposent des templates de code me demandent finalement plus de temps pour naviguer et compléter ce qui a été écrit que si je l'avais tapé moi-même.
- Pour le refactoring je vois deux cas : soit il s'agit de refactoring basique (par exemple renommer un symbole ou changer l'ordre des paramètres d'une méthode) et je fais tout en ligne de commande, à base de git grep -Fl machin | xargs $EDITOR ; c'est moins efficace que les outils de renommage intégrés, je perds un peu ici, mais je ne passe pas non plus mon temps à renommer des variables donc c'est une perte limitée. Dans le deuxième cas il s'agit de refactoring complexe qui implique des changements de plusieurs classes et interfaces, et ici je n'ai pas trouvé un outil qui me fasse gagner du temps.
Après je me rends compte que certains langages rendent l'utilisation d'IDE plus indispensable que d'autres, et je ne pense pas que ce soit une bonne chose. Je n'ai aucun mal (dans le sens "aucune fonctionnalité ne me manque au point de me faire changer d'outil") à utiliser Notepad++/terminal pour écrire du C, du C++, du Python ou du Shell, ou Notepad++/navigateur pour faire du web. En revanche écrire du Java sans IDE est franchement pénible et écrire du Scala devient même suicidaire. Mais en déduire qu'une IDE est un outil indispensable pour un développeur serait à mon avis une mauvaise conclusion, je pense que la faute se situe au niveau des langages.