En tant que pigiste, mes clients me demandent souvent ce qu'ils doivent choisir entre des éléments similaires, ni l'un ni l'autre étant meilleur qu'un autre. Exemples:
"Ai-je besoin que mon site e-commerce soit en PHP ou ASP.NET?"
"Dois-je héberger ce service Web ordinaire dans le cloud ou utiliser un service d'hébergement ordinaire?"
"Lequel est le meilleur pour mon nouveau site Web: MySQL ou Oracle?"
etc.
Il y a peut-être au plus 1% des cas où le choix est pertinent, et il existe une raison réelle et objective de les utiliser les uns par rapport aux autres, sur la base de mesures et d'études précises. Dans tous les autres cas, cela n'a pas d'importance du tout. C'est totalement, totalement hors de propos, soit parce qu'il n'y a pas d'implications¹, soit parce que ces implications sont trop petites pour être prises en compte², soit enfin parce qu'il est impossible de prévoir ces implications³.
Si vous connaissez une chose et pas une autre, la réponse à ces questions est simple:
«Vous pouvez soit écrire l'application en C # ou Java, les deux étant probablement équivalents dans votre cas. Notez que je suis un développeur C #, donc si vous choisissez Java, je ne serais pas en mesure de travailler sur votre projet et vous auriez besoin de trouver un autre pigiste. "
Lorsque vous connaissez les deux technologies, vous ne pouvez pas répondre à cela.
Dans ce cas, comment expliquer au client que la question qu'il pose est sujette à la guerre des flammes et n'a pas de conséquences réelles sur son projet?
En d'autres termes, comment expliquer que vous ayez choisi d'utiliser une technologie plutôt qu'une équivalente pour des raisons liées aux ressources humaines, sans donner l'impression d'être non professionnelle ou de ne pas se soucier du projet?
¹ Exemple: MySQL est-il meilleur (pire?), En termes de performances, par rapport à Oracle, pour un site Web personnel qui sera accessible par, oh, soyons optimistes, deux personnes par jour?
² Exemple: pour un projet donné, on m'a demandé de déterminer si l'hébergement Windows Azure serait moins cher que l'hébergement de la même application sur un fournisseur d'hébergement ASP.NET bien connu. Le coût s'est révélé exactement le même.
³ Exemple: votre client a une idée d'une future application (l'idée elle-même étant extrêmement vague). Il n'y a pas de plan d'affaires, pas d'exigences, rien du tout. Juste une idée. On vous demande si Java est meilleur que C # pour cette application. Que répondez-vous?
la source
Je pense que votre prémisse, selon laquelle la décision est largement arbitraire, mérite d'être remise en question. Je suis d'accord pour dire que vous ne voulez pas vous retrouver dans une paralysie de l'analyse où vous avez des mois de réunions de comité, mais cela mérite réflexion. Vu de haut niveau, le choix technologique est rarement arbitraire. C'est la clé de la stratégie commerciale car elle influence fortement la direction future d'une entreprise, et c'est le rôle du développeur de guider l'entreprise dans le processus de décision.
Les spécificités de la technologie, telles que l'utilisation de MySQL des arbres B par rapport à ceux d'Oracle, ou la syntaxe de PHP par rapport à celle d' ASP.NET , sont bien sûr ouvertes à de nombreux débats religieux parmi les programmeurs et dépendront vraiment de votre propre goût. Puisqu'un consultant similaire à vous pourrait facilement avoir une opinion radicalement différente, ces choses sont en effet plutôt arbitraires. Et il est assez bien établi que tout développeur compétent dans une technologie donnée fera quand même du bon travail. Les problèmes les plus importants pour l'entreprise ne sont donc pas les détails linguistiques, mais des questions de niveau supérieur telles que:
Quel est le scénario de déploiement? Certaines technologies se prêtent à une approche plus mains libres, surtout s'il existe des services d'hébergement cloud comme Heroku . Certaines entreprises aimeront cela, d'autres devront s'héberger, avoir une présence plus forte d'administrateurs système, etc.
Quelle est la durée de vie et la portée du projet? PHP, par exemple, est sans doute plus facile que Java pour démarrer un projet, mais il est plus difficile à mettre à l'échelle et à maintenir pendant de nombreuses années.
Quels types de développeurs la technologie attirera-t-elle? Pour Java, vous obtiendrez plus probablement ceux qui ont une expérience en entreprise. Pour PHP, vous pouvez obtenir plus de types de concepteur croisé ou d'administrateur système. Pour Node.js , vous aurez plus de développeurs front-end et expérimentaux, pour Haskell, un public universitaire, etc. Tous les stéréotypes que je connais, mais cela donne à l'entreprise quelques indices. Chacun de ces groupes a sa propre culture, ses propres attentes en matière de rémunération et d'environnement de travail, ainsi que ses façons de travailler les uns avec les autres et avec le reste de l'organisation.
Quelle est la disponibilité des développeurs? En supposant que les développeurs doivent être physiquement présents, certains paramètres régionaux ont des écosystèmes particuliers. Dans une ville pleine de startups, il y aura beaucoup de développeurs Ruby on Rails et PHP, dans une ville pleine de départements gouvernementaux, il y aura beaucoup de Java / MS, etc. La grande majorité des langages de programmation dans le monde doivent être exclu simplement sur cette base.
Ce ne sont là que quelques exemples. Les facteurs les plus importants dépendront de la situation, mais le point principal ici est que les entreprises doivent adopter consciemment les technologies qui correspondent à leur stratégie, leur culture et leurs circonstances.
la source
Je donnerais au client une matrice de comparaison objective sur la faisabilité de l'utilisation de cette technologie. Par exemple:
Dans votre matrice:
Etc.
Selon le nombre d'éléments dans votre matrice, l'un devrait rapidement trouver un score et déterminer la faisabilité de l'utilisation de cette technologie par rapport à l'autre. Dans certains cas, MySQL peut être meilleur, dans d'autres Oracle.
la source
Expliquez-le en termes qu'ils comprennent - argent. Vous pouvez leur dire que vous avez choisi X plutôt que Y parce que, même s'ils auraient tous les deux été adaptés au projet, vous êtes plus familier avec X que Y. Et vous pourrez ainsi leur fournir l'application à un moindre coût lorsque en utilisant X que s'il a été écrit en utilisant Y.
la source
"Préférez-vous conduire une Ford ou une Chevrolet?" serait l'analogie de conduite que je lancerais pour voir s'ils peuvent comprendre l'idée que la question ne va nulle part. Une question similaire pourrait être: "Quel est le meilleur hamburger ou pizza?" où sans ajouter plus de contraintes la question a une variété de réponses possibles que l'on pourrait donner.
L'autre façon de voir cela est de se demander pourquoi est-ce important de savoir et selon quel matériel supplémentaire peut être trouvé en clarifiant la question, cela peut conduire à une meilleure réponse. Certaines personnes peuvent simplement se demander: "Qu'est-ce qui a été utilisé pour créer mon site de commerce électronique?" bien qu'ils préfèrent essayer d'être impressionnants et lancer quelques mots à la mode.
la source
Beaucoup de bonnes réponses déjà, mais une chose que j'ai remarquée n'a pas été mentionnée: c'est une excellente opportunité de divulgation complète de votre part. Par exemple,
"Maintenant, je gagne ma vie principalement grâce à la technologie <foo>, donc je ne suis pas complètement impartial. Cependant ..."
Je pense vraiment que vous gagnez en crédibilité par ce genre de déclaration.
la source
Il existe de rares cas où une technologie est clairement inférieure à une autre - "Dois-je développer mon site Web en Python ou Cobol?", Mais c'est surtout une question de chevaux pour les cours.
Il existe une méthodologie que j'utilise pour décider quelle technologie convient à un client: -
La plupart du temps, le choix s'arrête à la deuxième étape. Si le client utilise Acme Widgets , a des personnes expérimentées dans l'utilisation d'Acme Widgets, a un ensemble de normes, de contrôle des modifications et de procédures de gestion construites autour d'Acme Widgets et Acme Widgets peut faire le travail, alors Acme Widgets est la voie à suivre - même si Ezee DohDahs est techniquement meilleur pour cette tâche!
la source