Фон
Минулого року мене попросили створити інструмент, який використовуватиметься для планування бізнесу приблизно для 10 користувачів. Це було зроблено від імені іншої ІТ-команди, яка "підписала" мені роботу, і через те, що строки проекту були трохи незапланованими на їхньому боці, мені довелося реалізувати це трохи поспіхом.
Тоді ми вирішили, що найшвидшим способом буде створити робочу книжку Excel з VBA, а потім дозволити користувачам завантажити цю розширену робочу книжку з Інтранету для використання на своїх ПК. У цьому випадку Excel був обмеженням, оскільки система планування (тобто база даних), яку ми використовуємо, може взаємодіяти лише за допомогою надбудови Excel, яка повинна бути завантажена одночасно з відкритою робочою книжкою планування. Однак VBA не була обмеженням на той час.
У робочій книжці я створив близько 4000 рядків коду VBA, і, намагаючись розділити шари даних та презентації, я не міг у всіх випадках через терміни проекту. Якщо чесно, то, хоча я пишаюся тим, що створив цю робочу книжку, я в той же час трохи розчарований тим, що це могло бути зроблено краще, як з точки зору кодування, так і розгортання для користувачів.
Сьогодні
Повернувшись до сьогодні, ІТ-команда знову прийшла до мене, щоб подати запит на подібну робочу книжку (тому я можу повторно використати частини іншої робочої книги вище), але цього разу це набагато складніше і буде використовуватися більшою кількістю користувачів ( близько 200).
Однак цього разу заплановано трохи краще, і я можу побачити, що у нас є трохи більше часу для планування речей. Виходячи з цього, я подумав про рішення та інфраструктуру, оскільки програмування для 100 користувачів має більший вплив, ніж для 10 користувачів. Тому я запропонував команді, що, можливо, ми повинні розглянути можливість переміщення існуючого коду до рішення C #, щоб ми могли керувати кодом більш досконалим способом. Я все ще розглядаю це як надбудову, написану за допомогою VSTO / Excel-DNA, яка потім може бути розгорнена для користувачів.
Я обговорював це з IT-командою два тижні тому, і все здавалося, що це нормально, до вчора я не отримав повідомлення від однієї з команди (яка не знає VBA або C #) з питанням, чому ми повинні починати цей новий проект у C # проти використання той же підхід, як і раніше. Деякі з їх проблем були:
- Це досить важливий проект, тому він повинен працювати - рішення C # не буде настільки стабільним чи ефективним, як існуюче рішення на базі VBA.
- Нам доведеться викинути те, що ми [я] зробили в рішенні VBA, і відтворити це з нуля в C #.
- Комусь доведеться підтримувати два окремих рішення, одне в VBA і одне в C #. [насправді у них наразі немає когось для підтримки, я зазвичай наступаю].
Тепер я можу певною мірою зрозуміти їхні проблеми, але мені потрібно прийняти рішення щодо наступних кроків і з чим повернутися до них. Особисто мені хотілося б реалізувати в C #, тому що я вважаю, що вона краще піддається побудові такого «Enterprise» рішення, як це. Крім того, я хотів би скористатися цією можливістю вивчити свої C # навички, оскільки я зараз не такий компетентний в C #, як я VBA, і я хотів би, щоб такий проект, як цей, переніс мене на "наступний рівень".
Я підготував список пунктів, які міг би використати, щоб спробувати їх переконати, що рішення C # буде кращим для цього проекту, ось що я маю досі:
- Блок тестування.
- Контроль джерела.
- Документація з кодом - для передачі знань іншим супровідним особам.
- Кращі умови кодування - можуть використовувати такі речі, як ReSharper, для забезпечення кращого іменування та структури.
- Краще IDE - менше помилок через виділення помилок.
- Більша модульність через збірки - може сприяти повторному використанню в майбутніх інструментах.
- Кероване розгортання - може контролювати, ким використовується цей інструмент.
Питання: Які ще моменти я можу додати, щоб переконати їх? Або я намагаюся відкусити більше, ніж можу жувати цим проектом? Чи варто просто мовчати і робити це в VBA все одно?
Я усвідомлюю, що просто перехід на нову мову через те, що її "новіша" чи сприйнята "крутішою" не повинна бути основою для прийняття рішення, і як такий я протистояв включенню її як пункт рішення - мова йде про факти.
Крім того, я не прошу буквального порівняння між C # і VBA як мовами, оскільки існує багато порівнянь щодо SO.