Choix et compromis

Où il est question d'abstraction, d'avoir conscience des choix que l'on fait et des compromis qu'ils impliquent.

Se placer à un niveau d'abstraction logicielle donnée, c'est faire plus ou moins de choix pour atteindre un objectif.

Si je me place bas niveau, je devrai faire beaucoup de choix pour arriver à mon objectif. Il y a de bonnes chances que la solution construite corresponde parfaitement à mon besoin. En contrepartie, je dois passer plus de temps, de réflexion et de charge mentale. C'est épuisant de faire des choix!

Si je cherche à adresser un besoin classique, je vais m'appuyer sur une librairie ou un framework qui a fait tout les choix les plus adéquats pour ce problème. Je peux alors me concentrer sur mon objectif, et utiliser mon temps pour faire les choix qui comptent vraiment pour moi. En contrepartie, je dois composer avec tous les choix que je n'ai pas fait moi même. Encore dois-je en avoir conscience.

En tant qu'ingénieur logiciel, nous passons notre temps à faire des choix. C'est au coeur de notre métier. Plus nous avons de choix à faire pour régler un problème, plus cela prend du temps. Moins nous faisons de choix, plus nous irons vite. Mais nous ferons des compromis.

Bien avoir conscience des choix que l'on doit faire, de ceux que l'on délégue à d'autres, et des compromis que cela implique, cela fait partie du job lorsqu'on crée un logiciel.


Note: Je propose comme méthode d'estimation de compter les choix qu'il y aura à faire dans un projet. En première approximation, ça ne peut pas être pire que les autres façons d'estimer...