Comment prendre des décisions techniques significatives avec très peu de temps

36

Je dispose de deux jours pour prendre une décision très sérieuse au sujet des outils et des plates-formes que mon entreprise va utiliser afin de porter son application WPF sous Linux / Android / iOS, etc.

Évidemment, je peux dire à mes aînés que 2 jours suffisent à peine pour lire toutes les options possibles, et que dire des essais, de la réalisation de prototypes, etc. Je peux le dire, ça ne m'aidera pas un peu, j'ai 2 jours, et après 2 jours la décision serait prise. Période.

D'un côté, je suis frustré, de l'autre côté, je pense qu'il y a une part de vérité dans cette approche, sinon je peux facilement me retrouver enseveli sous des dizaines de SDK, de frameworks, d'API, d'articles de blogues, etc. téléchargés et en oubliant dans le processus à quoi tout cela était destiné.

Je crains toujours qu'une mauvaise décision ne coûte cher à l'entreprise. Alors, quel est selon vous le processus "idéal" pour prendre de telles décisions?

Flot2011
la source
4
Ecrire quelque part que la décision est presque impossible à prendre en deux jours. Ensuite, essayez de prendre une décision pas trop mauvaise, et indiquez que votre décision n’est pas la meilleure. En d'autres termes, couvrez votre cul. Qt5 pourrait être considéré. Ou faites de votre produit une application Web HTML5 (en utilisant éventuellement une bibliothèque de serveur HTTP, par exemple libonion ou FastCGI)
Basile Starynkevitch le
2
@gnat Je ne suis pas d'accord, c'est une question subjective, même s'il y a plus d'une réponse possible, nous pouvons tous gagner à l'expérience des autres.
Flot2011
9
Il n'y a pas de "meilleure option" dans de nombreux cas, vous pourriez l'écrire comme une application Web PHP et cela fonctionnerait. Ou vous pourriez l'écrire en tant que programme Qt et cela fonctionnerait. Ce pourrait être une interface utilisateur de jeu openGL. Tous ces choix sont acceptables, l’astuce consiste à en choisir un, puis à le faire fonctionner. Ne vous paralysez pas avec des doutes une fois que vous avez choisi quelque chose.
gbjbaanb
5
Très mauvais exemple car dans le cas de cet exemple, il existe une technologie qui est un choix évident pour cela: Xamarin. Conservez le code backend .NET, remplacez simplement l'interface utilisateur par quelque chose. Gère tous les cas donnés. Il s’agit donc plutôt de "Je sais maintenant tout des systèmes multiplateformes pour .NET".
TomTom
7
Dire que 2 jours n'est pas suffisant n'est pas très constructif. Est-ce que 3 jours vont suffire? Ou voulez-vous réellement passer 2 mois dessus? Et à quel point votre décision est-elle susceptible d'être meilleure? ~~~~ Si vous dites qu'il vous faut une semaine et que vous pensez que cela va facilement faire gagner des centaines d'heures de développement, assurez-vous de le mentionner. Cela n’aidera peut-être pas, mais il est toujours possible que les parties prenantes apprécient votre analyse de rentabilisation.
Dennis Jaheruddin

Réponses:

48

Si tout ce que vous avez est de 2 jours et pas le temps de prototyper ou même de lire toutes les alternatives, alors il n'y a vraiment que 2 options:

  1. demandez à quelqu'un qui sait et suivez leurs conseils. Cela ne signifie peut-être pas nécessairement demander à une personne, mais passer 2 jours à chercher dans des blogs et des articles pour obtenir suffisamment d'informations pour prendre une décision légèrement meilleure que mal informée.

  2. Faites une petite recherche sur toutes les options classiques, puis choisissez-en une. Parfois, le leadership signifie ne pas avoir peur de prendre la mauvaise décision, il est souvent plus important de prendre une décision ferme que de vaciller.

Vous pouvez vous couvrir en proposant des architectures plus découplées et donc plus faciles à modifier - par exemple, un modèle client / serveur vous permettra de remplacer votre technologie d'interface utilisateur par une autre avec un minimum de perturbations.

gbjbaanb
la source
10
+1 pour "n'ayez pas peur de prendre la mauvaise décision" Parfois, se laisser prendre à une "paralysie de l'analyse" est pire que de ne prendre aucune décision. Nous sommes tous humains. Faites de votre mieux et passez à la vie.
semaj
1
hésiter: alterner ou osciller entre différentes opinions ou actions; être indécis.
TankorSmash
10
+1 pour "cachez-vous en proposant des architectures plus découplées et donc plus faciles à modifier"
Dark Egregious
2
@emodendroket Windows Workflow Foundation.
MetaFight
2
Si votre problème n’est pas courant, ne vous attendez pas à ce que les solutions classiques fonctionnent bien. C’est là que le découplage et la flexibilité sont essentiels . Recherchez des frameworks / bibliothèques qui facilitent la tâche de votre propre chef au lieu de vous donner quelque chose qui corresponde à leurs attentes quand ils ne semblaient pas prévoir ce que vous deviez faire.
jpmc26
19

Il peut sembler que je vais à contre-courant, mais j'ai récemment lu le livre Creativity, Inc. par Ed Catmull et il y avait un très bon paragraphe traitant de cette situation:

Andrew Stanton a ensuite parlé. Andrew aime dire que les gens doivent se tromper aussi vite que possible. Dans une bataille, si vous êtes confronté à deux collines et que vous ne savez pas laquelle attaquer, il convient de se dépêcher et de choisir. Si vous découvrez que c'est la mauvaise colline, retournez-vous et attaquez-vous. Dans ce scénario, le seul plan d'action inacceptable consiste à courir entre les collines.

Je suis sûr que cela peut également s'appliquer à votre situation. Vous pouvez peut-être prendre la décision aujourd'hui en en choisissant un et commencer à y travailler. Si cela fonctionne, alors vous aurez quelque chose de prêt dans ces deux jours et vous direz: "J'ai choisi ceci et je peux vous montrer ce que nous pouvons en faire parce que j'ai fait peu de tests ...". Si, au cours d'une journée, vous remarquez que la solution choisie ne vaut absolument pas la peine, vous pouvez en choisir une autre et l'utiliser avec celle du lendemain. Le pire des scénarios est que vous utilisiez les deux jours pour tester deux plates-formes, en découvrant que ni l'une ni l'autre ne fonctionnait, mais c'est finalement la bonne réponse, n'est-ce pas? Éliminez les mauvaises herbes, éliminez les mauvais choix possibles, de sorte que toute décision suivante sera bien meilleure que la précédente. Le meilleur scénario est que vous

Évidemment, vous ne maîtriserez aucune plate-forme en deux jours, mais en choisir un dès que possible vous donnera certainement une meilleure perspective sur la façon dont cela fonctionne (beaucoup plus que simplement lire à ce sujet) et vous mènera à une meilleure réponse.

Michal
la source
12
Bien que je sois d’accord avec vous au niveau mondial, il est assez suicidaire de se précipiter sur un terrain de guerre.
Flot2011
Personne n'a mentionné se précipiter cependant. Aujourd'hui, je n'ai jamais dit d'aller voir le patron et de lui dire: "Voici la solution. Ici et maintenant.". Au lieu de cela, je propose d'en choisir un dans la tête, d'essayer de le lancer et de le bricoler. Le simple fait de lire à ce sujet et d'en discuter avec quelqu'un d'autre ne fera pas l'affaire. Je pense que le fait d'essayer et d'essayer va conduire à un choix beaucoup plus qualitatif.
Michal
6
@ Flot2011 si vous avez un MBA, vous restez où vous êtes et envoyez toutes vos troupes combattre l'une ou l'autre colline. S'ils meurent tous, eh bien, vous obtenez plus de troupes et vous continuez, mais cette fois-ci, vous dites que votre expérience en tant que général vous en fait beaucoup plus… méritant un salaire monstrueusement plus élevé.
gbjbaanb
1
"Choisir un, puis un prototype" me semble être un très mauvais conseil dans cette situation. Oui, le prototypage est important, mais prend également beaucoup de temps. Les problèmes non triviaux ont souvent plus de 2 solutions possibles et 2 jours ne suffisent pas pour prototyper plusieurs technologies.
meriton - en grève le
@meriton Je comprends ce que vous voulez dire - Je suis d'accord, le prototypage prend du temps. Je n’ai pas explicitement déclaré «faire du prototypage» - c’est pourquoi j’ai soigneusement choisi le mot bricoler - explorer la plate-forme, écrire un peu de code, ouvrir des fichiers d’implémentation de base, voir comment cela fonctionne à l’intérieur. Il y a de fortes chances que le décideur ne dispose pas de tous les détails, mais il peut certainement améliorer la qualité de la décision par essais et erreurs.
Michal
10

gbjbaanb fait de très bons arguments. Je pensais juste ajouter un peu.

Il est évident que vous n’avez pas assez de temps pour prendre une décision parfaitement éclairée. Votre seule option est d'essayer de prendre une décision qui minimisera la douleur future. Je suggérerais:

  1. Documentez clairement la nature de la situation: envoyez un courrier électronique à votre (vos) responsable (s) et à CC, à leurs responsables et aux parties prenantes. Expliquez que le problème qui vous a été attribué est délicat, mais que vous êtes prêt à tout donner. Notez cependant que, compte tenu des contraintes de temps strictes, vous ne pouvez pas garantir que vos résultats sont optimaux.

  2. Trouvez un cadre / une plateforme avec une grande et active communauté en ligne. La dernière chose que vous voulez, c'est être bloqué pour déboguer un cadre obscur seul.

  3. Comme mentionné précédemment par gbjbaanb, atténuez les risques de port et de portage en utilisant une architecture à couplage lâche. Si tout est en forme de poire avec l'un de vos choix technologiques, cela facilitera son échange.

Je suis dans votre situation auparavant et cela a fini par devenir un cauchemar politique. Comme le système ne fonctionnait pas comme par magie, les gens ont commencé à pointer du doigt et les choses sont devenues laides. C'est pourquoi ma recommandation n ° 1 est de documenter clairement que vous avez fait de votre mieux contre des chances impossibles .

Bonne chance :)

MetaFight
la source
17
Re: # 1. Personne n'aime les perdants pleurnichards, alors soulignez simplement que vous avez fait de votre mieux contre des circonstances impossibles, alors vous ressemblez à un vainqueur pro-actif qui joue beaucoup! La direction aime ce genre de chose. Incidemment, il y a de nombreuses raisons pour lesquelles la réécriture volumineuse ne fonctionne pas. Le choix d'un technicien plutôt que d'un autre est généralement le moindre problème.
gbjbaanb
Oui, j'ai réalisé que c'était un peu gémissant alors je l'ai modifié.
MetaFight le
Personnellement, je serais plus spécifique que "pas optimal", car cela ne précise pas la gravité de l'incertitude. Un responsable avec une mentalité "il n'a pas besoin d'être parfait, juste assez bon" ignorera allègrement cet avertissement, ignorant que vous vouliez dire que la technologie pourrait ne pas être assez bonne.
Meriton - en grève le
3
Au lieu de cela, j'identifierais les risques concrets et les transmettrais à la direction. Par exemple: "Sur la base de nos connaissances actuelles, nous pensons que la technologie A est le meilleur choix. Cependant, en raison du délai très court, nous n’avons pas pu vérifier que cette approche pouvait gérer la charge de travail attendue de ce système.". La direction peut alors accepter le risque ou le réduire en ordonnant une analyse plus poussée.
Meriton - en grève le
+1 pour le point n ° 2. Choisissez une solution reposant sur une communauté mature et bien développée. Si vous préférez plusieurs solutions, vous pouvez toujours parcourir les forums en ligne, les blogs, poser des questions, etc. et trouver celle qui vous convient le mieux. meilleur
Arnab Bhagabati
5

Puisqu'ils vous ont effectivement donné peu de temps pour faire plus que choisir des candidats à partir d'un chapeau, je choisirais l'approche suivante.

Sélectionnez les technologies qui:

  • Avoir une large base d'utilisateurs
  • Avoir un soutien actif (quel que soit le canal)
  • Sont activement développés

Par définition, cela exclurait toute technologie de pointe, aussi bonne soit-elle.

En outre, résistez à la tentation d'utiliser la technologie X sans autre analyse, simplement parce que Fred, le développeur, l'a utilisée par le passé. Il est peu probable que cela convienne parfaitement, et si Fred passe à des pâturages plus verts, votre expert en la matière s'en va.

Robbie Dee
la source
Bien que si la technologie X convienne assez bien et que Fred soit disposé à éduquer les autres développeurs, cela peut être un bon moyen de lancer l'équipe.
un CVn
Bien sûr - si ça coche les autres cases ...
Robbie Dee
4

2 jours est une très courte période pour prendre ce genre de décision, mais comme vous devez le faire dans la liste de 2 jours suivante,

  1. Quelles sont les plateformes cibles
  2. Quels sont les composants personnalisés / tiers utilisés dans l'application actuelle pour lesquels un effort considérable de portage pourrait être nécessaire? par exemple: composants de graphique, composants de grille, composants de rapport, etc.
  3. Comment l'application actuelle se connecte-t-elle au monde et comment la sécurité est-elle gérée (connexions à la base de données / services Web / etc ...)
  4. Comment il est distribué et comment les mises à jour sont fournies

Maintenant, vous devez trouver des alternatives que vous pouvez utiliser pour tous les environnements cibles.

Pour chacune des alternatives, recherchez le support pour chacune d’elles pour utiliser la connectivité / sécurité utilisée par l’application actuelle.

puis, pour chaque composant personnalisé / tiers, déterminez s’il existe des alternatives faciles à utiliser pour chacun.

Et ensuite, réfléchissez à la manière dont la distribution peut être effectuée pour chaque alternative que vous avez trouvée.

Je pense que pendant 2 jours, cela devrait être la portée que vous devriez pouvoir couvrir et, en fonction des résultats, vous pouvez fournir une solution.

Pélican volant à basse altitude
la source
4

Bien que j'aime apprendre et expérimenter de nouvelles choses, sous la contrainte de temps, la meilleure option est toujours de choisir ce qui est le plus confortable ou le plus confortable. Tiens-toi à ce que tu sais.

Même si, à long terme, il est clair que vous n’avez pas choisi la meilleure option, tout ce que vous avez développé entre-temps continue d’avoir de la valeur et enveloppe une sorte de connaissance du terrain qui est toujours parfaitement utilisable et portable. Et c’est précisément parce que le contexte confortable, les outils et la plate-forme que vous avez choisis restent à l’écart et vous permettent de voir ce qui compte vraiment.

Ando
la source
2

Dressez une liste des facteurs à prendre en compte lors du choix, par exemple: performances, sécurité, coûts, facilité d'utilisation, capacité de X, familiarité avec les développeurs, mise à disposition sur le marché, etc.

Cela devrait prendre moins d'une heure (en fait, cela devrait prendre moins de 15 minutes), puis asseyez-vous avec la direction et demandez-leur de hiérarchiser ces facteurs. (Les chances que leurs priorités soient identiques et les vôtres identiques sont faibles, bien que vous puissiez orienter leur choix avec des suggestions quant aux priorités.) Vous savez maintenant quoi évaluer à propos de la technologie.

Choisissez trois ou quatre solutions communes à votre problème en vous basant sur une recherche sur Internet.

Ensuite, lisez suffisamment pour bien deviner à quel point chacun de ces choix correspond à leurs priorités 3-4. Attribuez une valeur numérique à chaque choix. Faites le calcul en multipliant la notation de chaque temps de priorité en tant que valeur définie pour cette priorité (10 pour le numéro 1, 8 pour le numéro 2, 6 pour le numéro 3 4 pour le numéro 4 ou le nombre que vous préférez, numérique). Maintenant, vous avez un score numérique pour chaque possibilité. En règle générale, on saura clairement lequel correspond le mieux aux priorités assignées. Encore mieux, vous avez maintenant quelque chose d’analytique à prendre pour prouver votre choix. Ils achèteront généralement votre choix car vous avez les chiffres pour le supporter. Si les chiffres ne le supportent pas, vous devez vous demander pourquoi vous préférez l’autre et choisir le meilleur numéro ou revoir les numéros attribués.

En vous concentrant sur les choix réels des candidats, vous pouvez réduire votre temps de recherche. Vous pouvez probablement deviner dans la journée, puis il vous reste une journée pour saisir les 2 meilleures possibilités et télécharger des versions d’essai si besoin est et jouer un peu avec elles.

HLGEM
la source
Ce que vous avez décrit s'appelle le "Processus de hiérarchie analytique". C'est la technique la plus courante que j'ai utilisée pour réaliser des études commerciales. Sa force est qu'il permet de choisir la meilleure option de manière assez objective et prend en compte les opinions de toutes les parties prenantes. J'ai été surpris de voir à quel point les sites Web compliquent cette technique. Ne laissez pas l’apparente complexité des sites Web vous influencer, c’est vraiment très facile à utiliser. Quoi qu'il en soit, comme je ne pouvais pas trouver un bon exemple, je suppose que Wikipedia est un aussi bon point de départ qu'un processus en.wikipedia.org/wiki/Analytic_hierarchy .
Dunk
1
Cela prend moins de dix minutes pour mettre en place la structure dans un tableur (la partie la plus compliquée consiste à décider des facteurs sur
lesquels
C'est aussi simple que ça. Nous réalisons également des enquêtes où chaque personne attribue une valeur à chaque catégorie afin de déterminer ce que tout le monde pense est le plus important pour pouvoir appliquer des pondérations à chaque catégorie. Après tout, l'équipe logicielle pense que la vitesse du processeur et la mémoire sont toujours la priorité absolue, mais les responsables du matériel semblent avoir des opinions opposées, car la vie de la batterie est importante pour eux. Bien entendu, le client compte généralement pour au moins la moitié des pondérations nominales et ne se soucie guère de tout problème lié aux logiciels ou au matériel. Les descriptions en ligne semblent vraiment compliquées quand ce n'est pas le cas.
Dunk