Que répondre à un client qui demande laquelle des deux technologies équivalentes doit être utilisée?

14

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?

Arseni Mourzenko
la source

Réponses:

36

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 de ne pas être professionnel ou de ne pas vous soucier du projet?

Bien. Vous dites juste que:

En termes d'exigences pour ce projet, la technologie X et la technologie Y sont également adaptées à la tâche, donc les considérations techniques n'y entrent pas.

Il est plus facile de trouver des personnes talentueuses connaissant la technologie choisie (ou le domaine problématique), c'est pourquoi elle a été sélectionnée.

Ou - aux fins de ce projet, l'utilisation de la technologie Y sera plus rentable.

Dites-le comme c'est.


Vous voudrez peut-être trouver une analogie à laquelle le client peut se rapporter. Quelque chose comme - dans le but de se rendre de l'Europe aux États-Unis, vous pouvez utiliser un Boeing 747 ou un Airbus 380. Est-il important de savoir lequel? Pas pour le client, tant qu'il y arrive et que les technologies sont également adaptées aux exigences :)

Lequel a été sélectionné? Quelle que soit la compagnie aérienne opère ...

Oded
la source
13
+1 Couple de fautes de frappe - Boing 747 semble amusant cependant. J'imagine un bâton de pogo géant ...
MarkJ
4
+1 pour Boing 747 (Eh bien, et la partie "personnes talentueuses") - Je pensais à ces châteaux gonflables parfois vus lors des fêtes d'anniversaire des enfants
Izkata
1
Si j'étais le client, je pourrais répondre "Je n'en ai aucune idée - mais j'aimerais penser que le pilote le fait."
psr
7

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.

mahemoff
la source
4

Je donnerais au client une matrice de comparaison objective sur la faisabilité de l'utilisation de cette technologie. Par exemple:

"Lequel est le meilleur pour mon nouveau site Web: MySQL ou Oracle?"

Dans votre matrice:

  • Coût
  • Utilisation interne
  • Évolutivité
  • Expérience / Familiarité
  • Prise en charge
  • Outillage
  • Déjà utilisé (déployé)
  • Facilité de développement
  • Connaissance du développement

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.

Jon Raynor
la source
4

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.

GrandmasterB
la source
1
Ouais, rien de mal à cela étant la réponse. Si vous connaissez mieux C # que Java, il va de soi que vous seriez plus productif avec C #.
Andy
2

"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.

JB King
la source
8
Les exemples Ford / Chevy et Hamburger / Pizza semblent ne pas répondre / désinvolte. Je serais irrité par de telles réponses.
Robert Harvey
4
Et la réponse est toujours Pizza;)
Izkata
2
@Izkata: ... mangé dans une Ford.
FrustratedWithFormsDesigner
2
Attention, Ford vs Chevy peut être un débat religieux dans certaines régions. Un homme pourrait se blesser.
Wyatt Barnett
2

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.

Scott C Wilson
la source
1

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: -

  1. Qu'utilisent-ils actuellement? Plus de la même chose est généralement mieux que quelque chose de nouveau.
  2. La technologie actuelle présente-t-elle des contraintes qui seront dépassées par le nouveau projet? Par exemple, ils utilisent SQLite , mais ils s'attendent maintenant à ce que 100 utilisateurs effectuent des mises à jour simultanées.
  3. Si la technologie actuelle ne convient pas, choisissez entre l'open source le plus populaire et le leader du marché commercial.
  4. Le leader du marché est-il nettement meilleur que l'offre open-source et y a-t-il des différences significatives par rapport au projet actuel?
  5. Après avoir opté pour l'open source ou le commercial, prenez un bon exemple des deux offres concurrentes les plus proches et voyez si elles sont plus adaptées.

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!

James Anderson
la source