पृष्ठभूमि
पिछले साल, मुझे लगभग 10 उपयोगकर्ताओं के लिए व्यावसायिक नियोजन के लिए इस्तेमाल किया जाने वाला एक उपकरण बनाने के लिए कहा गया था। यह एक अन्य आईटी टीम की ओर से किया गया था, जिन्होंने मुझे काम को "उप-अनुबंधित" किया था, और परियोजना की समय सीमा उनके पक्ष में थोड़ी अनियोजित होने के कारण, मुझे इसे थोड़ा भीड़ में लागू करना पड़ा।
उस समय, हमने तय किया कि सबसे तेज़ तरीका VBA के साथ एक एक्सेल वर्कबुक बनाना होगा और फिर उपयोगकर्ताओं को अपने पीसी पर उपयोग करने के लिए इंट्रानेट से इस VBA-वर्धित वर्कबुक को डाउनलोड करना होगा। इस मामले में एक्सेल एक अड़चन था क्योंकि हम जिस प्लानिंग सिस्टम (डेटाबेस) का उपयोग करते हैं वह केवल एक एक्सेल ऐड-इन के माध्यम से इंटरैक्ट कर सकता है जिसमें उसी समय लोड किया जाना चाहिए जब प्लानिंग वर्कबुक खुली हो। हालाँकि, उस समय VBA एक अड़चन नहीं था।
कार्यपुस्तिका मैंने VBA कोड की लगभग 4,000 पंक्तियों को बनाया और जब मैंने डेटा और प्रस्तुति परतों को अलग करने की कोशिश की, तो मैं परियोजना की समय सीमा के कारण सभी मामलों में नहीं कर सका। ईमानदार होने के लिए, जबकि मुझे इस कार्यपुस्तिका को बनाने पर गर्व है, मैं एक ही समय में थोड़ा निराश हूं कि यह बेहतर तरीके से किया जा सकता है, दोनों कोडिंग के संदर्भ में और उपयोगकर्ताओं की तैनाती भी।
आज
आज तक और आईटी टीम फिर से एक समान कार्यपुस्तिका का अनुरोध करने के लिए मेरे पास आई है (इसलिए मैं ऊपर की अन्य कार्यपुस्तिका के कुछ हिस्सों का पुन: उपयोग कर सकता हूं), लेकिन इस बार यह बहुत अधिक जटिल है और अधिक से अधिक उपयोगकर्ताओं द्वारा उपयोग किया जाएगा ( लगभग 200)।
हालांकि, इस बार, यह थोड़ा बेहतर नियोजित है और मैं देख सकता हूं कि हमारे पास चीजों की योजना बनाने के लिए थोड़ा और समय है। इसके आधार पर, मैंने समाधान और बुनियादी ढांचे के बारे में सोचा क्योंकि 100 उपयोगकर्ताओं के लिए प्रोग्रामिंग 10 उपयोगकर्ताओं के लिए प्रभाव से अधिक है। इसलिए, मैंने टीम को सुझाव दिया कि शायद हमें मौजूदा कोड को C # समाधान में माइग्रेट करने पर विचार करना चाहिए ताकि हम कोड को अधिक परिष्कृत तरीके से प्रबंधित कर सकें। मैं अभी भी इसे VSTO / Excel-DNA का उपयोग करते हुए एक ऐड-इन लिखित के रूप में मान रहा हूं जिसे तब उपयोगकर्ताओं के लिए तैनात किया जा सकता है।
मैंने दो सप्ताह पहले आईटी टीम के साथ इस पर चर्चा की थी और सब कुछ ठीक लग रहा था, कल तक मुझे टीम में से एक से मेल प्राप्त हुआ था (जो VBA या C # नहीं जानता है) यह सवाल करते हुए कि हमें C # बनाम इस नए प्रोजेक्ट को क्यों शुरू करना चाहिए? पहले जैसा ही दृष्टिकोण। उनकी कुछ चिंताएँ थीं:
- यह एक काफी महत्वपूर्ण परियोजना है, इसलिए इसे काम करना है - एक C # समाधान स्थिर या काम नहीं करेगा और साथ ही मौजूदा VBA- आधारित समाधान भी होगा।
- हमें वीएबीए समाधान में जो कुछ भी हमने किया था उसे हमें फेंकना होगा और इसे सी # में खरोंच से फिर से बनाना होगा।
- किसी को दो अलग-अलग समाधानों का समर्थन करना होगा, एक VBA में और एक C # में। [वास्तव में, वर्तमान में उनके पास समर्थन के लिए कोई नहीं है, मैं आमतौर पर कदम रखता हूं]।
अब, मैं उनकी कुछ चिंताओं को कुछ हद तक समझ सकता हूं, लेकिन मुझे अगले चरणों पर निर्णय लेने की जरूरत है और उनके साथ क्या करना है। व्यक्तिगत रूप से, मैं सी # में लागू करना चाहूंगा क्योंकि मुझे लगता है कि इस तरह से "एंटरप्राइज" समाधान बनाने के लिए यह बेहतर होगा। इसके अलावा, मैं इस अवसर को अपने सी # कौशल पर लेना चाहूंगा क्योंकि मैं वर्तमान में सी # में सक्षम नहीं हूं क्योंकि मैं वीबीए हूं और मैं इस तरह की परियोजना को "अगले स्तर" पर ले जाऊंगा।
मैंने उन बिंदुओं की एक सूची तैयार की, जिनका उपयोग करने के लिए मैं कोशिश कर सकता हूं और उन्हें समझा सकता हूं कि इस परियोजना के लिए एक C # समाधान बेहतर होगा, यह वही है जो मैंने अभी तक किया है:
- इकाई का परीक्षण।
- स्रोत नियंत्रण।
- कोड प्रलेखन - अन्य सहायता व्यक्तियों को ज्ञान हस्तांतरण के लिए।
- बेहतर कोडिंग कन्वेंशन - बेहतर नामकरण और संरचना को लागू करने के लिए ReSharper जैसी चीजों का उपयोग कर सकते हैं।
- बेहतर आईडीई - त्रुटि हाइलाइटिंग के कारण कम गलतियां।
- विधानसभाओं के माध्यम से अधिक प्रतिरूपकता - भविष्य के साधनों में फिर से उपयोग को बढ़ावा दे सकती है।
- प्रबंधित परिनियोजन - यह नियंत्रित कर सकता है कि यह उपकरण किसके द्वारा उपयोग किया जाता है।
प्रश्न: मैं उन्हें समझाने के लिए किन अन्य बिंदुओं को जोड़ सकता हूं? या मैं इस परियोजना के साथ चबाने की तुलना में अधिक काटने की कोशिश कर रहा हूं? क्या मुझे बस चुप रहना चाहिए और वैसे भी VBA में करना चाहिए?
मुझे पता है कि सिर्फ एक नई भाषा की ओर बढ़ना क्योंकि इसका "नया" या "कूलर" होना किसी निर्णय का आधार नहीं होना चाहिए और जैसे कि मैंने इसे निर्णय बिंदु के रूप में शामिल करने का विरोध किया है - यह तथ्यों के बारे में है।
इसके अलावा, मैं भाषाओं के रूप में C # और VBA के बीच शाब्दिक तुलना के लिए नहीं कह रहा हूं, क्योंकि SO पर काफी तुलनाएं हैं।