15 पॉइंट द्वारा GN⁺ 2025-02-12 | 5 टिप्पणियां | WhatsApp पर शेयर करें

उबाऊ तकनीक(Boring tech) का अर्थ

  • NetBSD को "उबाऊ" कहना सबसे बड़ी प्रशंसा है
  • सिस्टम एडमिन जो चाहते हैं, वह है पूर्वानुमेयता, चौंकाने वाली चीज़ें नहीं
  • किसी तकनीक का उबाऊ होना इस बात का संकेत है कि वह बहुत विश्वसनीय है
    • यह कई लोगों द्वारा टेस्ट और ऑप्टिमाइज़ किए जाने का परिणाम है
    • अप्रत्याशित व्यवहार या डॉक्युमेंटेशन की कमी जैसी समस्याओं की संभावना कम होती है
    • समस्या होने पर मदद के लिए कम्युनिटी या संदर्भ सामग्री उपलब्ध होती है

तकनीकी वातावरण की जटिलता

  • तकनीक अकेले मौजूद नहीं होती, बल्कि विभिन्न सिस्टम्स के साथ इंटरैक्ट करती है
  • जितने अधिक कॉम्पोनेंट होंगे, अप्रत्याशित समस्याएँ होने की संभावना उतनी बढ़ेगी
  • नई तकनीक हमेशा सबसे अच्छा विकल्प नहीं होती, और परीक्षित, स्थिर तकनीक बेहतर चुनाव हो सकती है
  • ऐसे उदाहरण मौजूद हैं जहाँ Kubernetes क्लस्टर को कुछ virtual machines से बदलकर स्थिरता बढ़ाई गई

"उबाऊ तकनीक" पर आपत्तियाँ और व्याख्या

  • Robert Roskam का तर्क
    • यह मान लेना गलत हो सकता है कि "उबाऊ" तकनीक = बहुत समय से मौजूद तकनीक
    • व्यापकता अपने आप समझ की गारंटी नहीं देती
    • पुरानी तकनीक हमेशा maintainable नहीं होती (उदाहरण: COBOL सिस्टम)
  • प्रत्युत्तर
    • सिर्फ पुराना होना किसी तकनीक को उबाऊ नहीं बनाता (उदाहरण: Oracle जटिल है और उसका मेंटेनेंस कठिन है)
    • BSD उबाऊ तकनीक है, लेकिन Linux जितनी व्यापक नहीं है
    • उम्र नहीं, बल्कि परिपक्वता(maturity) महत्वपूर्ण है

निष्कर्ष: उबाऊ तकनीक = परिपक्व तकनीक

  • पुरानी तकनीक ≠ परिपक्व तकनीक
  • परिपक्व तकनीक = ऐसी तकनीक जिसमें code, documentation, community और ऑपरेशनल अनुभव जमा हो चुका हो
  • NetBSD का उबाऊ होना उच्च विश्वसनीयता और स्थिरता का संकेत है, और यही उसकी सबसे बड़ी प्रशंसा है

5 टिप्पणियां

 
jhj0517 2025-02-13

"उबाऊ तकनीक" जैसा अभिव्यक्ति थोड़ा नकारात्मक महसूस हो सकता है, इसलिए "परिपक्व" कहना बेहतर लगता है।

 
aer0700 2025-02-12

Oracle जटिल है और इसका maintenance करना मुश्किल है :(

 
ephesian 2025-02-12

उबाऊ रिश्ते पुराने नहीं, बल्कि परिपक्व रिश्ते होते हैं

 
jujumilk3 2025-02-12

मुझे GeekNews पर पहले पोस्ट हुआ यह लेख याद आ रहा है
इंडस्ट्री में 10 साल बिताने के बाद, सॉफ्टवेयर डेवलपमेंट पर बदले हुए विचार (https://hi.news.hada.io/topic?id=19081)

कि Java बोरिंग है, और इसी वजह से वह उलटे एक बेहतरीन भाषा है।

 
GN⁺ 2025-02-12
Hacker News राय
  • मुझे लगता है कि boring technology अच्छी होती है, क्योंकि इससे हम प्रोडक्ट की असली तकनीक पर ध्यान दे सकते हैं। एक SaaS app चलाते हुए मुझे लगता है कि मैं प्रोडक्ट से जुड़े कई क्षेत्रों में cutting-edge काम कर रहा हूँ। जो चीज़ें "पीछे" काम करती हैं, जैसे database या backend framework, उन्हें मैं जितना हो सके boring और stable रखना पसंद करता हूँ। जब किसी project पर अकेले काम कर रहे हों, तो समय बहुत सीमित होता है। ग्राहक जिन बातों की परवाह नहीं करते, उनमें छेड़छाड़ करने के बजाय मैं अपना समय प्रोडक्ट के दिलचस्प नए features बनाने में लगाना चाहता हूँ। ग्राहकों को न तो पता होता है और न ही फ़र्क पड़ता है कि मैं Node की जगह Deno या Bun इस्तेमाल करता हूँ, या NPM की जगह pnpm। वे बस यह जानते हैं कि मेरा app कितना अच्छा काम करता है और उसमें कौन-से features हैं

  • मैं इस राय से सहमत हूँ, लेकिन अपने निजी अनुभव के आधार पर इसका उल्टा नज़रिया भी रखना चाहता हूँ। कई बार जब कोई व्यक्ति चाहता है कि संगठन उसकी अपनी पसंद, यानी software preference, चुने, तो वह उसे "boring" विकल्प कह देता है। उसे boring कहकर वह अपनी पसंद को ऐसी mature और obvious decision के रूप में पेश करता है जिसे ज़्यादातर लोग मानते हों, और बाकी सबको ऐसे दिखाता है जैसे software engineers बस चमकदार चीज़ों के पीछे भाग रहे हों। सच लगभग हमेशा इससे ज़्यादा जटिल होता है। दोनों solutions के अपने फायदे और नुकसान होते हैं। वे अलग-अलग लोगों के लिए अलग तरह की values का लेन-देन करते हैं। "यह boring है, इसलिए साफ़ तौर पर बेहतर है" जैसे दावे से सावधान रहना चाहिए। यह बिना गहरी चर्चा के किसी और की preference को अपनी preference से बदलने का तरीका नहीं बनना चाहिए। नहीं तो यह बस बहस जीतने की एक और घमंडी कोशिश होगी, बिना कोई ठोस तर्क दिए

  • मैं "boring" technology में "stable" शब्द भी जोड़ना चाहूँगा। खासकर यहाँ "stable" का मतलब "crash नहीं होता" नहीं, बल्कि "बदलता नहीं" है। आम तौर पर यह हमें पुरानी और स्थापित चीज़ों में दिखता है। लेकिन इसकी कोई गारंटी नहीं होती। अक्सर यह किसी technology के maintainers द्वारा कुछ खास व्यवहार अपनाने का परिणाम होता है। इसे अक्सर backward compatibility के संदर्भ में समझाया जा सकता है। यह stability पाने के लिए अपनाया जाने वाला एक स्पष्ट कदम है। लेकिन इसे scope को काफ़ी सीमित करने के रूप में भी देखा जा सकता है। उदाहरण के लिए, हमें scale की बात करना पसंद है, लेकिन जिस scale को हम शायद कभी देखेंगे ही नहीं, उसके लिए design और build करने की ज़रूरत नहीं है

  • हमेशा की बहस पुराना बनाम नया, boring बनाम exciting की नहीं है। maturity, उम्र से अलग चीज़ है। ऐसा system जो dependency update करते ही टूट जाता है, अस्पष्ट defaults के कारण unexpected behavior ला देता है, या आपको abstraction layers में भटकने पर मजबूर करता है, mature नहीं है... (मैं Spring और Java ecosystem की तरफ़ देख रहा हूँ), वह बस पुराना और unstable है। stability, predictability, और अच्छी तरह design की गई simplicity ही maturity को परिभाषित करती है, सिर्फ़ उम्र नहीं। क्या Python mature और boring है? उसमें toolchain problems और कई तरह की परेशानियाँ हैं... Go या Rust जैसी नई languages इन toolchain समस्याओं को हल करती हैं और उन्हें सबसे अच्छे तरीके से सचमुच boring बनाती हैं

  • boring होना तब तक अच्छा है, जब तक आप नौकरी नहीं ढूँढ रहे। boring technologies से चिपके रहने पर आप धीरे-धीरे खुद को job market से बाहर करने का जोखिम उठाते हैं। अगला employer इस बात की परवाह नहीं करता कि आपने बेहतरीन business value दी। ज़्यादातर को तो नई चमकदार चीज़ चाहिए। अपने मौजूदा employer के job ads पढ़कर मुझे नहीं लगता कि मैं खुद वहाँ hire हो पाता

  • GitHub पर यह पहचानना मुश्किल है कि कोई project mature है या dead। चाहे commit किसी भी चीज़ के लिए हो, वह इस बात का संकेत है कि कोई उस पर नज़र रख रहा है, उसे maintain कर रहा है, और नए issues जल्दी solve होने की संभावना है। इसका मतलब है कि नई चीज़ों को वहाँ हमेशा एक फ़ायदा मिलेगा

  • boring technology इस्तेमाल करके किसी को promotion नहीं मिला या hire नहीं किया गया। मुझे लगता है कि मुझे कई job applications का जवाब नहीं मिलता, क्योंकि मेरा ज़्यादातर काम "boring" रहा है और मेरे द्वारा लिखा गया open source code ज़्यादातर shell scripts है। सब कुछ शानदार तरीके से काम करता है, bugs और maintenance cost लगभग नहीं है, लेकिन यह आकर्षक नहीं लगता। बौद्धिक elitism ने मेरी भूमिका को परिभाषित किया है ("DevOps Engineer" का शाब्दिक मतलब "cloud में system administrator" है, लेकिन क्योंकि हमें system manage करने पर <i>शर्मिंदा होना चाहिए</i>, इसलिए हम ऐसा कह नहीं सकते); मुझे पूरा यक़ीन है कि अगर मेरे résumé में "Python and Shell" की जगह "Go and Rust" ज़्यादा होता, तो मुझे तुरंत hire कर लिया जाता

  • boring technology काम पूरा कराती है और हमें उसी समस्या पर ध्यान केंद्रित करने देती है जिसे हम हल करना चाहते हैं, बजाय इसके कि हम बेकार के कामों में उलझें

  • मैं इस विषय पर Ask HN पोस्ट करने वाला था, लेकिन मुझे लगा कि यह पोस्ट मेरा सवाल पूछने के लिए बेहतरीन है। आपके लिए कौन-सी technology इतनी boring है कि उसके बिना काम ही नहीं चल सकता? आप उसे कितने समय से इस्तेमाल कर रहे हैं? मेरे लिए यह Vim, C, Python, Fedora, mutt जैसी चीज़ें हैं, और मैं उन्हें 25-30 साल से इस्तेमाल कर रहा हूँ। आपके लिए क्या है?

  • अगर किसी नई technology का फ़ायदा उसके जोखिम से ज़्यादा है, तो मैं उसका उपयोग करता हूँ। चुनौती यह है कि सबूतों का आकलन कैसे किया जाए। नई technologies अपने फायदों का खूब प्रचार करती हैं, लेकिन उनके नुकसान उतने ज़ोर से नहीं बताए जाते, और अक्सर निवेश करने के बाद ही पता चलते हैं। "boring" या "exciting" एक ग़लत framing है