Lý lịch
Năm ngoái, tôi đã được yêu cầu tạo ra một công cụ được sử dụng để lập kế hoạch kinh doanh cho khoảng 10 người dùng. Điều này đã được thực hiện thay mặt cho một nhóm CNTT khác đã "ký hợp đồng" công việc với tôi và do thời hạn dự án có một chút không dự tính về phía họ, tôi đã phải thực hiện nó một cách vội vàng.
Vào thời điểm đó, chúng tôi đã quyết định rằng cách nhanh nhất sẽ là tạo một sổ làm việc Excel bằng VBA và sau đó người dùng tải xuống sổ làm việc được tăng cường VBA này từ Intranet để sử dụng trên PC của họ. Excel là một hạn chế trong trường hợp này vì hệ thống lập kế hoạch (tức là cơ sở dữ liệu) mà chúng tôi sử dụng chỉ có thể tương tác thông qua bổ trợ Excel phải được tải cùng lúc khi sổ làm việc lập kế hoạch được mở. Tuy nhiên, VBA không phải là một hạn chế tại thời điểm đó.
Sổ làm việc tôi đã tạo khoảng 4.000 dòng mã VBA và trong khi tôi cố tách các lớp dữ liệu và trình bày, tôi không thể trong mọi trường hợp do thời hạn dự án. Thành thật mà nói, trong khi tôi tự hào khi tạo ra sổ làm việc này, tôi đồng thời hơi thất vọng vì nó có thể được thực hiện tốt hơn, cả về mã hóa và cả triển khai cho người dùng.
Hôm nay
Quay lại ngày hôm nay và nhóm CNTT một lần nữa đến với tôi để yêu cầu một sổ làm việc tương tự (vì vậy tôi có thể sử dụng lại các phần của sổ làm việc khác ở trên), nhưng lần này nó phức tạp hơn nhiều và sẽ được sử dụng bởi số lượng người dùng lớn hơn ( khoảng 200).
Tuy nhiên, lần này, nó được lên kế hoạch tốt hơn một chút và tôi có thể thấy rằng chúng ta có thêm một chút thời gian để lên kế hoạch cho mọi thứ. Dựa trên điều này, tôi đã nghĩ về giải pháp và cơ sở hạ tầng vì lập trình cho 100 người dùng có nhiều tác động hơn so với 10 người dùng. Do đó, tôi đã đề xuất với nhóm rằng có lẽ chúng ta nên xem xét việc di chuyển mã hiện có sang giải pháp C # để chúng ta có thể quản lý mã theo cách tinh tế hơn. Tôi vẫn đang xem nó như một phần bổ trợ được viết bằng VSTO / Excel-DNA, sau đó có thể được triển khai cho người dùng.
Tôi đã thảo luận vấn đề này với nhóm CNTT hai tuần trước và mọi thứ dường như đều ổn, cho đến ngày hôm qua tôi nhận được thư từ một trong số nhóm (không biết VBA hoặc C #) đặt câu hỏi tại sao chúng ta nên bắt đầu dự án mới này trong C # so với sử dụng cách tiếp cận như trước đây. Một số mối quan tâm của họ là:
- Đây là một dự án khá quan trọng vì vậy nó phải hoạt động - giải pháp C # sẽ không ổn định hoặc hoạt động tốt như giải pháp dựa trên VBA hiện có.
- Chúng tôi sẽ phải vứt bỏ những gì chúng tôi [tôi] đã làm trong giải pháp VBA và tạo lại nó từ đầu trong C #.
- Ai đó sẽ phải hỗ trợ hai giải pháp riêng biệt, một trong VBA và một trong C #. [thực ra, hiện tại họ không có ai hỗ trợ, tôi thường bước vào].
Bây giờ, tôi có thể hiểu một số mối quan tâm của họ ở một mức độ nào đó, nhưng tôi cần đi đến quyết định về các bước tiếp theo và những gì cần quay lại với họ. Cá nhân, tôi muốn triển khai trong C # vì tôi cảm thấy việc cho vay tốt hơn để xây dựng giải pháp "Doanh nghiệp" như thế này. Hơn nữa, tôi muốn tận dụng cơ hội này để cải thiện các kỹ năng C # của mình vì hiện tại tôi không đủ năng lực trong C # vì tôi là VBA và tôi muốn một dự án như thế này đưa tôi đến "cấp độ tiếp theo".
Tôi đã chuẩn bị một danh sách các điểm mà tôi có thể sử dụng để thử và thuyết phục họ rằng giải pháp C # sẽ tốt hơn cho dự án này, đây là những gì tôi có cho đến nay:
- Kiểm tra đơn vị.
- Kiểm soát nguồn.
- Mã tài liệu - để chuyển giao kiến thức cho những người hỗ trợ khác.
- Các quy ước mã hóa tốt hơn - có thể sử dụng những thứ như ReSharper để thực thi việc đặt tên và cấu trúc tốt hơn.
- IDE tốt hơn - ít lỗi hơn do đánh dấu lỗi.
- Nhiều mô-đun hơn thông qua các hội đồng - có thể thúc đẩy tái sử dụng trong các công cụ trong tương lai.
- Quản lý triển khai - có thể kiểm soát công cụ này được sử dụng bởi ai.
Câu hỏi: Tôi có thể thêm những điểm nào khác để thuyết phục họ? Hay tôi đang cố gắng cắn nhiều hơn tôi có thể nhai với dự án này? Tôi có nên giữ im lặng và làm điều đó trong VBA không?
Tôi biết rằng việc chuyển sang một ngôn ngữ mới bởi vì "mới hơn" hoặc được coi là "mát mẻ" hơn không nên là cơ sở cho một quyết định và vì vậy tôi đã chống lại việc đưa nó vào như một điểm quyết định - đây là về sự thật.
Ngoài ra, tôi không yêu cầu so sánh theo nghĩa đen giữa C # và VBA là ngôn ngữ, vì có rất nhiều so sánh về SO.