Latar Belakang
Tahun lalu, saya diminta untuk membuat alat yang akan digunakan untuk perencanaan bisnis untuk sekitar 10 pengguna. Ini dilakukan atas nama tim TI lain yang "mensub-kontrakkan" pekerjaan itu kepada saya, dan karena tenggat waktu proyek sedikit tidak terencana di pihak mereka, saya harus mengimplementasikannya dengan sedikit terburu-buru.
Pada saat itu, kami memutuskan bahwa cara tercepat adalah membuat workbook Excel dengan VBA dan kemudian meminta pengguna mengunduh workbook yang ditingkatkan VBA ini dari Intranet untuk digunakan di PC mereka. Excel merupakan kendala dalam hal ini karena sistem perencanaan (yaitu basis data) yang kami gunakan hanya dapat berinteraksi melalui add-in Excel yang harus dimuat pada saat yang sama buku kerja perencanaan terbuka. Namun, VBA bukanlah kendala saat itu.
Buku kerja yang saya buat sekitar 4.000 baris kode VBA dan sementara saya mencoba memisahkan data dan lapisan presentasi, saya tidak bisa dalam semua kasus karena tenggat waktu proyek. Sejujurnya, sementara saya bangga membuat buku kerja ini, saya pada saat yang sama sedikit kecewa karena itu bisa dilakukan dengan lebih baik, baik dalam hal pengkodean dan juga penyebaran kepada pengguna.
Hari ini
Kembali ke hari ini dan tim IT sekali lagi datang kepada saya untuk meminta buku kerja yang serupa (jadi saya bisa menggunakan kembali bagian-bagian dari buku kerja lain di atas), tetapi kali ini jauh lebih rumit dan akan digunakan oleh lebih banyak pengguna ( sekitar 200).
Namun, kali ini, ini sedikit lebih terencana dan saya dapat melihat bahwa kita memiliki sedikit lebih banyak waktu untuk merencanakan sesuatu. Berdasarkan hal ini, saya memikirkan solusi dan infrastruktur karena pemrograman untuk 100 pengguna memiliki dampak yang lebih besar daripada untuk 10 pengguna. Oleh karena itu, saya menyarankan kepada tim bahwa mungkin kita harus mempertimbangkan memigrasikan kode yang ada ke solusi C # sehingga kita dapat mengelola kode dengan cara yang lebih disempurnakan. Saya masih mempertimbangkan itu sebagai add-in yang ditulis menggunakan VSTO / Excel-DNA yang kemudian dapat digunakan untuk pengguna.
Saya membahas hal ini dengan tim TI dua minggu lalu dan semuanya tampak baik-baik saja, sampai kemarin saya menerima email dari salah satu tim (yang tidak tahu VBA atau C #) yang mempertanyakan mengapa kita harus memulai proyek baru ini dalam C # dibandingkan menggunakan pendekatan yang sama seperti sebelumnya. Beberapa kekhawatiran mereka adalah:
- Ini adalah proyek yang cukup penting sehingga harus bekerja - solusi C # tidak akan stabil atau berfungsi sebaik solusi berbasis VBA yang ada.
- Kita harus membuang apa yang telah kita [saya] lakukan dalam solusi VBA dan membuatnya kembali dari awal di C #.
- Seseorang harus mendukung dua solusi terpisah, satu di VBA dan satu di C #. [sebenarnya, mereka saat ini tidak memiliki siapa pun untuk dukungan, saya biasanya ikut].
Sekarang, saya bisa memahami beberapa kekhawatiran mereka sampai taraf tertentu, tetapi saya perlu mengambil keputusan tentang langkah selanjutnya dan apa yang harus kembali kepada mereka. Secara pribadi, saya ingin menerapkan dalam C # karena saya merasa akan lebih baik untuk membangun solusi "Perusahaan" seperti ini. Selain itu, saya ingin mengambil kesempatan ini memoles keterampilan C # saya karena saya saat ini tidak kompeten dalam C # karena saya VBA dan saya ingin proyek seperti ini untuk membawa saya ke "level selanjutnya".
Saya menyiapkan daftar poin yang dapat saya gunakan untuk mencoba dan meyakinkan mereka bahwa solusi C # akan lebih baik untuk proyek ini, inilah yang saya miliki sejauh ini:
- Pengujian unit.
- Kontrol sumber.
- Dokumentasi kode - untuk transfer pengetahuan kepada orang-orang pendukung lainnya.
- Konvensi kode yang lebih baik - dapat menggunakan hal-hal seperti ReSharper untuk menegakkan penamaan dan struktur yang lebih baik.
- IDE yang lebih baik - lebih sedikit kesalahan karena penyorotan kesalahan.
- Lebih banyak modularitas melalui rakitan - dapat mempromosikan penggunaan kembali di alat masa depan.
- Penempatan terkelola - dapat mengontrol oleh siapa alat ini digunakan.
Pertanyaan: Apa poin lain yang bisa saya tambahkan untuk meyakinkan mereka? Atau apakah saya mencoba untuk menggigit lebih dari yang saya bisa mengunyah dengan proyek ini? Haruskah saya tetap diam dan melakukannya di VBA?
Saya sadar bahwa hanya pindah ke bahasa baru karena "lebih baru" atau dianggap "lebih dingin" seharusnya tidak menjadi dasar untuk keputusan dan karena itu saya menolak untuk memasukkannya sebagai titik keputusan - ini adalah tentang fakta.
Juga, saya tidak meminta perbandingan literal antara C # dan VBA sebagai bahasa, karena ada banyak perbandingan pada SO.