Ryan Potts के साथ एक इंटरव्यू, जिसमें वे और Jeremy Walker Delphi पर, Exercism में योगदान देने से सीखी गई बातों पर, और उन उद्योगों में प्रोग्रामिंग के अपने अनुभवों पर बात करते हैं जो अब भी "ऑफलाइन" हैं।
नमस्ते Ryan। मेरे साथ बातचीत के लिए समय निकालने के लिए धन्यवाद। आप Exercism पर Delphi ट्रैक के मेंटेनर हैं। आपकी Delphi से शुरुआत कैसे हुई?
मैं उस कंपनी में काम करता हूँ जिसकी शुरुआत मेरे पिता ने की थी। यह कंपनी 80 के दशक से सॉफ्टवेयर बना रही है, शुरू में Microsoft Pascal से और बाद में Borland के Turbo Pascal से। मैं '96 में इस कंपनी में काम करने आया। उस समय कंपनी को ऐसा सॉफ्टवेयर बनाने के अनुरोध मिल रहे थे जो DOS की जगह Windows पर चले। अच्छी बात यह थी कि Borland ने हाल ही में Delphi 1 जारी किया था। यह हमारे लिए बिल्कुल उपयुक्त था, क्योंकि सालों में बनाई गई ज़्यादातर यूनिटें अब भी इस्तेमाल की जा सकती थीं। अब Windows को सपोर्ट करने के लिए हमें VB या VC में सब कुछ शुरू से बनाने की ज़रूरत नहीं पड़ी।
और आप आज भी रोज़ाना Delphi इस्तेमाल करते हैं?
हाँ। जहाँ मैं काम करता हूँ, वहाँ ऑटोमोटिव उद्योग के लिए R&D टेस्टिंग और छोटे बैच की टेस्टिंग की मशीनें बनती हैं। इनमें टायर, कार सीट और एयरबैग इन्फ्लेटर की टेस्टिंग के साथ क्रैश टेस्टिंग भी शामिल है। यहाँ बनाई गई सारी सिस्टमें दुनिया भर के कई कार निर्माताओं और उनके सप्लायरों द्वारा इस्तेमाल की जाती हैं।
जिस सॉफ्टवेयर पर मैं काम करता हूँ, उसका उपयोग इन तरह-तरह की मशीनों को नियंत्रित करने के लिए होता है। मैं UI बनाता हूँ, टेस्ट के अपने-आप चलने वाले हिस्सों के लिए टेस्ट क्रम तय करता हूँ, और एनालॉग व डिजिटल दोनों तरह के इनपुट-आउटपुट पॉइंट जोड़ता हूँ। इसे यथासंभव यूज़र-फ्रेंडली होना चाहिए, ताकि बहुत कम प्रशिक्षण पाए व्यक्ति को भी इसे चलाने में काफी सहजता महसूस हो।
मेरे काम में वेब प्रोग्रामिंग की कोई ज़रूरत नहीं होती। मैं जो कुछ भी करता हूँ, वह Windows पर Delphi में होता है। कभी-कभी मुझे C++ में एक छोटा "कस्टम कमांड" बनाना पड़ता है, जिसे फिर मैं डेटा एक्विज़िशन प्रोसेसर बोर्ड में अपलोड करता हूँ। यह एक समानांतर कंप्यूटर है जो कंप्यूटर के PCI स्लॉट में लगा रहता है। इसका अपना CPU, मेमोरी और OS होता है।
किसी ऐसे व्यक्ति से बात करना दिलचस्प है जो वेब प्रोग्रामिंग बिल्कुल नहीं करता। आज यह काफी असामान्य लगता है, लेकिन मुझे लगता है कि यह शायद उस सिग्नल/नॉइज़ अनुपात का असर है जो मैं रोज़ सुनता हूँ, न कि उद्योग की असल तस्वीर।
हाँ, Exercism से जुड़ने के कारण मुझे यह देखने का मौका मिला कि कंप्यूटर उद्योग में "दूसरा आधा" हिस्सा कैसे रहता है। मैंने टेस्ट ड्रिवन डेवलपमेंट (TDD), GitHub पर काम करने, और ओपन सोर्स प्रोजेक्ट पर काम करने के बारे में बहुत कुछ सीखा। मैंने जो कुछ सीखा, उससे मेरे नौकरी के काम की गुणवत्ता बेहतर हुई है।
यह सुनकर बहुत अच्छा लगा। Exercism में मुझे सबसे ज़्यादा जो चीज़ पसंद है, वह यही "दूसरा आधा कैसे रहता है" वाली भावना है, यानी अपनी सारी अनदेखी जगहों को पहचानना और ऐसी चीज़ों के बारे में सीखना जिनके होने का अंदाज़ा भी आपको नहीं था। मुझे लगता है कि ट्रैक मेंटेनर होने से यह सीखना और भी बढ़ गया होगा?
हाँ, बिल्कुल। मैं अब पहले की तुलना में ज़्यादा टेस्ट लिखता हूँ। यह हमेशा टेस्ट ड्रिवन डेवलपमेंट नहीं होता, कभी-कभी टेस्ट पहले के बजाय बाद में आते हैं। फिर भी, इसने मेरे कोड को व्यवस्थित करने के तरीके को प्रभावित किया है। मैं टेस्टिंग आसान बनाने के लिए अनावश्यक निर्भरताएँ हटा देता हूँ।
मैं problem-specifications रिपॉजिटरी में इश्यू और PR देखने में बहुत समय बिताता हूँ। यहीं हम Exercism के अभ्यासों को भाषा से स्वतंत्र तरीके से परिभाषित करते हैं। इन चर्चाओं से मैंने बहुत कुछ सीखा है। कभी-कभी कोई सुझाया गया बदलाव ऊपर से आसान लगता है, लेकिन उसके बाद की बातचीत कई समस्याएँ सामने ले आती है। मुझमें और धैर्य आया है। इसने मुझे सिखाया है कि काम की तकनीकी समस्याओं को दूसरे संभावित नज़रिए से भी देखूँ।
मैंने मेंटर के बारे में भी और सीखा है, खास तौर पर यह समझना कि असल "क्यों" जानना कितना ज़रूरी है, केवल "कैसे" जानने के बजाय। मैं कुछ अन्य प्रोग्रामरों के साथ काम करता हूँ। हालाँकि मैं उनमें से ज़्यादातर से छोटा हूँ, लेकिन मैं उनसे पहले से कंपनी में हूँ। अक्सर मैं यह बता सकता हूँ कि किसी मशीन के संचालन का क्रम तय करने का ज़्यादा कारगर तरीका क्या होगा, या यह समझा सकता हूँ कि कोई काम किसी खास तरीके से क्यों करना ज़रूरी है।
Exercism के अलावा आप Delphi MVP भी हैं, जो काफी शानदार बात है! यह कैसे हुआ? क्या ऐसा कोई मज़बूत Delphi समुदाय है जिसका हिस्सा आप हैं?
Delphi ट्रैक शुरू करने के शुरुआती चरणों में मैंने Embarcadero में Jim McKeeth जी से संपर्क किया, यह देखने के लिए कि क्या हमें Delphi के लिए ओपन सोर्स लाइसेंस मिल सकता है। इससे हमें नए अभ्यास बनाने के लिए Delphi इस्तेमाल करने की अनुमति मिलती, और लोग पुल रिक्वेस्ट के ज़रिए योगदान दे सकते। हमारी बातचीत के दौरान ही Jim ने मुझे Embarcadero MVP Program में शामिल होने का न्योता दिया।
Delphi Praxis एक ऑनलाइन समुदाय है जिससे मैं परिचित हूँ। Google+ पर काफी गतिविधि है, लेकिन वह खत्म होने की राह पर है, इसलिए हमें कहीं और जाना पड़ता है।
क्या आपने Delphi में कोई ऐसा ओपन सोर्स ऐप बनाया है जिसे दूसरे देख सकें?
हाँ बनाया है! Exercism का Windows CLI इंस्टॉलर ओपन सोर्स है और पूरी तरह Delphi में लिखा गया है। यह अपने-आप पता लगा लेता है कि विद्यार्थी को Exercism CLI का कौन-सा सही संस्करण (32/64 बिट) चाहिए, फिर CLI डाउनलोड करता है, उसे खोलता है, और सही जगह पर रख देता है। यह इंस्टॉलर 15,000 बार डाउनलोड हो चुका है, जिस पर मुझे काफी गर्व है!
यह तो शानदार उपलब्धि है! ऐसे व्यक्ति के तौर पर जो इंटरनेट प्रोग्रामिंग बहुत कम (या बिल्कुल नहीं) करता है, Delphi में इंस्टॉलर बनाते समय आपके सामने कौन-कौन सी चुनौतियाँ आईं?
यह इंस्टॉलर शुरू में C# में लिखा गया था। वह पुराना हो चुका था, और मैंने तय किया कि देखूँ क्या मैं उसे बेहतर बना सकता हूँ। मैंने पहले कभी ऐसा कुछ करने की कोशिश नहीं की थी, लेकिन मुझे पता था कि Delphi में यह काम पूरा करने के साधन मौजूद हैं। मैंने सबसे पहले मूल C# कोड को पढ़ना शुरू किया, ताकि समझ सकूँ कि पर्दे के पीछे घटनाओं का क्रम क्या चल रहा था, और फिर वही काम Delphi में करने की कोशिश की। मुझे Embarcadero की डॉक्युमेंटेशन साइट पर नमूना कोड मिला, जिसने यह समझाने में मदद की कि REST क्लाइंट बनाने के लिए उपलब्ध कंपोनेंटों को ठीक तरह से कैसे जोड़ा जाए। मुझे Delphi के साथ मिलने वाली एक काम की यूटिलिटी भी मिली, जिसका नाम REST Debugger है। इसकी मदद से मैं वे अलग-अलग HTTP कॉल डालकर जाँच सका जो इंस्टॉलर को सफल बनाने के लिए ज़रूरी हैं। जब ये काम करने लगते हैं, तो डीबगर ज़रूरी कंपोनेंटों की प्रतियाँ बना देता है, ताकि मैं उन्हें कोड में चिपका सकूँ।
जो कोई Exercism में और गहराई तक जाना चाहता है, शायद वह जो मेंटेनर बनने की उम्मीद रखता है, क्या आप उसे अपनी यात्रा के बारे में बता सकते हैं?
मैं Akron Code Club नाम के एक स्थानीय मीटअप ग्रुप का सदस्य हूँ। महीने में लगभग एक बार हम मिलते हैं और आमतौर पर जोड़ियों में बँटकर कोई ऐसा कोड काटा करते हैं जो ग्रुप को सुझाया गया हो। अगस्त 2016 की मीटअप में हमने Exercism के दिए अभ्यास करने शुरू किए। जैसे-जैसे मैं Exercism और कुछ अन्य शिक्षण साइटों का उपयोग करता गया, मुझे लगा कि अच्छा होता अगर इनमें से ज़्यादा ऑनलाइन प्रोग्रामिंग साइटें Delphi या Pascal को विकल्प के तौर पर देतीं। Exercism की साइट और Exercism के GitHub रिपॉजिटरी देखने के बाद मुझे पता चला कि Exercism नए भाषा ट्रैक जोड़ने में हमेशा रुचि रखता है। मुझे ठीक से पता नहीं था कि Katrina से संपर्क करने का सबसे अच्छा तरीका क्या है। मुझे लगता है कि अगस्त '16 में मैंने Delphi जोड़ने का प्रस्ताव देने के लिए Gitter पर उनसे संपर्क किया। करीब दो महीने बाद मुझे माफी भरा जवाब मिला। तभी मुझे एहसास हुआ कि वे Gitter इस्तेमाल नहीं करतीं। खैर, उन्होंने पूछा कि क्या मुझे अब भी Delphi Pascal ट्रैक जोड़ने में रुचि है, और अगर हाँ, तो वे शुरुआत करा देंगी।
अब एक रिपॉजिटरी है जिसका उपयोग आप नए भाषा ट्रैक का अनुरोध करने के लिए कर सकते हैं, और प्रोजेक्ट के मेंटेनरों से संपर्क करने के लिए आप exercism/exercism रिपॉजिटरी में हमेशा इश्यू खोल सकते हैं।
बहुत बढ़िया। मेरे साथ बातचीत करने के लिए और Exercism पर आपके सारे काम के लिए धन्यवाद!
मुझे खुशी हुई! यह मज़ेदार रहा। मुझे Exercism में हिस्सा लेना और अपनी ओर से जो हो सके करना अच्छा लगता है। करके सीखना!