バックグラウンド
昨年、約10人のユーザーのビジネス計画に使用するツールの作成を依頼されました。これは、作業を「下請け」する別のITチームに代わって行われ、プロジェクトの締め切りが彼らの側で少し計画外であるため、私はそれを少し急いで実装しなければなりませんでした。
当時、私たちは、VBAを使用してExcelブックを作成し、ユーザーがこのVBAが強化されたブックをイントラネットからダウンロードしてPCで使用するのが最も簡単な方法であると判断しました。この場合、Excelは制約でした。使用する計画システム(データベース)は、計画ワークブックを開くと同時にロードする必要があるExcelアドインを介してのみ対話できるためです。ただし、当時のVBAは制約ではありませんでした。
約4,000行のVBAコードを作成したワークブックで、データレイヤーとプレゼンテーションレイヤーを分離しようとしましたが、プロジェクトの締め切りのためにすべてのケースでできませんでした。正直に言って、このワークブックを作成することを誇りに思っていますが、同時に、コーディングとユーザーへの展開の両方の面で、より良くできたという点で少しがっかりしています。
今日
今日に戻ると、ITチームが再び同じようなワークブックをリクエストするようになりました(したがって、上記の他のワークブックの一部を再利用できます)が、今回ははるかに複雑で、より多くのユーザーに使用されます(約200)。
ただし、今回は少し計画が良く、計画を立てる時間がもう少しあることがわかります。これに基づいて、100人のユーザー向けのプログラミングは10人のユーザー向けよりも影響が大きいため、ソリューションとインフラストラクチャについて考えました。したがって、既存のコードをC#ソリューションに移行して、コードをより洗練された方法で管理できるようにすることを検討することをチームに提案しました。VSTO / Excel-DNAを使用して作成され、ユーザーに展開できるアドインとしてまだ検討中です。
私はこれを2週間前にITチームと話し合い、すべてが順調であるように見えましたが、昨日まで、チームの1人(VBAまたはC#を知らない)から、この新しいプロジェクトをC#で開始するのではなく、前と同じアプローチ。彼らの懸念のいくつかは次のとおりです。
- これはかなり重要なプロジェクトであるため、動作する必要があります。C#ソリューションは、既存のVBAベースのソリューションほど安定しておらず、動作しません。
- VBAソリューションで行った[I]処理を破棄し、C#でゼロから再作成する必要があります。
- 誰かがVBAとC#の2つの別々のソリューションをサポートする必要があります。[実際、彼らは現在サポートのための誰かを持っていません、私は通常介入します]。
今、私は彼らの懸念のいくつかをある程度理解することができますが、次のステップと彼らに何を戻すべきかについて決定する必要があります。個人的には、C#で実装したいと思います。なぜなら、このような「エンタープライズ」ソリューションを構築する方が良いと思うからです。さらに、私はこの機会にC#のスキルを磨きたいと思います。私は現在C#の能力がVBAほどではないので、このようなプロジェクトを「次のレベル」に引き上げたいと思っています。
私は、C#ソリューションがこのプロジェクトに適していると確信させるために使用できるポイントのリストを用意しました。
- 単体テスト。
- ソース管理。
- コードのドキュメント-他のサポート担当者への知識の伝達。
- コーディング規則の改善-ReSharperなどを使用して、命名と構造を強化できます。
- IDEの改善-エラーの強調表示によるミスの減少。
- アセンブリによるモジュール性の向上-将来のツールでの再利用を促進できます。
- 管理された展開-このツールの使用者を制御できます。
質問:説得するために他にどのような点を追加できますか?それとも、このプロジェクトで噛むことができる以上に噛み砕こうとしていますか?とにかく静かにしてVBAでやるべきですか?
「新しい」または「クールな」と思われるため、新しい言語に移行するだけでは判断の根拠にならないため、それを判断ポイントとして含めることを拒否しています。
また、私は言語としてのC#とVBAのリテラル比較を求めていません。SOには多くの比較があるからです。