La domanda che dovresti porci è come fa il venditore sapere che la funzione costerà x giorni di sviluppo del lavoro. Dato che persino i bravi project manager con anni di esperienza professionale non possono spesso dirlo, tali dati provenienti da un venditore sembrano estremamente ... speculativi .
Secondo la mia esperienza, i venditori di solito non fanno stime, ma indovina quanto è troppo per la gestione o il cliente: se la direzione è pronta a pagare 50 settimane uomo di lavoro, ma Rifiuteremo assolutamente 75 settimane uomo, diciamo che la funzione impiegherà 70 settimane uomo per essere pronta a rinegoziare (qualcosa che è fuori discussione per una stima reale) fino a 55 settimane uomo.
-
Da un lato, ci sono stime fatte da esperti IT che dicono qualcosa del tipo:
According to this specific audit, we are wasting $8 000 per day using an outdated technology compared to similar projects of similar size which use newer technologies. It also appears that it will take from 50 to 80 man-weeks to migrate the whole code base; during this time, there would be no new features released. There is also a 10% risk that migrating a specific component may result in 20-30 additional man-weeks of work.
-
D'altra parte, hai indovina fatto dai venditori, in base alla loro influenza quando negoziano con la persona di cui hanno bisogno per convincere.
Tutto 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 gestione (o al cliente).
Nota che se in passato le tue stime erano abbastanza precise, guadagnavi reputazione e influenza. Se le tue stime fossero sempre sbagliate, la direzione probabilmente ignorerebbe le tue proposte.
Per quanto riguarda le stime, è estremamente difficile fare un valore qui, dato che c'è 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 reali o solo su 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 è completamente chiaro e puoi garantire che non ci saranno sorprese durante la migrazione? È semplice riscrivere tutto , ogni funzione o ci sarebbero sorprese?
-
Hai l'infrastruttura che supporta C #? Che dire dell'integrazione continua? E il tuo server di build? Guide di stile? Controllori statici?
-
Nella produzione, i server (se questa è un'app Web) oi PC cliente (se si tratta di un'applicazione 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. Quale è il problema che stai cercando di risolvere tramite una riscrittura? Una perdita di produttività? Come lo misurate? Come fai a mostrare questa perdita di produttività alla gestione?
Una volta che hai dimostrato che stai sprecando, diciamo, $ 8.000 al giorno a causa di VB6 (il che significa che risparmierai $ 8.000 al giorno una volta migrato a C #), come spieghi il vantaggio di tenere ogni nuovo caratteristiche di sviluppo e concentrandosi su una riscrittura completa? Qual è il vantaggio rispetto a riscrittura progressiva in cui migra i componenti in piccoli blocchi uno per uno, mentre vengono spedite nuove funzionalità?