यह अच्छा है कि आपके पसंदीदा उपकरण के निर्माता ने साइकिल का आविष्कार करने पर गधों की बात नहीं सुनी



पिछली गर्मियों में, दोस्तों और मैंने अपने काम के बारे में बात की, जिसे हमारे ग्राहक ने स्वीकार नहीं किया और कूड़े में फेंक दिया। हमने बमबारी की, क्योंकि हम अपने फैसले पर विश्वास करते थे, और इसके बारे में समुदाय को बताया - सामान्य डेवलपर्स निश्चित रूप से इसकी जांच करेंगे और किसी भी बकवास के लिए विनिमय नहीं करेंगे।

ठीक है, बिल्कुल। हम आलोचना की लहर से सचमुच बह गए। बहुत से लोग ऐसे थे जिन्हें मेरा दंभ पसंद नहीं आया और मैं व्यक्तिगत रूप से - यह ठीक है, मुझे उनसे कोई समस्या नहीं है। मुझे प्रतीत होता है कि स्मार्ट लोग हैं, जो कोड को देखना भी नहीं चाहते थे और संदर्भ में तल्लीन करना चाहते थे, क्योंकि उन्होंने दहलीज से कहा था: "आप लोगों ने एक बाइक बनाई है।" और वे सभी उठाते थे - पहिया को बुरी तरह से रोकने के लिए, बहुत बुरा, दुःस्वप्न, अस्वीकार्य, शर्म की बात है, उन्हें निष्पादित करें, लिंच। वास्तव में, केवल एक बेवकूफ एक कार्य के लिए एक नया उपकरण विकसित करेगा जिसे किसी ने पहले ही हल कर दिया है।

यह मुझे आश्चर्यचकित करता है कि इस चाल के लिए डिजाइन कितनी जल्दी किए जाते हैं। मैंने सबसे महत्वपूर्ण और गहराई से सोचने वाले लोगों से भी पूछा - "साइकिल खराब होने से रोक रहा है?"। वे एक सेकंड से भी कम समय में "हां" का जवाब देते हैं।

खैर नहीं, पुरुषों, ऐसा मत करो। चलो यहाँ रुकें, चारों ओर एक नज़र डालें और विस्तार से सोचें।



मैंने एक बार काफी समय तक घर पर फ्रंट-एंड एप्लिकेशन किया था। मैंने अभिकर्मक का उपयोग किया, लेकिन मैंने इसे राज्य प्रबंधन के लिए नहीं लिया - मुझे ऐसी कोई समस्या नहीं है। तब समस्या दिखाई दी, और मैंने "मेरी बाइक" बनाना शुरू कर दिया। स्मार्ट अंकल ने मुझे बताया कि मैं एक बेवकूफ हूँ और मुझे Redux लेने की आवश्यकता है। मैंने लिया।

दो महीने बाद, अधिकांश परियोजना कोड मेरे आर्किटेक्चर के लिए संपादक का एक अनुकूलन था। इस उपकरण ने हल करने की तुलना में मेरे लिए बहुत अधिक समस्याएं पैदा कीं। इसलिए नहीं कि संपादक बुरे हैं - यह ठीक नहीं हुआ।

एक बड़े निगम के एक व्यक्ति ने एक बड़े निगम के वेब एप्लिकेशन की स्थिति के साथ काम करने का निर्णय लिया। संपादक समस्याओं का एक गुच्छा हल करता है कि इस तरह के एक आवेदन का सामना करना पड़ता है, और यह अच्छी तरह से करता है। और उद्योग क्या कर रहा है? उद्योग कहता है - दान अब्रामोव ने हमें रास्ता दिया। अब मेरी वेबसाइट दो रूपों में राज्य के साथ काम करने के लिए संपादकों का उपयोग करेगी।

मित्र, संपादकों को राज्य के साथ काम करने के लिए बनाया जाता है - लेकिन आपके राज्य के साथ नहीं। आपको एप्लिकेशन की स्थिति के सभी स्लाइस की एक सतत श्रृंखला की आवश्यकता नहीं है, आप नेटवर्क पर कार्रवाई को प्रसारित नहीं करते हैं और आप संपादक को स्वचालित करने के लिए बहुत अधिक नहीं करते हैं। इसी समय, संपादकों का उपयोग करना आसान नहीं है। आपको संपादक को यह समझाने के लिए कि आपकी स्थिति क्या है, कहां और कैसे अपडेट की गई है, क्या बदलाव महत्वपूर्ण हैं और कौन से नहीं। ताकि संपादक आपके लिए एक ऐसी समस्या को स्वचालित कर दें जो आपके पास नहीं थी। गंभीरता से, क्या आपने प्रतिक्रिया के लिए कम से कम एक रिक्ति देखी है, लेकिन एक संपादक के बिना? मैं नही।

एनालॉग्स हैं - लेकिन वे भी भारी हैं। कभी-कभी किसी समस्या को हल करने का सबसे सस्ता तरीका सब कुछ के लिए एक उपकरण नहीं लेना है, बल्कि एक डोमेन समाधान लिखना है जो आपके लिए सही है। मेरा भगवान, टाइपस्क्रिप्ट एक शक्तिशाली mvvm, mvc, या जो कुछ भी आप घंटों में चाहते हैं, लिखने के लिए पर्याप्त शक्तिशाली है - ताकि यह केवल उन समस्याओं को हल करे जो आपके पास है। इसे सस्ता और तेज करें। और शायद आपका समाधान शांत काम करेगा, परियोजना के साथ बढ़ेगा, और मानक बन जाएगा।

लेकिन यह निषिद्ध है - क्योंकि अन्य डेवलपर्स ने आपको बताया था: "यार, पहिया को सुदृढ़ मत करो। बस बाजार में सबसे लोकप्रिय ले लो। ”

मेरे प्रोजेक्ट में, उदाहरण के लिए, MobX अधिक उपयुक्त था, लेकिन सुपर भी नहीं। यह मेरे लिए सबसे अच्छा काम करेगा जिस साइकिल का मैंने आविष्कार किया था। लेकिन ऐसा लगता था कि उन्होंने एक अच्छा निर्णय लेने के लिए मेरा अधिकार छीन लिया, क्योंकि मैंने जो भी किया, किसी ने भी नहीं सुना। कोई भी यह मानने को तैयार नहीं है कि यह बेहतर और सस्ता होगा।

यह एक दुष्चक्र बनाता है। यदि सभी उनके सामने केवल आविष्कृत का उपयोग करेंगे, तो विकास में प्रगति रुक ​​जाएगी। वे आपको बताते हैं, यदि आप समाप्त से बेहतर करना चाहते हैं - अपने खाली समय में घर पर करें। आप ठीक कहते हैं, आप रात में काम करना शुरू करते हैं, आप इसे पूरा करते हैं, आप लोगों को अपने निर्णय के बारे में बताने के लिए जाते हैं, लेकिन कोई भी अपने हुड के नीचे देखने के लिए तैयार नहीं है - "यह एक साइकिल है।"

लेकिन वास्तव में, हम सभी साइकिल का आविष्कार करते हैं। "साइकिल" बस अपने आलस्य को सही ठहराने के लिए या किसी अन्य डेवलपर के साथ विवाद में खुद को मुखर करने के लिए एक हानिकारक बयानबाजी है।

संपादकीय, प्रतिक्रिया और मोबाइल के निर्माता - आखिरकार, उन्होंने "अपनी बाइक भी बनाई।" खैर, क्या, जब तक कोणीय दिखाई नहीं देता, तब तक हमारे पास ब्राउज़र UI के साथ काम करने के लिए पुस्तकालय नहीं था? जेकरी नॉकआउट यह भी महान है, वैसे। आखिरकार, हमेशा वेनिला जेएस और एक ब्राउज़र एपीआई था। तो इन बेवकूफों ने हल की गई समस्या को क्यों हल किया?

डगलस क्रॉकफोर्ड ने JSON का आविष्कार किया। अक्षम उल्लू को यह पता नहीं लगता है कि हमारे पास पहले से ही XML है। उससे बहुत पहले, प्रोग्रामरों ने डेटा का आदान-प्रदान करने का एक तरीका ईजाद किया था। उन्हें क्या लगता था कि वह वहां है?

खराब उदाहरण? ठीक है, बिल्कुल। दरअसल, आपके सिर में, बड़े निगमों के लोगों को साइकिल का आविष्कार करने का अधिकार है। उनके पास है, लेकिन आप और मैं नहीं।



रूसी संघ में सबसे अधिक उद्यम आईटी बैंक हैं। और अगर आप किसी Sberbank, Tinkov या Alf के तकनीकी उत्पादों को देखते हैं, तो आप देखेंगे - इन सभी में लगभग एक ही डिज़ाइन के साथ समान अनुप्रयोग हैं। ये लगभग समान प्रणाली हैं। उपयोगकर्ता के लिए एक ही, वे अलग-अलग तरीकों से, अलग-अलग स्टैक पर, अलग-अलग लोगों द्वारा बनाए जाते हैं। इन सभी बैंकों के पास अपने स्वयं के अनूठे विकास दृष्टिकोण हैं। वैश्विक आईटी दिग्गज के पास भी बहुत सारे उत्पाद हैं। जब बड़े बैंकर इकट्ठे होते हैं और यह तय करते हैं कि उन्हें डिजिटल उत्पादों की आवश्यकता है, तो वे डेवलपर्स की एक सेना को नियुक्त करते हैं और उन्हें वही काम करने के लिए मजबूर करते हैं जो अन्य बैंक पहले ही कर चुके हैं, सौवीं बार - लेकिन एक नए तरीके से।

यह सब साइकिल के बारे में है।

हर परियोजना में लंबे समय से समस्याएं थीं, जिन पर मैंने काम किया, क्योंकि कुछ भी स्वचालित नहीं था। क्योंकि एक बार किसी को बता दिया गया था - पहिया को फिर से मजबूत न करें, बस टिकट को बंद करें। हां, व्यवसाय अपने टिकटों के लिए इंतजार कर रहा है, और इसे खिलाने की आवश्यकता है, लेकिन चलो ईमानदार रहें - मुझे पता है कि हमारे पास हमेशा जितना व्यवसाय लगता है उससे अधिक बजट है।

मेरे पास बस उस व्यवसाय के पैसे के साथ सब कुछ है जो मैं उस पर खर्च करता हूं। एक बड़े व्यवसाय के पास बहुत पैसा है, और यह उन्हें विकास में ले जाता है। पैसे का यह विशाल ढेर डेवलपर्स द्वारा खर्च किया जा सकता है जो समस्याओं को हल करते हैं, और एक ही समय में कुछ शोध करते हैं। और प्रबंधक खर्च कर सकते हैं, लेकिन लाखों बेकार बैठकों में बैठे हमारे संवेदनहीन भुगतान के लिए प्रबंधक उन्हें खर्च करेंगे। व्यवसाय ने पहले से ही विकास पर पैसा खर्च किया है, और यदि आप इसे प्रोग्रामिंग में नहीं बदलते हैं, तो व्यवसाय के गुर्गे इसे अपनी बेवकूफ प्रक्रियाओं पर खर्च करेंगे, जिनकी खुद के अलावा किसी को भी ज़रूरत नहीं है।

मैंने बहुत से दोस्तों को देखा है, जो दिन में 18 घंटे “काम” करते हैं। और मैं अच्छी तरह से जानता हूं कि यदि आप 18 घंटे तक कार्यालय में रहे, तो आप वास्तव में उतना ही काम करेंगे जितना कि आप 8 वर्ष के थे।

किसी व्यवसाय को धोखा देने के हमारे सामूहिक तरीके को बहुत सरलता से समझाया गया है - यह फूटना नहीं है। व्यवसाय यह नहीं समझ पाता है कि हमें दो सप्ताह के लिए सुविधाएँ क्यों नहीं देनी चाहिए, लेकिन विरासत को क्रम में रखना चाहिए। यह सामान्य है, और हम जानते हैं कि इसे कैसे हल किया जाए। आप आधे दिन के लिए एक व्यवसाय के लिए काम करते हैं, और आधे दिन के लिए एक परियोजना के लिए काम करते हैं। मैं काम पर आया, दैनिक मानदंड को बंद कर दिया - यही सब है, आपके पास अनुसंधान के लिए एक कार्टे ब्लैंच है।

जब हम व्यावहारिक, क्षणिक इच्छा सूची व्यवसाय को हल कर रहे हैं - वह इस काम के लिए हमें भुगतान करने के लिए तैयार है। वास्तव में, वास्तविक विकास शुरू होता है जहां प्रोग्रामिंग की खातिर प्रोग्रामिंग होती है। जब आप कुछ भी नहीं कमबख्त के लिए शुद्ध यांत्रिकी में रहस्योद्घाटन करते हैं, एक क्षणिक क्लिक और इंजीनियरिंग उत्साह, क्योंकि यह एकमात्र तरीका है जिससे सीमाएं खींची जाती हैं, नए तरीके और उपकरण फिर से व्यावहारिक समस्याओं को हल करने के लिए दिखाई देते हैं, केवल बेहतर।

जब मैं कुछ विकसित करता हूं, कुछ ऐसा जो पहले से ही किया गया है, तो मैं उनकी तरह बिल्कुल फिर से आविष्कार नहीं करता हूं। मैं अपने दृष्टिकोण के साथ आता हूं। वह हमेशा कुछ बेहतर होता है, हमेशा कुछ बदतर होता है। और यह हमेशा एक आविष्कार है। मेरे आविष्कारों का बड़ा हिस्सा इतिहास के कूड़ेदान में जाता है, लेकिन हमेशा एक मौका है कि मैं वास्तव में कुछ अच्छा आविष्कार करूंगा। यहां तक ​​कि अगर गुजरने में, भले ही मैं खुद इसके लिए कोई महत्व नहीं देता, इससे कोई फर्क नहीं पड़ता। कोई देख लेगा, कहीं और, उद्योग को एक नया मानक प्राप्त होगा जो हमारी समस्याओं को हल करना शुरू कर देगा। केवल यह विचार मुझे कोड लिखने के लिए प्रेरित करता है।

ओपन सोर्स में भी इसी तरह की कई परियोजनाएँ हैं। जो उसी समस्या का समाधान करते हैं। क्या आप यह कहने के लिए तैयार हैं कि हर कोई उन्हें बेवकूफ बनाता है? मैं तैयार नहीं हूँ। जब मैं क्रमांकन के लिए एक बैच बनाना चाहता हूं, तो मुझे पांच या छह शीर्ष समाधान मिलते हैं, जिनमें से प्रत्येक के अनूठे फायदे हैं। कभी-कभी इन लाभों में से एक मेरे लिए महत्वपूर्ण होता है, ऐसे क्षणों में मैं उन लोगों के लिए आभारी हूं जिन्होंने इस "बाइक" को बनाने का फैसला किया।

जब वे मुझसे कहते हैं कि सब कुछ पहले से ही विकास में आविष्कार किया गया है, तो मैं पूछता हूं: "क्या, हमें कोई समस्या नहीं हुई है?"।

क्या हम एक दिन का बॉयलरप्लेट नहीं लिखते हैं? जब हम अपनी फ़ाइलों को एक ही कोड से भरते हैं तो क्या हम बार-बार ऑटोमेशन नहीं लेते हैं? हम अभी भी बहुत कुछ कर रहे हैं कि मशीन अब क्या कर सकती है। और हम ऐसा करते हैं क्योंकि हमने अभी तक दृष्टिकोण का आविष्कार नहीं किया है, क्योंकि हम हमेशा साइकिल के पहियों में चिपकते हैं।



मेरी पॉडकास्ट देखो

All Articles