Pytanie, które powinieneś sobie zadać, to skąd sprzedawca wie, że ta funkcja będzie kosztować x dni pracy programisty. Biorąc pod uwagę, że nawet dobrzy kierownicy projektów z wieloletnim doświadczeniem zawodowym często nie mogą tego powiedzieć, takie dane pochodzące od sprzedawcy wydają się niezwykle ... spekulacyjne .
Zgodnie z moim doświadczeniem sprzedawcy zwykle nie dokonują szacunków, ale zgadują, ile to za dużo dla kierownictwa lub klienta: jeśli kierownictwo jest gotowe zapłacić 50 roboczotygodni, ale absolutnie odrzuci 75 osobodni, powiedzmy że ta funkcja zajmie 70 osobodni, podczas gdy będzie gotowa do renegocjacji (co jest niemożliwe do oszacowania), do 55 osobodni.
Z jednej strony masz szacunki wykonane przez ekspertów IT, którzy mówią coś takiego:
Zgodnie z tym konkretnym audytem marnujemy 8 000 USD dziennie przy użyciu przestarzałej technologii w porównaniu do podobnych projektów o podobnej wielkości, które wykorzystują nowsze technologie. Wydaje się również, że migracja całej bazy kodu zajmie od 50 do 80 osobodni. w tym czasie nie zostaną wydane żadne nowe funkcje. Istnieje również 10% ryzyko, że migracja określonego komponentu może spowodować 20-30 dodatkowych tygodni pracy.
Z drugiej strony masz domysły sprzedawców, oparte na ich dźwigni podczas negocjacji z osobą, którą muszą przekonać.
Wszystko zależy od tego, jak wpływowy jesteś w swojej firmie. Komunikacja jest tu kluczowa i tutaj sprzedawcy zwykle zdobywają specjalistów IT, jeśli chodzi o wyjaśnienie korzyści danej funkcji zarządowi (lub klientowi).
Pamiętaj, że jeśli w przeszłości twoje szacunki były dość dokładne, zyskasz reputację i wpływy. Jeśli twoje szacunki były zawsze błędne, kierownictwo prawdopodobnie zignoruje twoje propozycje.
Jeśli chodzi o szacunki, niezwykle trudno jest tutaj uzyskać wartościowy, ponieważ należy wziąć pod uwagę ogromną liczbę parametrów. Pośród innych:
Czy faktycznie wiesz, jak umiejętny jest Twój zespół w C # w porównaniu do VB6? Czy opiera się na rzeczywistych pomiarach, czy tylko zgaduje?
Czy ten zespół opracował duże projekty w języku C #? Czy znają narzędzia, których powinni używać (IDE, debuggery, profilery itp.)? Czy potrzebujesz dodatkowych licencji (które w świecie Microsoftu oznaczają tysiące dolarów na maszynę)?
Czy obecny projekt jest całkowicie jasny i czy możesz zagwarantować, że migracja nie przyniesie niespodzianek? Czy łatwo jest przepisać wszystko , każdą funkcję, czy też będą niespodzianki?
Czy masz infrastrukturę obsługującą język C #? Co z ciągłą integracją? Co z twoim serwerem kompilacji? Przewodniki po stylu? Statyczne warcaby?
Czy podczas produkcji serwery (jeśli jest to aplikacja internetowa) lub komputery klienckie (jeśli jest to aplikacja komputerowa) mogą obsługiwać wersję systemu .NET Framework, której oczekujesz?
Ale najważniejsze jest, aby wiedzieć, dlaczego chcesz przepisać wszystko. Jaki problem próbujesz rozwiązać poprzez przepisanie? Utrata wydajności? Jak to mierzysz? Jak pokazać zarządowi tę utratę produktywności?
Gdy już wykażesz, że marnujesz, powiedzmy, 8 000 USD dziennie z powodu VB6 (co oznacza, że zaoszczędzisz 8 000 USD dziennie po migracji do C #), jak wyjaśnisz korzyści wynikające z posiadania każdej nowej funkcji rozwoju i koncentrujesz się na całkowitym przepisaniu? Jaka jest korzyść w porównaniu z progresywnym przepisywaniem, w którym migrujesz komponenty w małych porcjach jeden po drugim, jednocześnie dostarczając nowe funkcje?