tło
W zeszłym roku poproszono mnie o stworzenie narzędzia, które będzie wykorzystywane do planowania biznesowego dla około 10 użytkowników. Odbyło się to w imieniu innego zespołu IT, który „zlecił mi” podwykonawstwo pracy, a ponieważ terminy projektu były trochę nieplanowane po ich stronie, musiałem wdrożyć je w pośpiechu.
W tym czasie zdecydowaliśmy, że najszybszym sposobem będzie utworzenie skoroszytu programu Excel za pomocą VBA, a następnie zachęcenie użytkowników do pobrania skoroszytu z rozszerzeniem VBA z intranetu do użycia na swoich komputerach. Excel był w tym przypadku ograniczeniem, ponieważ używany przez nas system planowania (tj. Baza danych) może wchodzić w interakcje tylko za pomocą dodatku Excel, który musi zostać załadowany w tym samym czasie, gdy skoroszyt planowania jest otwarty. Jednak VBA nie był wówczas ograniczeniem.
Skoroszyt utworzyłem około 4000 wierszy kodu VBA i chociaż próbowałem oddzielić warstwy danych i warstw prezentacji, nie mogłem we wszystkich przypadkach z powodu terminów projektu. Szczerze mówiąc, chociaż jestem dumny z tworzenia tego skoroszytu, jestem jednocześnie trochę rozczarowany, że można było to zrobić lepiej, zarówno pod względem kodowania, jak i wdrażania dla użytkowników.
Dzisiaj
Wracając do dzisiejszego dnia, zespół IT ponownie przyszedł do mnie z prośbą o podobny skoroszyt (abym mógł ponownie użyć części innego skoroszytu powyżej), ale tym razem jest on o wiele bardziej skomplikowany i będzie używany przez większą liczbę użytkowników ( około 200).
Jednak tym razem jest to trochę lepiej zaplanowane i widzę, że mamy trochę więcej czasu na planowanie. Na tej podstawie pomyślałem o rozwiązaniu i infrastrukturze, ponieważ programowanie dla 100 użytkowników ma większy wpływ niż dla 10 użytkowników. Dlatego zasugerowałem zespołowi, że być może powinniśmy rozważyć migrację istniejącego kodu do rozwiązania C #, abyśmy mogli zarządzać kodem w bardziej wyrafinowany sposób. Nadal rozważam to jako dodatek napisany przy użyciu VSTO / Excel-DNA, który można następnie wdrożyć dla użytkowników.
Rozmawiałem o tym z zespołem IT dwa tygodnie temu i wszystko wydawało się w porządku, aż do wczoraj otrzymałem wiadomość od jednego z zespołów (który nie zna VBA ani C #) z pytaniem, dlaczego powinniśmy rozpocząć ten nowy projekt w C # w porównaniu z użyciem takie samo podejście jak poprzednio. Niektóre z nich dotyczyły:
- Jest to dość ważny projekt, więc musi działać - rozwiązanie C # nie byłoby tak stabilne ani działało tak dobrze, jak istniejące rozwiązanie oparte na VBA.
- Musielibyśmy wyrzucić to, co [ja] zrobiliśmy w rozwiązaniu VBA i odtworzyć to od zera w języku C #.
- Ktoś będzie musiał obsługiwać dwa oddzielne rozwiązania, jedno w VBA i jedno w C #. [w rzeczywistości obecnie nie mają nikogo do pomocy, zwykle wkraczam].
Teraz do pewnego stopnia rozumiem niektóre z ich obaw, ale muszę podjąć decyzję dotyczącą kolejnych kroków i tego, do czego należy się zwrócić. Osobiście chciałbym wdrożyć w języku C #, ponieważ uważam, że lepiej byłoby zbudować takie rozwiązanie „Enterprise”. Co więcej, chciałbym skorzystać z okazji, aby poprawić moje umiejętności w C #, ponieważ obecnie nie jestem tak kompetentny w C # jak jestem VBA i chciałbym, aby taki projekt zabrał mnie na „następny poziom”.
Przygotowałem listę punktów, których mogę użyć, aby przekonać ich, że rozwiązanie C # byłoby lepsze dla tego projektu, oto co mam do tej pory:
- Testów jednostkowych.
- Kontrola źródła.
- Dokumentacja kodu - w celu przekazania wiedzy innym osobom wspierającym.
- Lepsze konwencje kodowania - można użyć rzeczy takich jak ReSharper, aby wymusić lepszą nazewnictwo i strukturę.
- Lepsze IDE - mniej błędów z powodu podświetlania błędów.
- Większa modułowość dzięki zestawom - może promować ponowne użycie w przyszłych narzędziach.
- Zarządzane wdrożenie - może kontrolować, kto korzysta z tego narzędzia.
Pytanie: Jakie jeszcze kwestie mogę dodać, aby je przekonać? A może próbuję odgryźć więcej, niż mogę żuć w tym projekcie? Czy powinienem po prostu milczeć i zrobić to w VBA?
Wiem, że przejście do nowego języka, ponieważ jego „nowszy” lub postrzegany jako „chłodniejszy” nie powinien stanowić podstawy do podjęcia decyzji i dlatego postanowiłem uwzględnić go jako punkt decyzyjny - chodzi o fakty.
Ponadto nie proszę o dosłowne porównanie C # i VBA jako języków, ponieważ istnieje wiele porównań na temat SO.