La question que vous devriez vous poser est la suivante: comment le vendeur sait-il que la fonctionnalité coûtera x jours-développeur de travail? Etant donné que même les bons chefs de projet avec des années d'expérience professionnelle ne peuvent pas souvent le dire, de telles données provenant d'un vendeur semblent extrêmement ... spéculatives .
Selon mon expérience, les vendeurs ne font généralement pas d’estimations, mais se demandent si c’est trop, tant pour la direction que pour le client: si la direction est prête à payer 50 hommes-semaines de travail, mais qu’elle rejettera absolument 75 hommes-semaines, disons que la fonctionnalité prenne 70 jours-homme tout en étant prête à renégocier (chose qui est hors de question pour une estimation réelle) jusqu'à 55 jours-homme.
D'une part, vous avez des estimations faites par des experts en informatique qui disent quelque chose comme:
Selon cet audit spécifique, nous gaspillons 8 000 dollars par jour en utilisant une technologie obsolète par rapport à des projets similaires de taille similaire qui utilisent des technologies plus récentes. Il semble également qu'il faudra entre 50 et 80 semaines-homme pour migrer l'ensemble de la base de code; pendant ce temps, il n'y aurait pas de nouvelles fonctionnalités publiées. Il existe également un risque de 10% que la migration d'un composant spécifique entraîne 20 à 30 semaines de travail supplémentaires.
D'autre part, vous avez des suppositions faites par des vendeurs, en fonction de leur influence lors de la négociation avec la personne dont ils ont besoin pour convaincre.
Tout dépend de votre influence sur votre entreprise. La communication est essentielle, et c’est là que les vendeurs séduisent généralement les professionnels de l’informatique quand il s’agit d’expliquer les avantages d’une fonctionnalité à la direction (ou à un client).
Notez que si par le passé, vos estimations étaient assez précises, vous gagnez en réputation et en influence. Si vos estimations étaient toujours fausses, la direction ignorerait probablement vos propositions.
En ce qui concerne les estimations, il est extrêmement difficile d’en faire une analyse utile car il existe un grand nombre de paramètres à prendre en compte. Entre autres:
Savez-vous réellement à quel point votre équipe en C # est compétente par rapport à VB6? Est-ce basé sur des mesures réelles ou juste des suppositions?
Cette équipe a-t-elle développé de grands projets en C #? Connaissent-ils les outils à utiliser (IDE, débogueurs, profileurs, etc.)? Avez-vous besoin de licences supplémentaires (ce qui, dans le monde de Microsoft, représente des milliers de dollars par ordinateur)?
Le projet actuel est-il totalement clair et vous pouvez garantir qu'il n'y aura pas de surprises lors de la migration? Est-il simple de réécrire tout , chaque fonctionnalité, ou y aurait-il des surprises?
Avez-vous l'infrastructure qui prend en charge C #? Qu'en est-il de l'intégration continue? Qu'en est-il de votre serveur de construction? Guides de style? Dames statiques?
En production, les serveurs (s’il s’agit d’une application Web) ou les ordinateurs clients (s’il s’agit d’une application de bureau) peuvent-ils exécuter la version du .NET Framework que vous prévoyez d’utiliser?
Mais le plus important est de savoir pourquoi vous voulez tout réécrire. Quel est le problème que vous essayez de résoudre par une réécriture? Une perte de productivité? Comment le mesurez-vous? Comment montrez-vous cette perte de productivité à la direction?
Une fois que vous avez montré que vous perdiez, disons, 8 000 USD par jour à cause de VB6 (ce qui signifie que vous économiserez 8 000 USD par jour une fois que vous aurez migré vers C #), comment expliquez-vous les avantages de la détention de chaque développement de nouvelles fonctionnalités et en se concentrant sur une réécriture complète? Quel est l'avantage par rapport à la réécriture progressive dans laquelle vous migrez vos composants par petits morceaux, un par un, tout en proposant de nouvelles fonctionnalités?