Interfaces graphiques contre ligne de commande : plaidoyer pour le pragmatisme
Alexandre Jeffroy
Ingénieur logiciel
Dans le monde du développement, il existe une forme de snobisme autour de la ligne de commande : « un vrai développeur utilise le terminal ». J'ai longtemps fait partie de ce camp, jusqu'au jour où j'ai vu une commande de déploiement lancée sur le mauvais environnement, à cause d'une simple faute de frappe dans le nom de la cible. Plusieurs heures de panne pour une lettre inversée.
Ce jour-là, j'ai compris quelque chose : dans certains contextes, la ligne de commande n'est pas un signe de compétence, c'est un risque.
Le bon outil dépend du contexte
La CLI excelle pour les tâches automatisables, scriptées, répétées des dizaines de fois par jour, ou le traitement de masse. Elle échoue en revanche sur les tâches occasionnelles (qu'on doit relire la doc à chaque fois), les tâches critiques où l'erreur coûte cher, et les opérations à paramètres multiples et interdépendants.
**Exemple vécu** : sur un projet de simulateur de vol, une procédure de mise à jour critique nécessitait une commande à sept paramètres (environnement, version, chemin de configuration, options de sécurité, fenêtre de maintenance...). Sur six mois, cette commande a été mal saisie une dizaine de fois : mauvais environnement, version tronquée, chemin erroné, option de sauvegarde oubliée. Plusieurs incidents en production, tous évitables.
PyQt à la rescousse
Pour ce genre d'opération, j'ai développé une interface graphique avec PyQt : quelques heures de travail pour éliminer une source d'erreurs récurrente. Ce framework a plusieurs atouts pour ce type d'outillage interne. Il permet un développement rapide, avec une interface fonctionnelle en quelques heures. Il repose sur Python, langage déjà maîtrisé par l'équipe. Il fournit des widgets riches prêts à l'emploi, des listes déroulantes validées aux sélecteurs de date en passant par l'auto-complétion. Et il reste multiplateforme : le même outil tourne sur Linux et Windows.
1class DeploymentDialog(QDialog):
2 """Interface de déploiement sécurisée."""
3
4 def on_env_changed(self, env: str):
5 if env == "production":
6 self.env_warning.setVisible(True)
7 self.env_warning.setText("⚠️ Déploiement en PRODUCTION")
8 self.auto_select_config(env) # évite les chemins de config erronés
9 self.update_summary()
10
11 def validate_all(self) -> bool:
12 if self.env_combo.currentText() == "production" and not self._confirmed:
13 return self._ask_production_confirmation()
14 return self._all_fields_valid()Le principe est simple : la liste des versions valides est proposée dans un menu (plus de faute de frappe possible), le fichier de configuration est sélectionné automatiquement selon l'environnement, et toute cible « production » déclenche un avertissement visuel explicite avant confirmation. Le récapitulatif final s'affiche en clair avant tout lancement.
Le résultat
Après la mise en place de cette interface, les erreurs de déploiement dues à une mauvaise saisie ont tout simplement disparu. La machine valide désormais ce qu'un humain fatigué pourrait laisser passer un vendredi soir. La CLI reste sous le capot : l'outil graphique ne fait que construire, valider puis exécuter la commande, en traçant précisément ce qui a été lancé.
Le bon outil, pas le plus prestigieux
Je continue d'utiliser la ligne de commande tous les jours pour scripter et automatiser, et rien ne la remplace pour cela. Mais dès qu'une opération est rare, critique, ou comporte plusieurs paramètres interdépendants, une interface graphique bien pensée n'est pas un signe de faiblesse technique : c'est un choix pragmatique qui protège l'équipe de l'erreur humaine.
Autres articles
Workbench : mon couteau suisse pour éliminer les actions répétitives
Workbench est l'outil qui sert de socle à toute ma démarche d'outillage interne. Une interface graphique unique qui regroupe les actions répétitives du quotidien et remplace une poignée de commandes fastidieuses par quelques clics.
SonarQube : maîtriser la qualité et la dette technique
Dans des secteurs où la fiabilité n'est pas négociable, comment s'assurer que des centaines de milliers de lignes de code respectent les standards les plus élevés ? SonarQube est devenu un allié indispensable sur mes projets.