
मैं अक्सर उन प्रौद्योगिकियों की आलोचना करता हूं जो मुझे गलत लगती हैं, और बदले में मुझे न केवल तर्क मिलते हैं, बल्कि एकमुश्त द्वेष, नाराजगी और यहां तक कि चेहरे में भी।
प्रौद्योगिकी को संबोधित इंजेक्शन डेवलपर्स द्वारा अपने स्वयं के खर्च पर विकसित किए जाते हैं। उपकरण पंथ एक बहुत ही अजीब बात है जिसे तार्किक रूप से समझाया नहीं जा सकता है। कुछ का कहना है कि हर किसी के पास एक पंथ है, क्योंकि सोच बहुत कसकर याप के साथ जुड़ी हुई है। दूसरों का कहना है कि यह एक कनिष्ठ बीमारी है - आपने पहली बार कुछ लिखा था, यह हुआ, खुशी से बाहर आपने सोचा कि आपका याप भगवान का चमत्कार था।
जो भी हो, मैंने इस कचरे को कभी नहीं समझा।
दोषों के समर्थक मुझे अगम्य डम्बेस लगते हैं। और मैं हमेशा यह समझने की कोशिश करता हूं कि डंबेस कैसे डंबेस बन गए, और मैं डंबास क्यों नहीं बना। सोचने लगा और बम! - मुझे एहसास हुआ कि मैंने किया। मैं एक गूंगा कृषक हूं जो F # की प्रशंसा करता है। और निश्चित रूप से इसके पीछे एक कहानी है।
मैंने अपना करियर एक जूनियर सी # देव के रूप में शुरू किया। कच्चे तो Xamarin, Android के लिए विकास। पहली नौकरी में पहला कदम दर्द से भरा था। मैंने अकेले iOS संस्करण से स्क्रीनशॉट और gif का उपयोग करके एप्लिकेशन बनाया। सब कुछ एक बार काम कर गया, बहुत सारी समस्याएं थीं, और मुझे जो एकमात्र प्रतिक्रिया मिली वह थी "चित्र में क्यों नहीं?"। यह एक बुरा सपना था, और मैं जल्दी से चला गया।
उन्होंने छह महीने तक घर पर पढ़ाई की, फिर बड़े आउटस्टाफ में नौकरी कर ली। लोगों के रूप में सब कुछ था - टीम, संरक्षक, परीक्षा, पैटर्न, कोडरेव्यू, सख्त लिंटर, गुणवत्ता, पठनीयता और कोड प्रदर्शन के लिए उच्चतम आवश्यकताएं। एक शब्द में - एक वयस्क दृष्टिकोण। मैंने निश्चित रूप से अपने लिए फैसला किया - यह वही है जो करने की आवश्यकता है। लेकिन यह पता चला कि यह बुरा सपना और भी बुरा है।
एक वर्ष से अधिक समय तक, हमने एक टूल के लिए एक मॉड्यूल की एक पूरी टीम बनाई है जो टूल को विकसित करने के लिए डिज़ाइन किए गए टूल के साथ काम करता है। शायद वही जो हमें मॉड्यूल बनाने की आवश्यकता है। हर दिन हमें भारतीयों या अमेरिकियों को फोन करने के लिए मजबूर किया गया था, और यह स्पष्ट नहीं है कि क्या रिपोर्ट करना है।
कुछ बिंदु पर, मैंने देखा कि मैं कम और कम कर रहा था, लेकिन कुछ भी नहीं बदल रहा था। टूटी-फूटी अंग्रेजी में, मैंने खुलकर झूठ बोला: “बग के लिए ऑल पास्ट विक सेर सेर्च। स्टील जानते हैं सैक्स। विले महाद्वीप »
"ओके फिल, बहुत अच्छा लगता है," विदेशों में कहा।
एक बार, अपनी बेकार की शर्म और निराशा के कारण, मैं अपने वरिष्ठ अधिकारियों के पास गया और मुझे निकाल दिया, लेकिन किसी कारण से उन्होंने मेरा वेतन बढ़ा दिया।
इसके बारे में मैंने पहले ही कहा है । मैं न तो मज़ेदार था और न ही हर्षित - यह एक आत्मघाती सूर था, जैसे कि बेकार की दुनिया ने तर्क की दुनिया को हरा दिया था।
एक अजीब विरोधाभास, लेकिन एक ही समय में ऊब और अति-महत्वाकांक्षा से बाहर, मैंने घर पर एक कूल डेवलपर खेलने का फैसला किया। बहुत सारे विचार हमेशा मेरे दिमाग में घूमते रहे हैं कि कैसे सॉफ्टवेयर परियोजनाओं की मदद से दुनिया और आपके बटुए को बेहतर बनाया जाए। मैंने सब कुछ ठीक किया। VSTS में TK, आर्किटेक्चर, सिस्टम आवश्यकताएँ, प्रोजेक्ट। सभी एक वयस्क तरीके से, बस निगमों की तरह।
निखर ने काम नहीं किया।
तय किया - विचार बकवास है। कचरा कोड, मैं एक नया विचार लेता हूं, छोड़ दिया, सब कुछ कई बार दोहराता है। मैं अपने सहयोगियों को बताता हूं, वे हैरान हैं। ऐसा कैसे? आखिरकार, मैं सबकुछ ठीक वैसा ही करता हूं जैसे कि पहले ही उनका टुकड़ा छीन चुके हों।
मेरे आत्मसम्मान वाला व्यक्ति आमतौर पर दूसरों की तुलना में जीना आसान होता है, लेकिन भुगतान करने के लिए बहुत खर्च होता है। आपको अपनी विफलताओं के साथ उच्च-गुणवत्ता वाले आत्म-धोखे की आवश्यकता है। और मैंने खुद से कहा: कोई भी डेवलपर कुछ भी कर सकता है। पूरा सवाल यह है कि यह कैसे किया जाएगा। और इस "कैसे" के लिए मेरी आवश्यकताएं बहुत अधिक हैं। वे घर "स्टार्टअप" के लिए उपयुक्त नहीं हैं और वे बेकार व्यावसायिक कार्यों के योग्य नहीं हैं। निम्नलिखित विचार: "मैं अपने गुणवत्ता मानकों को छोड़ने के लिए तैयार नहीं हूं।" यहां तक कि अगर आपको टैपू को स्क्रीन पर लाने के लिए एक एप्लिकेशन बनाने की आवश्यकता है, तो मैं इसे उच्च-गुणवत्ता और विचारशील बनाऊंगा जितना मैं कर सकता हूं।
नतीजतन, मैंने घर पर स्थानीय कार्गो व्यवसाय पंथ की व्यवस्था की। वह अनुष्ठान, प्रक्रियाएं, आदेश लाए, लेकिन सामग्री नहीं। मैंने बस एक व्यवसाय के बिना एक व्यवसाय डेवलपर की भूमिका निभाई, जैसे कि पपुआन, जिसने पुआल से एक रनवे और टावरों को अंधा कर दिया था, और अब वह उम्मीद करता है कि लोहे के पक्षी वहां बैठेंगे, जैसे पड़ोसी द्वीप पर अजीब लोग।
मैंने औपचारिक कोड के अविश्वसनीय ढेर लिखे, जो मुझे परिणाम के करीब नहीं लाए, लेकिन इसके विपरीत, मैं इधर-उधर भटकता रहा। मेरा करियर है, धिक्कार है, असफलताओं और निराशाओं की कहानी। मैंने सब कुछ उगल दिया, अपने आप को समाप्त कर लिया और काम पर सिर्फ टीवी शो देखा, 16 कप कॉफी पी और आधे दिन तक धूम्रपान किया।
नीचे आकर, बिल्कुल दुर्घटना से मैंने F # के बारे में Habré पर एक लेख पढ़ा, मैंने कोशिश की, और ऐसे: “Hm! बुरा नहीं है। ” मेरे नियोक्ता ने मुझे खुशी से एक महीने का प्रशिक्षण दिया (हालांकि, उन्हें इस बारे में जानकारी नहीं है)।
एफ # सीखना मुश्किल नहीं था, इसमें सी # के समान रनटाइम है, और मैंने टाइपस्क्रिप्ट में हर दिन प्रोग्रामिंग के लिए कार्यात्मक दृष्टिकोण लागू किया। और इसलिए मुझे एहसास हुआ कि मैं अपनी किसी भी परियोजना को F # में स्थानांतरित कर सकता हूं। चलो मेरी तकनीकी कौशल को कोष्ठक के बाहर छोड़ दें, क्योंकि कौशल एक सापेक्ष चीज है। जिन टीमों में मैं अभी काम करता हूं, मैं शांत हूं, और टीम में, एफ # डेवलपर्स, मैं दावा कर सकता हूं, सबसे अधिक, सहायक क्लीनर की स्थिति।
लेकिन अपने स्तर पर मैं पहले से ही समस्याओं को हल करने में सक्षम था। हालाँकि गहरी बात मैं अच्छी तरह जानता था - मैं कुछ भी तय नहीं करूँगा। बस मेरे दिमाग की बारी है और कचरे में ज्ञान फेंकने के लिए जारी है। मैंने विकास में पूरी तरह से विश्वास खो दिया।
और एक दिन मैंने फैसला किया कि मैं यह सब बकवास छोड़ दूंगा। यह सर्दी, ठंड और अंधेरा था। मैंने दफ्तर को सड़क पर छोड़ दिया, एक चक्कर में पड़ गया - यह शुरू नहीं होगा। अंत में इंजन फट गया। मुझे नहीं पता कि पहले क्या हुआ था - या तो मुझे जलने की गंध महसूस हुई, या मैंने धुआं देखा। फिर हुड के नीचे से एक ज्वाला निकली। एक और दूसरा, और मैं, एक साइको की तरह, पार्किंग स्थल के चारों ओर दौड़ता हूं और अपनी कारों को खदान से दूर चलाने के लिए सभी को चिल्लाता हूं।
पांच मिनट की घबराहट और अराजकता के बाद, गंदगी का एक पुराना जला हुआ टुकड़ा और सभी प्रकार के मूर्खों का एक विदुष्का था, जो तब स्थानीय "अनसुना" में हजारों दृश्य प्राप्त करता था। माइनस 30, मैं एक आदमी की शरद ऋतु की जैकेट में हूं जो एक गर्म कार में घर जाने वाला था। अंत तक भर गया, पूरी तरह से नैतिक रूप से टूट गया। कोई टैक्सी पैसा, मोबाइलों के लिए सार्वजनिक परिवहन। मैं दस किलोमीटर पैदल चलकर घर गया। घर पर, आपको अपनी पत्नी और बच्चे की मदद करने, खाने, बिस्तर पर रखने और एक हजार काम करने की ज़रूरत है। लेकिन रात आती है, विचलित करने वाली चीजें समाप्त होती हैं, बहाने भी, और मैं निराशा और अनिद्रा के साथ अकेला रह गया हूं - मैं कुछ भी नहीं के लिए अच्छा हूं, कुछ भी कभी भी काम नहीं करेगा।
मेरे जीवन की इस सबसे खराब शाम में, अभी तक गर्माहट नहीं है, मैंने खुद को एक आखिरी कोशिश देने का फैसला किया।

मैं बैठ गया और एफ # में एक छोटा सा डिजिटल बायोम लिखने का फैसला किया, जहां मशीन लर्निंग यूनिट्स खुद के साथ बातचीत करेंगे, विकसित करेंगे, और मैं मापदंडों को मोड़ूंगा और देखूंगा कि वे इस दुनिया को क्या मोड़ देते हैं।
और हां, शायद तब मैंने थोड़ा दिमाग खटखटाया।
आमतौर पर मैं एक टॉप-डाउन और बॉटम-अप डिज़ाइन दृष्टिकोण के मिश्रण का उपयोग करता हूं। मैं pseudocode का उपयोग करके सामान्य शब्दों में समाधान का वर्णन करता हूं। फिर मैं विवरण के सबसे महत्वपूर्ण को लागू करना शुरू करता हूं, जो कि स्वतंत्र मॉड्यूल के रूप में, मैं इसके विपरीत करता हूं। विवरण से सामान्य करने के लिए।
पहले से ही छद्म कोड के बिना, मैं तीन बड़े मॉड्यूलों के एक जोड़े को लागू करता हूं, और देखें कि क्या यह काम करेगा। आमतौर पर, यह काम नहीं करता है, और मैं पुनरावृत्तियों का उपयोग करना शुरू कर देता हूं, इस प्रक्रिया को शुरू से अंत तक दोहराता है। लेकिन अधिक बार मैं सिर्फ पुनरावृत्तियों को पांचवें या छठे पर फेंक देता हूं।
एफ # के साथ, मैंने उसी दृष्टिकोण को लागू किया। मेरे पास परियोजना की दृष्टि थी, सामान्य शब्दों में। सिर में ईंट से ईंट, अहसास बन रहा है। आप एक के बाद एक मामले पर सोचते हैं, और कुछ बिंदु पर आप समझते हैं - सब कुछ, आप पहले से ही जानते हैं कि इसे कैसे कोड करना है। और फिर आप कोड के लिए बैठते हैं, और आप समझते हैं कि नहीं। विचार वाईपी को हस्तांतरित नहीं किए जाते हैं, हालांकि यह आपको लगता है कि आप इस पर सोचते हैं। मेरे पास यह लगातार है।
लेकिन यह अलग हो गया। मैंने VSCode में एक txt फ़ाइल बनाई, और एक फ़ंक्शन के लिए एक छद्म कोड लिखा, जो मेरे आवेदन के जीवन चक्र का वर्णन करता है। और मुझे महसूस हुआ कि मेरा छद्म कोड F # मान्य है। कुछ भी बदलने की जरूरत नहीं है, मैंने सिर्फ प्रोजेक्ट का मुख्य कार्य लिखा है। ठीक है, फ़ाइल एक्सटेंशन को बदल दिया, इसे एक साफ समाधान में जोड़ा। यहाँ जीवन चक्र कार्य है। यह दुनिया की वर्तमान स्थिति लेता है, वह चीज जो इसे संसाधित करती है (वास्तव में दुनिया खुद) और अद्यतन स्थिति को बाहर निकालती है, वह चीज जो राज्य को AI और इसके विपरीत के मापदंडों के समूह में बदल देती है, और AI स्वयं, जो अपने मापदंडों को प्राप्त करता है, निर्णय को थूकता है।
फिर सब कुछ सरल है। उन्होंने एक राज्य लिया, एआई मापदंडों में बदल दिया, एआई कार्यों को खिलाया, परिणाम को एक राज्य में बदल दिया, बदले में उन्होंने इसे गेम फ़ंक्शन के लिए दिया, और परिणाम उसी जीवन चक्र फ़ंक्शन को दिया गया। दिव्य पुनरावृत्ति, सरल एल्गोरिथ्म, सुंदर कोड, सभी GOF बॉक्स से बाहर। यह इन सभी कार्यों को लागू करने के लिए बनी हुई है।
लेकिन यहाँ मुद्दा यह है कि मुझे अब वास्तुकला के बारे में सोचने की आवश्यकता नहीं है। मैं लिखता हूं कि शार्प-जाविस कूल टर्म इन्वर्टर ऑफ कंट्रोल कंटेनर कहते हैं - एक फ़ंक्शन जो एक जीवन-चक्र फ़ंक्शन को लेता है और इसे मेरे मॉड्यूल (II, गेम) से फ़ंक्शन मापदंडों में फेंक देता है। VScode इसे लाल रंग में रेखांकित करता है, क्योंकि इनमें अभी तक कोई मॉड्यूल या फ़ंक्शन नहीं हैं। लेकिन मुझे मुख्य बात मिल गई - जैसे ही लाल रेखांकन गायब हो जाता है और परियोजना का निर्माण किया जा सकता है, समाधान तैयार है।
मैं बस इसे लेता हूं और इन मॉड्यूल को एक समय में लागू करता हूं, उसी तरह से काम करता हूं। पूरा प्रोजेक्ट पांच फाइलों का है। एआई फ़ाइल - 500 लाइनें, कई, लेकिन मुहावरेदार। दृष्टिकोण की सुंदरता यह है कि मैं एक कामकाजी जीवन-चक्र फ़ंक्शन लिखने में सक्षम था - मेरे आवेदन का दिल - बिना कुछ और वर्णन किए।
पूरी वास्तुकला एक मिनट में लिखे गए कोड की 10 पंक्तियाँ हैं। कोई इंटरफेस, अमूर्त कारखानों, Iocs, इन सभी DefaultInterfaceNameClass और अन्य बकवास जो मुझे C # में करने की आवश्यकता है, इससे पहले कि मैं यह भी समझूं कि मैं क्या करना चाहता हूं। आप एक गूंगा कोड लेते हैं और लिखते हैं जो समस्या को हल करता है, और आप इसे इन जावा शार्प पर पीड़ित अपने उद्यम से भी बेहतर पाते हैं।
मैंने संपादक में अपने विचारों को चलाकर ऐसा किया, जैसे कि मैं एफ # में सोच रहा था। उन जगहों पर जहां मैं कोड में टिप्पणियों में C # में एक कार्य योजना लिखूंगा, मुझे काम के कार्यों का पता चला। दर्जनों का वर्णन करने के बजाय, और फिर सैकड़ों इंटरफेस, एप्लिकेशन के डोमेन मॉडल के साथ एक छोटी फ़ाइल। इसका निर्माण करो। काम करने का हल मिल गया। रात के लिए। एक अच्छे कोड के साथ, जो बाद में कुत्ते पर दिखाने से डरता नहीं था। इतना सरल।
सुबह मैंने काम करने के लिए लिखा था कि मैं बीमार था, और एक सप्ताह के लिए परियोजना में सिर चढ़ गया, जब तक मुझे एहसास हुआ कि मेरे विचार को लंबे समय तक महसूस किया गया था और किसी को भी इसकी आवश्यकता नहीं थी। लेकिन मैंने अपना विश्वास वापस पा लिया, और यह मुख्य बात थी।

मुझे नहीं पता कि यहां क्या मामला है - एफ # सबसे भयानक तकनीक है, या यह सिर्फ मुझे बहुत अच्छी तरह से सूट करता है, या यह विशेष रूप से ऐसे कार्यों के लिए बनाया गया है - क्या अंतर है? महत्वपूर्ण बात यह है कि उस समय मैं डूब रहा था, और मुझे एक जीवनदान की आवश्यकता थी। जीवन ने मुझे एफ # फेंक दिया और मैं बाहर हो गया। अब यह मेरे लिए सिर्फ स्मृतिहीन तकनीक नहीं है - यह एक बहुत बड़ा भावनात्मक दायरा है।
जब कोई मुझ पर हंसता है F #: “स्टिलबोर्न तकनीक! नर्ड के लिए एक खिलौना ... "- मैं तुरंत सर्दियों के अंधेरे, एक जलती हुई कार, मेरे होंठों को एक सिगरेट, एक उदास राज्य और एफ # को याद करता हूं जिसने मुझे इससे बाहर निकाला। यही है, वे मेरे सबसे अच्छे दोस्त को बकवास करने के लिए लग रहे थे। मेरी प्रतिक्रिया स्पष्ट है - मैं नाराज हूं, और मैं नाराज हूं।
यह बाहर से अजीब लगता है, लेकिन अगर आप मेरे बजाय उस दिन रहते, तो आप भी प्रतिक्रिया देते। मुझे लगता है कि सभी प्रौद्योगिकी के साथ ऐसा ही है। उन्हें अपनी यापियों से प्यार हो गया, क्योंकि जिन परिस्थितियों में वे उनसे मिले, वे व्यक्तिगत रूप से उनके लिए बहुत तीव्र हैं। और यहाँ मैं आता हूं, और उनकी आत्माओं में थूकता हूं। भला, और कौन मूर्ख है? मैं एक बेवकूफ हूं। उम्मीद है कि मैं जीत नहीं पाऊंगा
कुछ भी हो, तो F # के बारे में।