La domanda che dovresti porti è come fa il venditore a sapere che la funzione costerà x giorni di lavoro per gli sviluppatori. Dato che anche buoni project manager con anni di esperienza professionale spesso non possono dirlo, tali dati provenienti da un venditore sembrano estremamente ... speculativi .
Secondo la mia esperienza, i venditori di solito non fanno stime, ma indovinano quanto sia troppo per la gestione o il cliente: se la gestione è pronta a pagare 50 settimane uomo di lavoro, ma rifiuterà assolutamente 75 settimane uomo, diciamo che la funzione richiederà 70 settimane-uomo mentre si è pronti a rinegoziare (qualcosa che è fuori discussione per una stima reale) fino a 55 settimane-uomo.
Da un lato, hai stime fatte da esperti IT che dicono qualcosa come:
Secondo questo specifico audit, stiamo sprecando $ 8 000 al giorno utilizzando una tecnologia obsoleta rispetto a progetti simili di dimensioni simili che utilizzano tecnologie più recenti. Sembra anche che ci vorranno dalle 50 alle 80 settimane-uomo per migrare l'intera base di codice; durante questo periodo, non ci sarebbero nuove funzionalità rilasciate. Esiste anche un rischio del 10% che la migrazione di un componente specifico possa comportare 20-30 settimane lavorative aggiuntive.
D'altra parte, hai ipotesi fatte dai venditori, in base alla loro influenza quando negozia con la persona di cui hanno bisogno per convincere.
Dipende da quanto sei influente nella tua azienda. La comunicazione è la chiave qui, ed è qui che i venditori di solito conquistano i professionisti IT quando si tratta di spiegare i vantaggi di una funzionalità alla direzione (o a un cliente).
Nota che se in passato le tue stime erano abbastanza precise, guadagni reputazione e influenza. Se le tue stime fossero sempre sbagliate, la direzione probabilmente ignorerebbe le tue proposte.
Per quanto riguarda le stime, è estremamente difficile realizzarne uno prezioso qui, poiché ci sono un numero enorme di parametri da tenere in considerazione. Tra gli altri:
Sai davvero quanto è abile il tuo team in C # rispetto a VB6? Si basa su misurazioni effettive o solo ipotesi?
Questo team ha sviluppato grandi progetti in C #? Conoscono gli strumenti che dovrebbero usare (IDE, debugger, profiler, ecc.)? Hai bisogno di licenze aggiuntive (che, nel mondo di Microsoft, significano migliaia di dollari per macchina)?
Il progetto attuale è totalmente chiaro e puoi garantire che non ci saranno sorprese durante la migrazione? È semplice riscrivere tutto , ogni caratteristica o ci sarebbero sorprese?
Hai l'infrastruttura che supporta C #? Che dire dell'integrazione continua? E il tuo server di build? Guide di stile? Pedine statiche?
In produzione, i server (se si tratta di un'app Web) o i PC dei clienti (se si tratta di un'app desktop) sono in grado di eseguire la versione di .NET Framework che si prevede di utilizzare?
Ma la cosa più importante è sapere perché vuoi riscrivere tutto. Qual è il problema che stai cercando di risolvere attraverso una riscrittura? Una perdita di produttività? Come lo misurate? Come mostri questa perdita di produttività al management?
Una volta che hai dimostrato che stai sprecando, diciamo, $ 8 000 al giorno a causa del VB6 (il che significa che risparmierai $ 8 000 al giorno dopo la migrazione a C #), come spieghi il vantaggio di mantenere ogni sviluppo di nuove funzionalità e concentrarsi su una riscrittura completa? Qual è il vantaggio rispetto alla riscrittura progressiva in cui si esegue la migrazione dei componenti in piccoli blocchi uno per uno, offrendo al contempo nuove funzionalità?