Récemment, j'ai été de plus en plus en proie à ce que je devrais décrire comme l'une de mes expériences les plus frustrantes et destructrices pour le moral dans cette profession: devoir m'asseoir sur une version qui a été testée, re-testée, mise en scène et à toutes fins utiles et les objectifs sont prêts à être expédiés / déployés .
En tant que spécialiste des solutions globales et pas seulement un codeur inconditionnel, je comprends et j'ai même préconisé la nécessité d'un contrôle des changements approprié. Mais dernièrement, l'équilibre ténu entre la couverture de nos bases et l'expédition dans les délais est devenu déséquilibré, et je n'ai eu que peu ou pas de succès pour le restaurer en quelque chose de sain.
Je suis à la recherche d' arguments convaincants pour aider à convaincre la direction opposée au risque que:
L'équipe de développement devrait (ou doit) être en mesure de définir son propre calendrier de sortie - dans des limites raisonnables (1 à 3 mois devraient être suffisamment conservateurs pour toutes, sauf les plus grandes sociétés du Fortune 500);
Les versions logicielles sont des jalons importants et ne doivent pas être traitées avec cavalerie; en d'autres termes, les retards / arrêts inutiles sont très perturbateurs et ne doivent être considérés qu'en dernier recours pour un problème commercial critique; et
Les entités externes (non-dev / non-IT) qui souhaitent (ou demandent) à être impliquées en tant que parties prenantes ont la responsabilité de coopérer avec l'équipe de développement afin de respecter le calendrier de publication, en particulier au cours de la dernière semaine environ avant le navire prévu. date (c.-à-d. test / mise en scène utilisateur).
Ce qui précède sont des affirmations qui sonnent vrai pour moi sur la base de l'expérience, mais il semble que je suis maintenant en mesure de le prouver - alors je demande quelque chose d'un peu plus charnu ici, si une telle chose existe.
Quelqu'un qui a dû "vendre" l'idée d'un cycle de publication fixe (ou peut-être semi-flexible) à la direction peut-il donner des indications sur les arguments / stratégies efficaces ou persuasifs et sur ce qui ne l'est pas? Mis à part la contention évidente du calendrier et les coûts irrécupérables, existe-t-il des données / preuves tangibles qui seraient utiles pour démontrer que l'expédition est réellement importante, même dans un cadre "d'entreprise"?
Alternativement, je suis ouvert à entendre des arguments constructifs sur la raison pour laquelle la flexibilité du calendrier (même sur une période de semaines / mois) est plus importante que l'expédition dans les délais; c'est difficile pour moi de croire en ce moment mais peut-être qu'ils savent quelque chose que je ne sais pas.
Notez que nous avons mis en scène des versions, et cela a traversé toutes les étapes sauf la production. Les problèmes sont suivis à l'aide d'un outil de suivi des bogues commerciaux et tous les problèmes - 100% d'entre eux - attribués à cette version ont été fermés. Je me rends compte que c'est difficile à croire et c'est vraiment précisément le point - cela n'a aucun sens qu'une version à 100%, complète, entièrement testée et approuvée par les parties prenantes soit retardée par la direction pour des raisons inexpliquées, mais c'est ce qui s'est passé, c'est ce qui se passe, c'est le problème à résoudre.
la source
Réponses:
Joel Spolsky dit qu'une équipe de développement de logiciels est un plan pour convertir le capital (argent) en logiciel fonctionnel. Honnêtement, d'après votre question, il semble que votre équipe soit bonne dans ce domaine: vous obtenez des logiciels décents pour des sommes d'argent raisonnables investies.
Maintenant, bien sûr, la prochaine étape consiste à mettre le logiciel en service. Jusqu'à ce que votre entreprise choisisse de le faire, il n'y a aucun moyen pour eux de récolter un retour sur leur investissement en capital. Un logiciel posé sur une étagère prêt à être déployé est un peu comme un inventaire en stock: les coûts sont irrécupérables, le capital de l'entreprise est déjà dépensé. Il y a aussi un coût d'opportunité: votre groupe a choisi de faire ce projet plutôt que quelque chose d'autre.
De plus, la valeur d'un logiciel nouvellement développé assis sur l'étagère est un peu comme la valeur d'une caisse de fromage dans le réfrigérateur d'un restaurant: il pourrit lentement. Sa valeur diminue car vos concurrents rattrapent leur retard. Il décline également car il devient plus difficile et plus risqué de mettre en service de nouveaux logiciels à mesure que ses développeurs passent à autre chose. Après quelques années sur l'étagère, cela peut en fait être sans valeur. Dans ce cas, votre entreprise a choisi de jeter le capital qu'elle a investi dans son développement. Il est possible que les propriétaires de l'entreprise - les actionnaires - en soient mécontents.
Il y a une chose que vous, en tant que développeur, devez comprendre. Votre logiciel est-il vraiment, vraiment, prêt à être déployé à la fin du cycle de publication que vous proposez? Est-il prêt à démarrer ou y a-t-il beaucoup plus de travail à faire et d'argent à dépenser pendant que votre entreprise le met en production? Votre entreprise possède-t-elle les serveurs et les licences logicielles dont vous avez besoin pour déployer votre logiciel? Votre produit de travail comprend-il un plan de déploiement? Les utilisateurs finaux ont-ils été formés? Les données de production ont-elles été converties? Si votre nouveau logiciel implique un changement dans la façon dont votre entreprise fonctionne, l'entreprise est-elle prête à apporter ce changement? Avez-vous élaboré un schéma pour faire fonctionner les choses en parallèle, pour vous assurer que les nouveaux trucs fonctionnent aussi bien que les anciens?
Tous ces coûts de déploiement peuvent facilement éclipser le coût du simple développement du logiciel. Une équipe de gestion de projet avisée fait de son mieux pour planifier, budgéter et planifier tout cela. Avez-vous fait ce travail? L'avez-vous expliqué clairement à la direction? Sinon, il est possible qu'ils soient sages pour ralentir vos déploiements.
Il est possible qu'un calendrier de déploiement de logiciel agile moderne ne soit pas synchronisé avec le rythme de changement attendu par le reste de votre entreprise. Vos utilisateurs finaux - vos parties prenantes - peuvent tout simplement ne pas être en mesure d'absorber le changement au rythme auquel votre équipe peut le produire.
Il est également possible que votre équipe de direction soit dysfonctionnelle. Votre équipe a-t-elle développé quelque chose que le reste de l'entreprise ne veut pas? Est-ce que vos nouveaux trucs menacent complètement votre équipe de vente ou de production? Si c'est le cas, certains dirigeants pourraient la torpiller en disant qu'elle est trop risquée pour être déployée. Vous ne pouvez rien y faire à moins d'être le PDG.
Vous avez demandé des arguments convaincants pour des déploiements de logiciels en temps opportun. Il y a un argument vraiment convaincant: le retour sur investissement. L'entreprise a choisi d'investir dans ce logiciel, et maintenant elle choisit de gaspiller l'investissement alors que votre logiciel pourrit lentement sur le plateau.
Un argument secondaire pour des déploiements rapides est le moral de votre équipe. Dépêchez-vous d'attendre n'est pas un bon moyen de motiver les développeurs créatifs à faire du bon travail. Vous risquez de perdre votre équipe s'ils n'obtiennent pas la satisfaction de voir leur travail entrer en service.
la source
Tout d'abord, regardez cette vidéo:
http://the99percent.com/videos/5822/Seth-Godin-Quieting-the-Lizard-Brain
Résumé:
Faire des changements de produit dans les semaines précédant la date de sortie est très perturbateur, pour des raisons évidentes. Cela est vrai que la modification soit une nouvelle fonctionnalité, une modification du processus de développement logiciel ou une tentative de correction d'un bogue de longue date qui n'est pas dans le calendrier de développement.
Quand quelqu'un vient à moi pour un correctif ou un changement tard dans le cycle de développement, je leur demande toujours ceci: "Que voulez-vous que je ne fasse pas pour que je puisse faire votre travail?"
Si vous avez besoin d'un motivateur financier, c'est celui-ci: des études prouvent que plus vous attendez dans le cycle de vie du logiciel pour implémenter une fonctionnalité ou un correctif, plus c'est cher. De façon exponentielle. Ce n'est pas difficile à prouver.
la source
Vous avez clairement décrit les problèmes que vous rencontrez, mais je ne sais pas pourquoi les gestionnaires se comportent de cette façon. Pouvez-vous clarifier? Par exemple, vous pensez qu'il est prêt à être déployé, est-ce que quelqu'un n'est pas d'accord, si oui, qui et pourquoi? Sont-ils d'anciens beaurocrates du gouvernement
Cela ressemble beaucoup à un problème d'alignement capacité vs désir, vous avez le désir de libérer, mais pas la capacité (autorité), ceux qui ont l'autorité n'ont pas le désir.
Vous devez savoir pourquoi ils manquent de désir - c'est une raison marketing (gardez-la pendant un an pendant que nous traites l'ancienne version un peu plus), est-ce la peur / la confiance (si elle a des bugs, cela nous fera mal paraître , nous coûte de l'argent ..., manque de ressources (ne peut pas se permettre les frais d'expédition / d'emballage / de relations publiques), est-ce commercial où vos obscurs sombrent dans de faibles profits excessifs et ils ne veulent pas que vous gagniez de l'argent ( Pas aussi idiot que cela puisse paraître).
Je soupçonne également qu'il y a peu de respect entre les parties impliquées, par conséquent, les discussions raisonnables avec les adultes n'ont pas lieu.
Désolé - pas la réponse spécifique que vous avez demandée, espérons-le, cependant, deux ou trois choses à penser.
la source
La première chose à considérer est de vous assurer que vos versions ne sont pas à haut risque .
Idéalement, vos demandes de modification devraient avoir une section intitulée Atténuation des risques , contenant des instructions sur la façon de revenir à la version précédente en cas de problème. En termes de risques, aucun test préalable ne peut remplacer une simple option pour annuler la modification.
Si plusieurs / la plupart de vos versions entrent dans cette catégorie, vous voudrez peut-être reconsidérer votre architecture.
Le risque de ne PAS libérer doit être exposé, si vous voulez que le calendrier de l'équipe de développement soit traité sérieusement.
Si vos versions fournissent des correctifs pour les problèmes de production / support et les pannes, cela est assez facile à faire en les répertoriant simplement et en soulignant que la production risque de les répéter à moins qu'elle ne soit mise à niveau.
Une mesure vraiment efficace à la disposition de l'équipe de développement pour lutter contre les dérapages des versions afin de s'assurer que le risque de ne pas publier augmente avec le temps . Cela peut être réalisé avec des versions internes fonctionnant selon un calendrier fixe, fournissant une liste "cumulative" de solutions aux problèmes de production.
XX
doivent être conscients non seulement qu'ils courent le risque de voir desN
types de problèmes de production non résolus, mais aussi cette semaine (ou ce mois) plus tard, ils auront la versionXX+1
dans leur file d'attente d'approbation, le blocage qui encourir le risque deN+M
types de problèmes de production restent non résolus - et que ce sera également le cas avecXX+2
et d'autres versions "internes" fournies par l'équipe de développement.La manière décrite ci-dessus rend essentiellement la connexion plus étroite et plus explicite entre les mises à jour de votre application et les problèmes de production.
De ce fait, vous pouvez vous attendre à une plus grande implication dans l' escalade des problèmes de production . Vous pouvez les utiliser comme une opportunité pour promouvoir votre vision de mises à jour planifiées plus strictes. Vous pouvez même déclencher vous-même des escalades pour accélérer le processus d'adoption de l'approche souhaitée.
XX
ou ultérieure). Celle qui est actuellement déployée dans votre environnement (XX-2
) est très obsolète - deux versions majeures derrière la base de code actuelle. Par conséquent, les détails de ces échecs simples sont profondément caché dans les journaux et les ordures indéchiffrables est signalé par l'application aux clients au lieu de descriptions claires des échecs - ce qui fait perdre du temps aux utilisateurs et au support pour enquêter sur les problèmes qui sont vraiment assez simples "Ci-dessus est un commentaire que j'ai ajouté il y a quelque temps dans le suivi des problèmes de support pour le ticket liés à un incident de production particulier. Peu de temps après, les «parties prenantes» ont contacté l'équipe de développement pour savoir comment suivre nos versions et comment elles peuvent aider au déploiement dans leur environnement. Oh, et ils ont également rapidement mis à niveau
XX-2
version aussi. :)Lorsque l'escalade de la production se produit, il vaut mieux être prêt à présenter votre vision rapidement et clairement.
Une chose que vous trouverez utile est de choisir et de suivre qui est responsable du glissement d'une version particulière. Fondamentalement, vous devez être en mesure de répondre rapidement et clairement à une question telle que "qui détient la responsabilité du fait que la libération prévue n'a pas eu lieu?" Si vous n'êtes pas prêt, ils peuvent choisir le chemin de moindre résistance et vous blâmer. Comme indiqué dans les commentaires d'une autre réponse , "vous pourriez vous retrouver dans l'eau chaude dont votre direction essaie de vous protéger."
Le dernier mais pas des moindres,
ça va prendre du temps
(vous le savez probablement déjà, mais cela mérite d'être précisé explicitement)
Ce que vous recherchez peut être décrit comme un changement d'attitude, de "il est risqué de libérer " à "il est risqué de NE PAS libérer ". Les changements d'attitude se produisent rarement du jour au lendemain, la patience peut être nécessaire pour terminer le quart de travail.
la source
Un gros point d'interrogation plane sur votre question, et c'est pourquoi votre entreprise ne souhaite pas publier le logiciel. Ce n'est pas toujours un simple cas d'aversion au risque. Il y a souvent d'autres causes sous-jacentes qui ne se transmettent pas souvent des hauteurs managériales élevées. Donc, ma question est la suivante: "Avez-vous rencontré votre patron et lui avez-vous demandé pourquoi la sortie du produit est retardée?".
Il y a une grande différence entre gérer le risque et l'éviter. Il peut y avoir des raisons légales ou marketing pour retarder la sortie d'un produit. Il peut s'agir de problèmes de confiance entre la direction et l'équipe de développement. Le produit peut ne pas répondre aux besoins du client, même si c'est exactement ce que le client a demandé il y a des mois. Cela pourrait même être le cas d'un membre de la direction qui couvre sérieusement le cul tout en essayant de rejeter la faute sur le retard ailleurs, ou même un retard par un tiers qui est nécessaire pour terminer quelque chose avant que votre produit ne soit expédié. Je pourrais proposer des dizaines de scénarios. Très souvent, le développeur suppose l'aversion au risque sans comprendre l'autre côté de l'équation qui n'a pas été rendu apparent. D'un autre côté, il peut s'agir simplement de complaisance, de conflit entre des individus au sein d'une entreprise,
Dans tous les cas, il est important d'avoir plus d'informations sur les raisons des retards dans la sortie du produit et d'utiliser ces informations pour créer un dossier de sortie de votre produit dès que possible. Oui, cela peut être très frustrant, mais il existe d'autres façons de faire face à ces situations sans risquer une confrontation avec vos patrons ou un épuisement professionnel. Dans des situations similaires, j'ai moi-même recueilli des informations, documenté tous les progrès que j'ai réalisés, puis si le pire venait à empirer, je mettais simplement le projet de côté et je passais à autre chose. L'endroit où j'ai pu remettre un projet sur la bonne voie pour sa sortie est généralement le résultat d'une analyse de rentabilisation solide basée sur les informations que j'ai reçues en tant que retour aux questions que j'ai posées. Lorsque je n'ai pas réussi à convaincre la direction que le produit doit être expédié, J'ai documenté la réticence à expédier comme étant simplement un cas de projet terminé et en attente de l'approbation de la version par la direction. Je m'assure ensuite que mon manager signe mon document comme accepté et compris par la direction afin que mes propres fesses soient couvertes si elles essayaient de me blâmer plus tard pour une non-libération.
Vous devez toujours pointer vos I et traverser vos T pour éviter que les retards de livraison ne vous soient imputés par la suite (aussi injuste soit-il), et il est également important d'éviter de devenir trop lié émotionnellement à de tels problèmes, sauf si vous aimez l'idée d'un ulcère bien mérité. En regardant votre propre situation avec un certain détachement professionnel, vous trouverez peut-être qu'une solution se présente parce que vous vous êtes effectivement placé à une plus grande "distance" pour ainsi dire du problème. Si vous ne pouvez pas faire valoir votre argument, vous devrez peut-être le laisser glisser pendant un certain temps, mais pour présenter votre argumentation en premier lieu, vous devez avoir l'air professionnellement détaché et avoir des arguments basés sur des informations intimement liées à votre entreprise et son fonctionnement interne.
Une autre chose à laquelle je viens de penser, qui pourrait vous être utile, est peut-être de lire le développement logiciel Lean et de voir s'il y a quelque chose de valable qui pourrait se rapporter à la situation de votre entreprise, en particulier dans les premiers chapitres. Je pense que c'est le chapitre 4 qui traite de la question de la livraison le plus rapidement possible et qui a quelque chose concernant les coûts de retard.
la source
Je dirais que le moyen le plus simple / le plus efficace de vendre une version consiste à arrêter les outils pendant un certain temps quand il est prêt à fonctionner. Faites autre chose, démarrez un nouveau projet, travaillez sur les bogues du projet existant. Ne faites plus rien à celui-ci jusqu'à ce qu'il soit envoyé par la porte - après tout, pourquoi vous embêter à le faire s'il ne marche pas quand il est prêt.
mais dans le monde réel, la version réelle est le problème de quelqu'un d'autre, vous devriez la lui envoyer et la traiter comme une version. Une fois sorti de votre porte, il est expédié. S'ils sont juste assis dessus, ce n'est pas votre problème (en fait, c'est génial, aucun bug n'est signalé dessus! W00t! Bonus pour une version sans bug tout autour;))
Vous avez donc de toute façon besoin d'un système de contrôle des modifications et d'un gestionnaire de versions. Ensuite, tout est facile (sauf que vous devez gérer le contrôle des modifications, donc le contrôle des sources et les builds de déploiement sont très nécessaires. Cela nécessite une organisation, mais si vous êtes organisé, c'est facile).
la source
Je ne peux pas imaginer que confier à l'équipe de développement la responsabilité de l'entreprise comme vous le décrivez est une "bonne chose" Cela pourrait masquer le vrai problème, mais à moins que l'équipe de développement ne soit en bonne position pour peser les intrants des ventes, du marketing , etc., etc., vous risquez de libérer pour de mauvaises (et potentiellement mauvaises) raisons.
Si je comprends votre problème, vous avez terminé le projet et vous avez un livrable que vous ne pouvez montrer à personne en dehors de votre entreprise. (J'espère que cela le résume, j'ai lu tout le fil et j'ai du mal à mettre le doigt dessus)
As-tu essayé:
Pour répondre à votre autre question sur «pourquoi la direction serait-elle assise sur une version? Les entreprises le font tout le temps dans des domaines non SW et je ne pense pas que ce soit sans précédent. Par exemple, vous avez une nouvelle version prête à l'emploi, toutes testées et terminées. Mais l'ancienne version n'a pas encore été déplacée par la concurrence. Une fois que la concurrence a publié un produit concurrent vous l'ancienne version, la direction libère la version en attente et perturbe le marché, fait reculer la concurrence et maintient les ventes et la réputation de leader du marché. Le fait de sortir trop tôt donne un coup de pouce aux concurrents qui pourraient avoir une meilleure idée de votre feuille de route et essayer de vous battre jusqu'au bout.
Avec tout cela dit ... Le rasoir de Hanlon est probablement la bonne réponse :-)
la source
Éloignez-vous de cette entreprise, ils ne comprennent pas les logiciels. Mais sérieusement, c'est le logiciel qui fait fonctionner le système, imaginez que si vous fabriquiez des voitures, les usines automobiles sont-elles lentes? attendent-ils les sorties de voiture? Sont-ils progressifs et bureaucratiques? Non, ils essaient de faire les choses de la manière la plus rapide et la plus propre possible. Vous avez un problème de gestion et vous devriez y travailler comme un conflit de gestion, essayez de les exprimer dans leurs termes. Demandez-leur ce que signifie le risque pour eux, puis essayez de le minimiser. Les sentiments de vos développeurs sont également importants, car ils doivent faire face aux décisions qui seront prises par votre intervention. Seront-ils heureux de faire tous les soirs pour expédier à temps? Quels seraient les prix / pénalisations? Etc. Maintenant, je vais vous donner une approche pratique de ce problème, un peu extrême, mais demandez un audit.
la source