रिलीज़ (Shipping) मुश्किल क्यों है
- बहुत से लोग गलती से मान लेते हैं कि ‘रिलीज़’ करना आसान काम है, लेकिन डिफ़ॉल्ट स्थिति यह होती है कि रिलीज़ देर से होती है, रद्द हो जाती है, या कम गुणवत्ता के साथ समस्याएँ पैदा करती है।
- सारा कोड लिख देने या सभी Jira tickets बंद कर देने से अपने-आप रिलीज़ नहीं हो जाती। रिलीज़ के लिए किसी को lead की भूमिका लेनी पड़ती है।
- रिलीज़ सबसे उच्च प्राथमिकता वाला काम होना चाहिए। user experience (UX) पर ज़रूरत से ज़्यादा ध्यान देने से उल्टा रिलीज़ में देरी होती है।
- किसी प्रोजेक्ट को सफलतापूर्वक रिलीज़ करने के लिए एक technical leader या DRI (Directly Responsible Individual) की ज़रूरत होती है। जिन टीमों में यह भूमिका निभाने वाला engineer होता है, उनकी सफलता की संभावना ज़्यादा होती है।
‘रिलीज़’ क्या है?
- कई engineers ‘रिलीज़’ को सिर्फ code deploy करने या feature enable करने के रूप में देखते हैं, लेकिन बड़ी tech कंपनियों में इसकी परिभाषा अलग होती है।
- रिलीज़ तब मानी जाती है जब कंपनी के भीतर महत्वपूर्ण लोग मान लें कि यह ‘रिलीज़ हो चुकी है’। अगर VP या CEO संतुष्ट नहीं हैं, तो code deploy हो जाने के बाद भी वह वास्तव में ‘रिलीज़’ नहीं मानी जाती।
- अगर कोई प्रोजेक्ट users के बीच बड़ी सफलता हासिल करे या revenue लाए, तो उसे रिलीज़ माना जाता है; लेकिन users की प्रतिक्रिया अच्छी न होने पर भी अगर leadership संतुष्ट है, तो उसे रिलीज़ माना जा सकता है।
कम्युनिकेशन का महत्व
- प्रोजेक्ट का लक्ष्य क्या है, यह स्पष्ट रूप से समझना ज़रूरी है। लक्ष्य के अनुसार काम करने का तरीका और कम्युनिकेशन रणनीति बदलती है।
- कंपनी की leadership को प्रोजेक्ट की technical details लगभग पता नहीं होतीं। इसलिए trust बनाए रखने के लिए सही estimates, समस्या-समाधान, और उचित updates महत्वपूर्ण हैं।
- trust बनाए रखने के तरीके:
- अगर पहले सफल रिलीज़ का अनुभव है, तो यह फ़ायदेमंद होता है।
- आपको आत्मविश्वास भरा रवैया दिखाना चाहिए।
- NASA के mission control की तरह पेशेवर और संक्षिप्त ढंग से संवाद करना चाहिए।
- daily या weekly update threads के ज़रिए proactively जानकारी देनी चाहिए।
production deploy की समस्याओं का समाधान
- ज़्यादातर समस्याएँ अप्रत्याशित details में पैदा होती हैं। उदाहरण के लिए, Memcached के block size की समस्या, traffic prediction की गलती, या sensitive user data से जुड़ी समस्या हो सकती है।
- समस्याओं को तेज़ी से हल करने के लिए system की गहरी technical समझ ज़रूरी है।
- संभावित समस्याओं पर तेज़ी से प्रतिक्रिया देनी चाहिए, और यह साफ़ समझा पाना चाहिए कि समस्या गंभीर है या नहीं।
क्या इसे अभी तुरंत रिलीज़ किया जा सकता है?
- खुद से यह पूछना महत्वपूर्ण है कि क्या इसे अभी तुरंत रिलीज़ किया जा सकता है। अगर नहीं, तो यह सोचना चाहिए कि क्या बदलना होगा ताकि यह संभव हो सके।
- feature flags और staging environment का उपयोग करके जितनी जल्दी हो सके feedback लेना चाहिए।
- रिलीज़ से ठीक पहले technical काम कम कर देना चाहिए, और समस्या होने पर तेज़ी से प्रतिक्रिया देने की तैयारी रखनी चाहिए।
सारांश
- रिलीज़ करना बहुत कठिन काम है, और इसे सर्वोच्च प्राथमिकता देनी चाहिए।
- रिलीज़ का मतलब सिर्फ deploy करना नहीं, बल्कि leadership team का संतुष्ट होना है।
- leadership team का trust जीतना सफल रिलीज़ की कुंजी है।
- समस्याओं का अनुमान लगाकर उनसे निपटने के लिए backup plan महत्वपूर्ण है।
- रिलीज़ से ठीक पहले development work कम करके समस्या-समाधान पर ध्यान केंद्रित करना चाहिए।
- हमेशा यह सवाल पूछना चाहिए: “क्या इसे अभी तुरंत रिलीज़ किया जा सकता है?”
- डर छोड़कर साहस रखना चाहिए।
2 टिप्पणियां
Hacker News राय
कुछ प्रभावशाली टिप्पणियों के अंश चुने हैं।
“कुछ लोग सिर्फ अपने लिए तकनीकी क्षेत्र बनाना चाहते हैं, या किसी भी स्तर पर अपने से ऊपर बैठे लोगों से प्रशंसा पाना चाहते हैं। यही वह तरीका है जिससे "खेल खेला जाता है"। इस खेल को खेलना आखिरकार संगठन की मौत की ओर ले जाता है, और यही कारण है कि हमारे पास शुरुआत से ही corporate life cycle जैसी चीज़ होती है। अंततः ऐसे लोग संगठन को अंदर से तोड़ देते हैं, और जिन लोगों के पास सचमुच विचार होते हैं या जो वास्तव में काम पूरा करने के लिए optimized होते हैं, उन्हें बाहर धकेल देते हैं।”
“खेल में जीतने का तरीका है खेल को न खेलना।”