3 पॉइंट द्वारा GN⁺ 2023-11-16 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • कई संगठनों में Excel कामकाजी प्रक्रियाओं की बुनियाद बन चुका है, इसलिए जब छोटी-मोटी automation की ज़रूरत होती है तो VBA लगभग डिफ़ॉल्ट विकल्प बन जाता है
  • उदाहरण वाले संगठन के पास 13 data platform और कई automation tools हैं, लेकिन जिन tools से ज़रूरी data sources तक व्यापक पहुंच मिलती है, वे लगभग VBA और PowerShell तक सिमट जाते हैं
  • CyberSecurity ने Python, Ruby, Node, Rust जैसी high-level languages की installation अस्वीकार कर दी, और विकल्प के तौर पर मौजूद Power Platform ने data accessibility और complex algorithm maintenance में सीमाएँ दिखाईं
  • Lotus Notes और IBM BPM के पुराने उदाहरण दिखाते हैं कि IT-नेतृत्व वाले systems support end, अधूरी migration, और maintenance gaps के प्रति कमजोर हो सकते हैं
  • VBA पुराना है और इसकी कमज़ोरियाँ भी हैं, लेकिन यह Office में शामिल है, इसलिए सभी के लिए सुलभ है, और SME को business logic और data migration को सीधे verify करने का control देता है

VBA के लगातार चुने जाने के सीधे कारण

  • 2021 के /r/vba survey में VBA users की बड़ी संख्या ने कहा कि वे VBA का उपयोग क्योंकि उनके पास दूसरा विकल्प नहीं था
  • कई संगठन पूरी business process को Excel पर चलाते हैं, और जब थोड़ी automation चाहिए होती है तो VBA अक्सर सबसे पहले चुना जाता है
  • “spreadsheet से infrastructure के कुछ हिस्सों को control करना” जैसी आलोचना के पीछे संगठन द्वारा दिए गए tools, data access, और maintenance structure की सीमाएँ होती हैं

Data access और automation tools की सीमाएँ

  • उदाहरण संगठन का engineering विभाग कई automation platforms इस्तेमाल कर सकता है
    • OnPrem: PowerShell, Excel का VBA / सीमित OfficeJS / OfficeScripts / PowerQuery, PowerBI Desktop, SAP Analysis for Office
    • OnCloud: PowerApps, Power BI, non-premium PowerAutomate
    • sandbox environment: ArcGIS का ArcPy, MapInfo का MapBasic, InfoWorks ICM का Ruby, ArcGIS Online
  • IT द्वारा managed data platforms D1 से D13 तक हैं, जिनमें geospatial DB, SAP DB, telemetry platform, SharePoint, Lotus Notes, IBM BPM, file system, Hydraulic Model Information आदि शामिल हैं
  • जिन automation platforms से ज़रूरी data sources से connect किया जा सकता है, वे लगभग VBA और PowerShell तक सीमित हो जाते हैं
    • Power BI Desktop संगठन में लागू किया गया है, लेकिन यह उन सभी platforms को cover नहीं करता जिन तक VBA पहुंचता है
    • पहुंच का दायरा समान हो तब भी Power BI को process automation के लिए इस्तेमाल करना कठिन है, और अलग dataset संभालने के लिए CSV बनाकर SharePoint में store करने का तरीका अपनाया जाता है
    • वह CSV बनाना भी कई बार VBA ही करता है
  • VBA से कुछ OnCloud services से connection प्रत्यक्ष प्रयासों पर आधारित है, और SAP BW4HANA व अन्य cloud services को भी VBA से interface किया जा सकता है, ऐसा माना जाता है, लेकिन authentication requirements और protocols अभी हल नहीं हुए हैं

High-level languages और Power Platform की सीमाएँ

  • संगठन business automation के लिए Python, Ruby, Node, Rust जैसी high-level languages इस्तेमाल करना चाहता था, लेकिन team या business के स्तर पर installation के सभी अनुरोध CyberSecurity ने अस्वीकार कर दिए
  • अस्वीकृति का कारण यह था कि end users को high-level programming languages की पहुंच देना कंपनी की technology strategy vision के खिलाफ था
  • विकल्प के रूप में बताए जाने वाले PowerAutomate, PowerApps ज़रूरी data तक लगभग पहुंच ही नहीं पाते
  • data access संभव हो तब भी Power Platform अधिकांश processes चलाने के लिए अपर्याप्त है
    • ज़रूरी algorithms इतने complex हैं कि PowerAutomate solution maintain करना कठिन हो सकता है और IT staff के लिए भी समझना मुश्किल हो सकता है
    • उदाहरण के तौर पर projection algorithms का उल्लेख है
  • अंततः व्यवहारिक रूप से बचने वाले tools PowerShell v3 और VBA हैं
    • PowerShell v3 class syntax support नहीं करता और module installation भी संभव नहीं है
    • VBA वह target बना जिसके लिए modern standards के हिसाब से अधिक उचित language जैसा support देने हेतु सैकड़ों घंटे लगाकर open source VBA libraries बनाई गईं

Maintenance assurance के रूप में VBA

  • 2000 के दशक में कई systems IBM Lotus Notes database पर बनाए गए थे
  • Lotus Notes को 2019 में HCL ने acquire किया, जिसके बाद support continuity डगमगा गई, और जून 2024 में official support end तय था
  • 2019 से technical team कई systems को नई technology में migrate करने की कोशिश कर रही थी, और संगठन ने एक Lotus Notes DB को replace करने के लिए IBM Business Process Manager आधारित system विकसित करने पर भारी लागत लगाई
  • योजना यह थी कि D11 में D10 का सारा data भरने के बाद D10 को archive कर दिया जाएगा, लेकिन 2023 तक स्थिति अलग थी
    • official support end में 8 महीने बचे थे
    • technical team ने IBM BPM support contract हटा दिया
    • IBM BPM और Lotus Notes DB दोनों के लिए कोई replacement system दिखाई नहीं दे रहा था
    • IBM BPM solution का maintenance कमजोर था और वह ज़रूरत के मुताबिक काम नहीं कर रहा था
    • उद्देश्य के अनुरूप न होने वाले solution को IBM BPM में ज़बरदस्ती फिट किया गया था
    • REST API है, लेकिन technical team और SME के लिए वह लगभग बेकार है
      • कुछ REST calls string के रूप में encoded JavaScript का उपयोग करते हैं
      • दूसरी calls में XML के अंदर JSON के अंदर HTML डालना पड़ता है
      • DB tables को नाम से नहीं बल्कि GUID से query किया जाता है
      • कौन-सा GUID किस table या process से मेल खाता है, इसका documentation नहीं है
    • D10 data वास्तव में D11 में migrate नहीं हुआ, इसलिए business एक system नहीं बल्कि 2 systems इस्तेमाल कर रहा है
    • D11 data model भी D10 data को ठीक से support नहीं करता
  • SME इन tools का रोज़ उपयोग करते हैं और system changes की ज़रूरत तय करने वाले मुख्य पक्ष होते हैं
  • जब SME VBA का उपयोग करते हैं, तो वे system को ज़रूरत के अनुसार सीधे control और maintain कर सकते हैं, और यह IT systems में न मिलने वाली maintenance assurance की तरह काम करता है

Control और SME collaboration की समस्या

  • हाल का project business-critical spreadsheet को replace करने वाला नया integrated IT system बनाना था, और सफलता मिलने पर D6 की महत्ता C grade तक घट जानी थी
  • शुरुआती specification सरल थी
    • NodeJS server और MySQL database
    • React UI
    • admins और SME को codebase तथा git access देना
    • IT और SME मिलकर system बनाएं
  • technical team ने अलग मांगें रखीं
    • admins और SME code तक पहुंच नहीं पाएंगे
    • frontend को “Strategic Vision” के अनुरूप Microsoft PowerApps में बनाया जाएगा
    • backend को “Strategic Vision” के अनुरूप Microsoft Azure Pipelines में बनाया जाएगा
  • SME के नज़रिए से इन मांगों ने कई समस्याएँ पैदा कीं
    • technical team operational work को नहीं समझती, इसलिए business logic और calculations को समझना कठिन होता है
    • जब developers business logic लिखते हैं, तो errors आने की संभावना बढ़ती है
    • technical team अक्सर custom technology projects को छोड़ देती है, जिससे maintenance और improvement resources गायब हो जाते हैं
    • SME के साथ collaboration करने पर कम-से-कम एक team system maintenance resources बनाए रख सकती है
    • SME को deliverable पर भरोसा होना चाहिए, लेकिन code दिखाई न दे तो हर edge case में उसके काम करने की पुष्टि कठिन है
    • unit tests हों तब भी code न दिखे तो यह verify करना मुश्किल है कि tests मौजूद हैं और नियमित रूप से चलाए जाते हैं
    • SME के पास मौजूदा legacy systems को improve और maintain करने तथा systems के बीच interactions का गहरा ज्ञान होता है
    • यह verify करने के लिए कि नया system सारा data सही तरह migrate और represent करता है, backend access ज़रूरी है
  • जब code VBA में रहता है, तो SME और business control बनाए रखते हैं
  • technical team business team को लगभग कोई control नहीं देती, जबकि SME यह सुनिश्चित कर सकते हैं कि software modular तरीके से ठीक से विकसित हो और loosely connected technology mess न बन जाए

परिचित environment के भीतर user experience

  • अधिकांश engineers रोज़मर्रा के काम में spreadsheets का उपयोग करते हैं
  • VBA spreadsheet के भीतर built-in है, इसलिए यह परिचित environment में एक अपरिचित tool दे सकता है
  • अपरिचित environment में अपरिचित tool देने की तुलना में, परिचित environment के भीतर नई functionality जोड़ना users के लिए अधिक शक्तिशाली हो सकता है

निष्कर्ष: VBA की कमज़ोरियाँ और व्यवहारिक चयन

  • संगठन spreadsheet और VBA चुनने के पीछे कई कारण रखते हैं
    • security concerns के कारण IT द्वारा दिए गए विकल्प बहुत कमजोर हैं
    • alternative tools source systems से ठीक से connect नहीं होते और आमतौर पर अब भी progress में हैं
    • IT strategy में ऐसी समस्याएँ हैं जो कुछ use cases को reflect नहीं करतीं
    • security और maintenance concerns के कारण SME के साथ collaboration नहीं किया जाता
    • users, admins, और SME को replacement systems की पर्याप्त training नहीं मिलती
    • users और SME system के business logic पर कुछ स्तर का control चाहते हैं
    • Office में शामिल होने के कारण यह एकमात्र व्यावहारिक technology है जिसे सभी उपयोग कर सकते हैं
  • ऐसा नहीं है कि VBA में कोई कमज़ोरी नहीं है
  • mataroa की पोस्ट में कुछ बातें सही हैं
  • कभी-कभी management बहुत खराब होती है, लेकिन संगठन के कई लोग उपलब्ध tools के भीतर सही काम करने की कोशिश करते हैं

1 टिप्पणियां

 
GN⁺ 2023-11-16
Hacker News रायें
  • कंपनियों में non-inventory software की approval लेने के लिए management, upper management, project registration, budget, project manager allocation आदि से गुज़रे बिना इस्तेमाल किया जा सकने वाला development environment पहले से ही Excel के अंदर मौजूद है
    अगर network data storage और web interface भी चाहिए, तो SharePoint जोड़ देना काफी है। ऐसे end-user oriented रास्ते से solutions निकलते हैं, और वे solutions VBA में बनाए जाते हैं

    • कंपनी जैसे dystopian माहौल में यह उम्मीद नहीं करनी चाहिए कि आप अपनी machine पर software request या install कर पाएंगे। जो पहले से है, बस वही इस्तेमाल कर सकते हैं; बदलाव करना हो तो bureaucracy से लड़ना पड़ता है, इसलिए उसकी value नहीं रहती
      पहले Word VBA में बना एक भयानक report engine था, जो file share से report definitions पढ़ता था, template fragments को cut-paste करता था और फिर output देता था। IT ने एक ex-employee का PC वापस नहीं लिया था, इसलिए उसी से पूरे दिन .doc चलाकर engineering reports बनाई जाती थीं; यह CAD/CAM software का reporting option खरीदने से कहीं ज्यादा तेज़ और सस्ता था। उस option में कम-से-कम 18 महीने, consultants और project budget खर्च होना था
      जब लोग Excel VBA से भयानक काम करने वालों को कोसते हैं, तो असली कारण stack में ऊपर कहीं होने की संभावना ज्यादा होती है। एक और कारण “बंदर का हथौड़ा” है: बंदर को हथौड़ा दे दो तो वह हर चीज़ ठोकता है; अगर आपके पास tool के नाम पर सिर्फ VBA है, तो हर चीज़ VBA solution जैसी दिखती है। अब हम थोड़े ज्यादा विकसित primates हो गए हैं
    • कम-से-कम दो बार ऐसा देखा है कि किसी department manager को कुछ चाहिए, लेकिन dev team को परेशान नहीं कर सकता या करना नहीं चाहता, और बात “यह कितना मुश्किल हो सकता है” से शुरू होती है। फिर देखते-देखते कुछ सौ lines का VBA बन जाता है जो उसकी जरूरत हल कर देता है
      अगले चरण में Jim भी उसे चलाना चाहता है, तो script copy होती है; Jane अलग VBA version इस्तेमाल करती है, इसलिए उसमें बदलाव होता है; फिर “यह भी!” जुड़ता जाता है और वह फैलता जाता है। आखिर में 1500 lines का patchwork बन जाता है, और वे maintenance dev team को सौंपना चाहते हैं
    • एक दोस्त ने Excel से अपना पूरा काम automate कर लिया। कहता है कि दिन भर का काम 15 मिनट में खत्म कर लेता है और बाकी समय आराम करता है
      कंपनी का computer बहुत locked down है, इसलिए कुछ install नहीं कर सकता और whitelist में न आने वाली sites पर भी नहीं जा सकता, लेकिन Excel मौजूद है
    • Visual Basic खुद भी बहुत powerful language है। Excel macro जैसे environment में उसकी ताकत काफी हद तक निकाली जा सकती है, और कई कंपनियों के power users सच में ऐसा करते हैं
      यह पुराने “Emacs operating system” paradigm को दूसरे context में लागू करने जैसा काफी लगता है
    • VBA मौजूद है, और काम करता है। Coding और iteration के लिए यह बहुत accessible और intuitive language है; external dependencies install करने, library hell या compile steps में समय बर्बाद नहीं करना पड़ता
      इसलिए यह आश्चर्य की बात नहीं कि VBA कंपनियों में अब भी बहुत valuable है। ऐसे environments में भी, जहां दूसरे tools, languages और mature build processes मौजूद थे, मैंने product managers को VBA में हैरान कर देने जितनी complex business analysis करते देखा है, और हाथ में मौजूद problem के लिए वही सही tool था
  • यह देखकर हैरानी हुई कि professional developers भी Excel/VBA को helper tool के तौर पर काफी इस्तेमाल करते हैं
    कुछ साल पहले एक बड़े hedge fund के साथ काम करते समय एक data analyst ने अपना बनाया Excel model भेजा; .xlsm extension देखकर लगा कि इसमें VBA code होगा। सोचा, “देखें macro-recording cowboys ने क्या किया है,” लेकिन अंदर काफी VBA था, और लेखक Caltech computer science background वाला data analyst था जो Python में बहुत अच्छा था
    VBA का इस्तेमाल database से data लाकर sheet में डालने, formulas बनाने और उसे अच्छी तरह format करने के लिए था, और कुछ UserForms भी थे। मैंने उसे चिढ़ाते हुए कहा, “VBA? वहां और क्या इस्तेमाल करते हो? cotton gin और steam shovel?” लेकिन मेरी उम्मीद के उलट उसने Excel और VBA की काफी तारीफ की, जिसे सुनकर मैं हैरान रह गया
    उसकी कही बात याद रह गई: “Excel calculations में छिपी dependency structure को समझना आसान बना देता है। अगर यह Python में किया होता, तो मैं पूरा दिन सवालों के जवाब दे रहा होता”

    • Developer के तौर पर अनुभव बढ़ने के साथ काम के हिसाब से सही tool इस्तेमाल करना ज्यादा महत्वपूर्ण हो जाता है। कई बार lazy solution, न समझ आने वाले ideas के ढेर से कहीं बेहतर होता है
    • VBA में समस्याएं तो हैं (https://sancarn.github.io/vba-articles/issues-with-vba.html), लेकिन यह सबसे खराब tools से बहुत दूर है। उदाहरण के लिए, PowerAutomate जैसी चीज़ों से बेहतर है
      VB6 की काफी बड़ी community है, और https://twinbasic.com/ ने हाल में VBA और VB6 communities को जोड़ने में काफी मदद की है। इसलिए developer community में थोड़ी revival भी हो सकती है
    • जो business चलाता हूं, वह Google Sheets पर काफी निर्भर है। Values inject करके और calculated values पढ़कर, काफी complex business logic को spreadsheet के रूप में define किया जा सकता है, और business/finance लोग उसे आसानी से adjust कर सकते हैं। हर कोई इस solution से बहुत खुश है
    • Excel कई कामों के लिए शानदार interface है, और एक हद तक लोगों को data समझने में मदद करता है। उल्टा, लोग उस data model के इतने आदी हो जाते हैं कि जब चीज़ें थोड़ी complex होती हैं, तो वे सवाल पूछने के बजाय खुद को दोष देने लगते हैं
      Sweden में 3GB Excel/VBA pension forecasting model भी है, जिसके साथ 38-page user manual आता है। हालांकि इसे Excel के बहुत अच्छे उपयोग का उदाहरण कहना मुश्किल है: https://www.pensionsmyndigheten.se/statistik-och-rapporter/p...
    • एक बड़े university hospital की pre-surgery admission clinic Excel से चलाई जाती थी
      VBA powerful है और prototyping व iteration तेज़ है। यहां तक कहा जा सकता है कि VB6 CRUD apps का शिखर था
  • “क्योंकि यह चौंकाने वाला है”
    मैंने पहले सुना था कि JP Morgan के नेटवर्क पर 20,000 से ज़्यादा Access databases थे। अलग-अलग कंपनियों के data analysts को एक दिन अपना रोज़ का काम उबाऊ लगने लगा, और उन्होंने “Record Macro” बटन को देखा। कुछ लोगों को यह काफी सुविधाजनक लगा और वे इसका इस्तेमाल जारी रखने लगे। कुछ ने ज़्यादा समझदारी दिखाते हुए macro से निकले code को देखा, थोड़ा सीखा और उसे बदलने की कोशिश की
    कुछ लोगों ने data structures और algorithms तक सीख लिए, Django जैसी authentication और permissions system बनाई, UserForm UI को शुरू से दोबारा बनाया, और Markdown, SAX parsing, custom scrollbar, logging, games तक implement कर दिए
    जवाब शायद यह है कि data analyst अपने रोज़मर्रा के काम से ऊब गया था

    • यह भी हो सकता है कि IT department ने अपनी ivory tower से इतने ज़्यादा processes थोप दिए कि लोग shadow IT की ओर धकेल दिए गए। बड़ी कंपनियों में मैंने देखा है कि analysts के पास अपनी बनाई Frankenstein चीज़ों को सही स्तर तक ले जाने की क्षमता होती है, फिर भी उन्हें “project शुरू करना होगा, tickets, schedule, requirements बनाने होंगे” जैसी बातों से रोक दिया जाता है
      बेशक यह एक जायज़ चिंता है कि किसी ऐसी चीज़ को support करना पड़ेगा जिसे हर किसी को आकर सीखना होगा। लेकिन जब तक business के पास problem solve करने वाले tools तक access है, “ऊबे हुए” लोग रास्ता ढूंढ ही लेते हैं। friction बहुत ज़्यादा है
    • “Record Macro” ही मुख्य बात है। Microsoft इसे C#, JavaScript, Python वगैरह में बदल दे, तब भी अगर वह button लगा दे तो यह संभव है
    • finance से शुरू करके data engineering या system implementation की ओर जाने वाले बहुत से लोगों जैसा ही अनुभव है
      Excel के अंदर कुछ हद तक complex चीज़ बनाकर network share पर डाल देना, IT के जरिए IDE install करवाने, कुछ बनाने, security process से गुजरकर deploy करने से आसान है, इसलिए लगता है यह जल्द खत्म नहीं होगा। हर problem को Jira project और ज़रूरत से ज़्यादा complex solution की जरूरत नहीं होती
      हालांकि VBA में बड़ी चीज़ें बनाने का मैं पूरी तरह विरोधी हूँ। कुछ cell values बदलने पर एक system के cube को query करके दूसरे system के table data से जोड़ने जैसी छोटी script ठीक है, लेकिन एक point के बाद कहीं और जाना चाहिए
      ज्यादातर projects के लिए, यह मानते हुए कि server license है जिससे automation किया जा सकता है, मैं Alteryx+Tableau/PowerBI stack को बहुत पसंद करता हूँ
    • सच कहूँ तो मैंने भी कुछ ऐसा ही किया था, फिर C# पर गया, और अब बस software developer हूँ
  • analysts के लिए एक simple CRUD interface बनाना था
    पहली problem यह थी कि analysts चाहते थे कि CRUD के सारे steps Excel के अंदर ही हों। Excel ही असली interface था, इसलिए कुछ ऐसा चाहिए था जो Excel के अंदर चल सके
    IT department command-line access की अनुमति नहीं देता था, और unapproved development tools install करने से भी मना करता था। approval मिलने में महीनों लग सकते थे। database administrators मौजूदा Oracle DB में नया DB जोड़ने को लेकर उत्साहित नहीं थे, और IT department खुद DB operate करना भी पसंद नहीं करता था
    यहाँ तक कि Excel में नया add-in डालने के लिए भी IT वाले से मिन्नत करनी पड़ती थी। किस्मत अच्छी हो तो किसी दिन अचानक add-in दिख जाता, लेकिन इसमें एक दिन लगेगा, एक हफ्ता लगेगा या एक महीना, पता नहीं
    इसलिए practical तौर पर एकमात्र विकल्प VBA था, और आखिरकार हम analysts द्वारा दो हफ्ते में एक बार इस्तेमाल किए जाने वाले अस्थायी fixed solution को चलाने में सफल रहे

  • एक intelligence agency में काम करते समय अफगानिस्तान में तैनात लोगों के लिए एक app बनाना था। वे जिन computers का इस्तेमाल कर सकते थे वे सिर्फ locked-down Windows XP थे, और कुछ नया install करने का कोई तरीका नहीं था
    पहले से vetted और installed Office से ही सब बंधा था, इसलिए Linux user होने के बावजूद मैं भी Office से बंध गया। pure VBA से काफी सारे Frankenstein बनाए और अच्छी सराहना मिली

    • Middle East में तैनात रहने के नज़रिए से भी मेरा वही अनुभव है। पूरी तरह air-gapped XP computer पर VBA से जितना संभव था उतना automate किया
    • मिलती-जुलती, लेकिन बिल्कुल समान नहीं स्थिति में, मैंने script tag में JavaScript code डाली हुई HTML file से काम चलाया। मशीन air-gapped थी, फिर भी सोचता हूँ कि क्या IE चलाना blocked था, या VBA JavaScript से ज़्यादा convenient था
  • मानना पड़ेगा कि IT आधुनिक दौर का नौकरशाही विभाग है, जो अपनी ही बनाई समस्याओं में 95% व्यस्त रहता है और service orientation करीब 5% है। बाहरी लोगों के लिए process अपारदर्शी होता है और आम तौर पर मददगार नहीं होता
    IBM BPM के विवरण में यह हिस्सा पढ़कर मैं सचमुच हँस पड़ा, क्योंकि यह समस्या के बड़े हिस्से को अच्छी तरह समेट देता है
    “IBM BPM में REST API तो है, लेकिन यह REST API तकनीकी टीमों और छोटे-मझोले व्यवसायों के लिए लगभग बेकार है। कुछ REST calls string-encoded JavaScript इस्तेमाल करती हैं, और दूसरी calls XML के अंदर JSON के अंदर HTML मांगती हैं। database tables को नाम से नहीं, GUID से query किया जाता है। कौन-सा GUID किस table/process से जुड़ा है, इसका कोई documentation नहीं है”
    बहुत-सी चीजें बेहूदा हद तक जटिल हो गई हैं, इसलिए IT के बाहर कोई उन्हें छूना नहीं चाहता, और कभी-कभी IT के अंदर भी नहीं। AJAX के समय से development effort का आधा हिस्सा frontend code और backend services design करने में लगने लगा, जबकि इसका end-user automation की समस्या से असल में बहुत कम लेना-देना है। उसके बाद हालात और खराब हुए, और आज के UI आधुनिक दिखते हैं, लेकिन उन्हें बनाने में इस्तेमाल हुए tech stack जितने ही user-hostile हैं
    Excel में UI बस “मौजूद” होता है, macro recorder नाम का code generator भी है, और IT department मुझसे मेरे permissions के बारे में सवाल नहीं करता या यह नहीं कहता कि मेरे business problem में मदद करने के लिए उसके पास समय और budget नहीं है। इसलिए VBA users के लिए IT department को bypass करने वाला रास्ता है। यह perfect नहीं है, लेकिन बाकी alternatives से बेहतर है

    • VBA ultimate agile programming language है। कंपनी IT, यानी नौकरशाही विभाग, Scrum, Squad जैसी चीजों में बंधा रहता है, लेकिन दूसरे departments के लोग Excel/VBA से काम निपटा लेते हैं
      कुछ भी नहीं बदला। पिछली सदी में भी ऐसा होता था और इसे automation के islands कहा जाता था। उस समय मेरे आसपास इसे अच्छी strategy माना जाता था: departments को पहले इससे खेलने दो, फिर संभावना दिखे तो integrate कर दो
    • अगर आप काफी देर तक ढूँढें, तो किसी भी department में खराब उदाहरण मिल जाएंगे। क्या IT द्वारा manage की जाने वाली चीजों में भी पागलपन की हद तक खराब चीजें होती हैं? बिल्कुल होती हैं। लेकिन यह shadow IT बनाने का अच्छा बहाना नहीं है
      कुछ analysts का मिलकर अपने लिए छोटा-सा VBA tool hack करना मुझे बिल्कुल परेशान नहीं करता। वह spirit तारीफ के काबिल है, और उसके नतीजे में शायद मैं अपने रोजमर्रा के काम को बेहतर समझ भी सकूँ
      परेशानी तब होती है जब वे analysts किसी समय यह उम्मीद करने लगते हैं कि मेरी system architecture उनके personal project के हिसाब से somehow accommodate हो जाए। documentation माँगो तो नहीं है, architecture overview नहीं है, और उस monster के repository access के लिए कहो तो जवाब मिलता है, “repository क्या होता है?”
      वे पूछते हैं कि उनकी spreadsheet मेरे processing pipeline में data inject क्यों नहीं कर सकती, और मानते हैं कि YouTube video आधा देखकर सीखे गए REST के टुकड़े के हिसाब से मुझे controller लिखना चाहिए। meeting में सवाल आता है, “authentication की जरूरत का क्या मतलब है? IT हमेशा चीजों को complicated क्यों बना देता है?”
      चाहे VBA हो, low-code हो या कुछ और, लोगों का tools बनाना अच्छी बात है। मैं भी वही करता हूँ, बस मैं उसे shell script कहता हूँ और Git repository में रखता हूँ। लेकिन जैसे मैं अपने CLI tool को production server पर खुला नहीं छोड़ता, वैसे ही code review से गुजरे बिना किसी चीज को भी वहाँ नहीं छोड़ूँगा
    • मेरी शुरुआती regular software engineering jobs में से एक bank trading floor पर currency trader के बगल में बैठकर काम करना था
      मुझे market risk management के head ने hire किया था, जिसका काम यह सुनिश्चित करना था कि bank एक दिन में बहुत ज्यादा पैसा न गंवाए। उन्होंने मुझे इसलिए hire किया क्योंकि उन्हें भरोसा नहीं था कि officially approved IT department उनके algorithm implementation code को सही से लिखेगा। उदाहरण के लिए, वे एक बार इसलिए गलत हो गए थे क्योंकि वे यह operator precedence नहीं समझ पाए कि multiplication, addition से पहले होता है
      market risk calculation में सभी trades को input के रूप में डालना पड़ता था, और उस समय, 2000 के दशक की शुरुआत में, मैंने desk के नीचे रखे PC पर Apache और Perl CGI install करके एक छोटा app बनाया, जिससे traders trades enter कर सकें और positions track कर सकें। traders इसे official IT solution से ज्यादा पसंद करने लगे, क्योंकि यह इस्तेमाल में आसान था और positions देखना सुविधाजनक था
      कई corporate environments में IT को bypass करने का तरीका ढूँढना एक अहम capability है। Excel पर लौटें तो, traders calculations और simulations के लिए Excel इस्तेमाल करते थे, और हमने Excel में plug होने वाले tools देकर वही leverage करने की कोशिश की जो वे पहले से कर रहे थे
    • article में एक sentence है कि यह company का explicit policy decision है
      “end users को high-level programming language access देना company की technology strategy vision के खिलाफ है” लिखा है
    • जवाब यही है। क्योंकि VBA ही वह एकमात्र programming language है जिसे enterprise install न करने का चुनाव नहीं कर सकता
      “enterprise” का कमाल है। हर बार जब लोग इसे advantage या excuse की तरह पेश करते हैं, तो हैरानी होती है
  • क्योंकि हाल तक कोई अच्छा विकल्प नहीं था। भविष्य नए Office add-ins मॉडल में है: https://learn.microsoft.com/en-us/office/dev/add-ins/overvie...
    TypeScript के बारे में जो भी कहें, कम से कम यह VBA से बेहतर है। हालांकि VBA के उलट, Excel के अंदर सीधे programming नहीं कर पाना एक बड़ी समस्या है। कभी-कभी आप reuse को ध्यान में रखकर कोई पूरा add-in project शुरू नहीं करना चाहते, बस अभी कुछ ठीक करने के लिए एक rough script एक बार चलाना चाहते हैं। इसका उपयोग करते हुए मुझे Script Lab(https://learn.microsoft.com/en-us/office/dev/add-ins/overvie...) के बारे में पता चला, शायद यह मददगार हो सकता है

    • “VBA के उलट Excel के अंदर सीधे programming नहीं कर सकते” — यह तो लगभग deal-breaker है
      ऊपर से एक साफ़ सवाल है। क्या बिना admin अधिकार वाले user IT department की दखल के बिना add-in install कर सकते हैं? क्या इसे spreadsheet में embed किया जा सकता है? अगर पहले का जवाब “नहीं” है तो यह सच में घातक है, और अगर दूसरे का जवाब भी “नहीं” है तो adoption पर बुरा असर पड़ेगा। Macros और VBA का फायदा यह है कि security settings को छोड़ दें तो हर Excel instance बिना किसी extra install के तुरंत चला सकता है
    • Comment के आखिर में Script Lab का ज़िक्र मैंने नहीं देखा था। अगर Microsoft Script Lab है, तो वही यह काम कर सकता है: https://www.microsoft.com/en-us/garage/profiles/script-lab/
      दूसरी समस्या यह है कि end users के साथ add-in share करना मामूली बात नहीं है। इसे marketplace या SharePoint पर publish करना पड़ता है, और sideloading के लिए SMB server और GPO चाहिए। हालांकि एक विकल्प है जिसका कहीं ज़्यादा ज़िक्र नहीं होता: इसे document में include कर दें, तो पहली बार खोलते समय user confirmation के बाद यह install हो सकता है
    • Data entry या visualization के लिए कोई अच्छी UI दिखाने भर के लिए यह ठीक है, लेकिन OfficeJS अफसोस की बात है कि VBA जो कर सकता है उसका आधा भी नहीं कर पाता। अगर add-in system में सिर्फ़ FFI होता, तो मैं हमेशा के लिए switch कर चुका होता
      एक और बड़ी समस्या यह है कि OfficeJS इस्तेमाल करने के लिए web server host कर पाना ज़रूरी है। आम तौर पर ज़्यादातर end users के पास ऐसी access नहीं होती
  • VB(A), Python जैसा है। खूबसूरत नहीं है, लेकिन काम कर देता है। अगर आपको यह खूबसूरत लगता है, तो शायद अनुभव कम है और बेहतर विकल्पों की ज़्यादा जानकारी नहीं है
    ऐसा tool उपयोगी होता है जिसके पास असल काम पूरा करने लायक अच्छा ecosystem हो—यानी tools, libraries और integrations। Desktop app development system के तौर पर Visual Basic, और DB के फायदे के साथ MS Access, कई स्थितियों में बहुत उपयोगी थे। जब बात उससे आगे बढ़ने लायक होती, तो शायद “real” solution तक scale करने के लिए पैसे भी होते
    इसमें कोई शक नहीं कि VBA-based systems से बहुत ज़्यादा पैसा बना। Finance development ज़्यादातर outsider के रूप में करने के अनुभव से, सबसे बड़ा Excel/VBA rewrite उस कंपनी का था जिसने 2008 के आसपास credit default swaps से बड़ा पैसा कमाया था। Rewrite से पहले workbook खुलने में 5 मिनट लगते थे, लेकिन VBA बहुत सारा भारी काम कर रहा था। जिन लोगों के पास knowledge था, वे कंपनी और अपने लिए bonuses के रूप में बड़ा पैसा कमा रहे थे
    इससे सीख यह है कि tool ideal है या नहीं, उससे ज़्यादा महत्वपूर्ण यह है कि वह उन लोगों के लिए accessible है या नहीं जिन्हें उस tool को इस्तेमाल करने के लिए खास तौर पर train नहीं किया गया। Python के client web browser के बाहर नंबर 1 बनने की वजह भी यही है। इसका मतलब यह नहीं कि वह सबसे अच्छा है, बल्कि यह कि वह काम कर देता है और accessible है

    • यह दावा किया जा सकता है कि Python एक खूबसूरत language है; यह classes और first-class functions support वाली पूरी language है, फिर भी अपेक्षाकृत simple और accessible है
      लेकिन उसकी popularity की यही अकेली वजह नहीं है। उसके पास सबसे मजबूत data science tools हैं, जिससे जबरदस्त असर पड़ा, और Django और Flask जैसे ठीक-ठाक web frameworks भी हैं। कई universities में Java की जगह “first learning language” बनना भी उसकी popularity बढ़ने की वजह है। VBA के साथ ऐसा नहीं है
    • Python खूबसूरत है, और मुझे लगता है कि whitespace का उसका इस्तेमाल braces, begin/end, if/else जैसे block-marking तरीकों से बेहतर है
      अनुभव का मतलब यह भी जानना है कि खूबसूरत है या नहीं, इसमें subjective element होता है। VBA “कठोर” परिस्थितियों में evolve हुआ, इसलिए उसकी कुछ अजीब बातें कुछ हद तक समझ आती हैं
    • Python, Scheme नहीं है, लेकिन programming languages में यह निश्चित रूप से काफी खूबसूरत है और कई मामलों में इससे बेहतर विकल्प नहीं है। यह बात दर्जनों languages में लगभग 25 साल programming करने के आधार पर कह रहा हूं
  • VBA एक ठीक-ठाक भाषा है जो object-oriented programming को support करती है। inheritance नहीं है, लेकिन composition संभव है। यह Excel तक गहराई से पहुंच और control दे सकती है, और mature व stable है। वजह यह है कि Microsoft अब इसमें बड़े बदलाव नहीं करता
    “असली programmers” VBA को इसलिए नापसंद करते हैं क्योंकि आम तौर पर business users द्वारा लिखा गया amateurish spaghetti VBA code बहुत होता है, और कभी-कभी programmers से उसे debug करने के लिए कहा जाता है

    • जवाब में कहा जाए तो VBA, Excel, Word आदि तक पहुंच और control कर पाने के अलावा एक भयानक भाषा है
      इसमें अजीब विशेषताएं भरी हैं, जैसे code में control characters का localized हो जाना।[1][2] अगर आप चाहते हैं कि आपका code non-English installations पर भी चले, तो Application.International(xlDecimalSeparator) जैसे placeholders का उपयोग करके उस function को pass की जाने वाली strings को dynamic तरीके से बनाना पड़ता है, और code की readability काफी घट जाती है। इस वजह से code टूटे तो error messages अविश्वसनीय रूप से बेकार होते हैं, और अगर developer को यह पता न हो कि यह VBA की संभावित समस्या है, तो इसे reproduce करना लगभग असंभव है। reproduce करने के लिए interface language को ऐसी भाषा में बदलना पड़ता है, जो शायद आपको आती भी न हो
      कम-से-कम Word में, मौजूदा paragraph के बाद paragraph insert करने जैसे सबसे उपयोगी functions में से करीब आधे, table cell के आखिरी paragraph में इस्तेमाल करने पर टूट जाते हैं, इसलिए ढेर सारे spaghetti-style workarounds चाहिए होते हैं
      अगर आप DOM element के innerHtml property को reference करने की तरह, कई formatting styles वाले text strings को भेजना-लाना चाहते हैं, तो hacky script-based selection और copy/paste के बिना यह आसान नहीं है
      किसी ने दूसरे thread में इसकी तुलना Bash से की थी, और मैं सच में सहमत हूं। किसी भी भाषा में इससे जटिल चीजें नहीं लिखनी चाहिए
      [1] https://stackoverflow.com/questions/20652409/using-vba-to-de...
      [2] https://stackoverflow.com/questions/29832281/vba-range-funct...
    • मैंने VBA library(https://github.com/sancarn/stdVBA) बनाने में बहुत समय लगाया है और मुझे VBA पसंद है, लेकिन इसमें वास्तविक समस्याएं हैं जो भाषा पर बड़ी सीमाएं लगाती हैं(https://sancarn.github.io/vba-articles/issues-with-vba.html)
      हालांकि यह भी सही है कि VBA को मिलने वाली नफरत का बड़ा हिस्सा VBA projects की स्थिति से भी आता है(https://sancarn.github.io/vba-articles/why-is-vba-most-dread...)
    • On Error Resume Next जैसी खराब सुविधा वाले environment को संदेह की नजर से देखना मुझे उचित लगता है
  • Excel और पूरी spreadsheets category को देखें तो, बाहर के बहुत से लोग यह ठीक से नहीं समझते कि spreadsheet language ने reactive functional programming को कितना अच्छे से implement किया है। यही वह चीज है जिसे React/Angular 10 से ज्यादा releases तक सही करने की कोशिश करते रहे हैं
    साथ ही बहुत से लोग यह नहीं समझते कि end users के लिए spreadsheets इतनी सुविधाजनक क्यों हैं, और नतीजतन वे inferior UI देते हैं जो असल में चीजों को और कठिन बना देता है
    कभी-कभी एक कदम पीछे हटकर समझना चाहिए कि graphical UI न होने के दौर में भी पुराने लोगों ने चीजें सही की थीं। शुरुआती दौर में भी business चल रहा था, और अधिकतर समय कंपनियों को जिस चीज की जरूरत होती है, वह है tabular view और उस पर reactive function calculations करने का विकल्प। छोटे-मझोले business में काम करने वाले किसी दोस्त से पूछेंगे तो वह इसकी पुष्टि कर देगा

    • web development में लगने वाली मेहनत का बड़ा हिस्सा presentation पर जाता है। अगर आपको सिर्फ data चाहिए, तो spreadsheet से बेहतर होना मुश्किल है—इस बात से मैं सहमत हूं
    • Excel को अब तक आविष्कृत सबसे अच्छा end-user IDE माना जा सकता है