क्या आपको "बस फैक्टर" बढ़ाने के लिए अच्छे दस्तावेज और स्वच्छ कोड लिखना चाहिए?


48

सॉफ्टवेयर विकास कंपनियों के मुख्य लक्ष्यों में से एक उनके बस कारक को बढ़ाना है। यह बात Google द्वारा आयोजित एक वार्ता में भी की गई है

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

बदली जा रहा है, एक डेवलपर के हित के खिलाफ नहीं है? पुस्तक में, नियम 11 के 48 नियमों में कहा गया है कि आपको सत्ता हासिल करने के लिए लोगों पर निर्भर रहने की कोशिश करनी चाहिए, जो तब मौद्रिक पुरस्कारों में बदल जाता है।

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

एक प्रोग्रामर के रूप में, क्या आपको वास्तव में सभी के लिए उत्कृष्ट दस्तावेज और आसानी से पढ़ने योग्य कोड लिखना चाहिए; या आपको इस तरह से कोड और प्रलेखन लिखना चाहिए कि यह काम करता है और आप स्वयं इसे समझ सकते हैं, लेकिन किसी अन्य व्यक्ति को इसे समझने में परेशानी हो सकती है?


41
ग्रीनपे की पुस्तक निराशाओं के लिए उपयुक्त है और फ़ाइफ़्डोम्स में करी एहसान का अभाव है। टीम वर्क के लिए अच्छा नैतिक दर्शन नहीं। कम से कम कहने के लिए! [ध्यान दें कि विकिपीडिया "सोशियोपैथी" के तहत इस पुस्तक को श्रेणीबद्ध करता है]
स्टीवन ए। लोवे

27
मैं आपको कभी भी काम पर नहीं
रखूंगा

37
कब्रिस्तान अपूरणीय लोगों से भरे हुए हैं।
जॉब

20
आप कभी भी अपूरणीय नहीं होना चाहते हैं - यदि आपको प्रतिस्थापित नहीं किया जा सकता है तो आपको पदोन्नति कैसे मिलेगी? जब तक आप बिल्कुल खुश नहीं होते हैं, तब तक आप हमेशा 'बस फैक्टर' के लिए महत्वपूर्ण होते हैं।
डेव

11
"पुस्तक निकोलो मैकियावेली के द प्रिंस के साथ विषयगत तत्वों को साझा करती है और इसकी तुलना सन-त्ज़ु के क्लासिक ग्रंथ द आर्ट ऑफ़ वार से की गई है।" मुझे नहीं लगता कि मैं किसी ऐसे व्यक्ति के साथ काम करना चाहता हूं जो 16 वीं सदी की इतालवी राजनीति या ... प्राचीन चीनी युद्ध की तरह अपने कार्यस्थल को देखता है।
कैस्केबेल

जवाबों:


110

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

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


1
यह दिलचस्प है कि यह अभी-अभी लाया गया है, क्योंकि अभी कुछ दिनों पहले मुझे बताया गया था कि मैं उन कुछ परियोजनाओं से कितना मूल्यवान था जिनसे मैं वर्तमान में काम कर रहा हूं, उन लोगों के लिए जो संभवतः कभी नहीं होंगे। कोड को स्पर्श करें। वह, और निश्चित रूप से मुझे विभिन्न मॉड्यूल के उच्च-स्तरीय दृश्य प्रदान करते हैं और वे कैसे बातचीत करते हैं। यह अवलोकन अभी विशेष रूप से आवश्यक नहीं हो सकता है जब मेरे पास यह सब ताजा स्मृति में होगा, लेकिन लगभग निश्चित रूप से तब मदद मिलेगी जब मैं एक वर्ष के समय में कोड को फिर से
देखूंगा

2
कुछ लोगों ने जो कोड लिखा था (बुरा, अस्पष्ट) जिसने उन्हें मेरे काम पर "अपूरणीय" बना दिया, अब यहां काम नहीं करता है। बेहतर प्रोग्रामर अपने काम को कोड रिव्यू या फिक्सिंग के दौरान देखते थे जबकि वे छुट्टी पर थे। अपने काम की "गुणवत्ता" देखा, और वे डिब्बाबंद हो गए।
14-40 बजे कैफ़ेगेक

44

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

पीएस न तो श्री ग्रीन और न ही मैकियावेली ने वास्तव में उन किताबों को लिखने से बहुत अलग किया जो चापलूसी करने की कोशिश करते थे - उस समय के "कठोर पुरुष" थे। नमक के एक दाने के साथ उनकी सलाह लें।


42

यदि आप अपूरणीय हैं, तो आपको पदोन्नत नहीं किया जा सकता है।


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

विषय पर अब तक का सर्वश्रेष्ठ तर्क
ZJR

2
वास्तव में क्लासिक जवाब।
सारावुत पोसिट्विन्यू

@ JohnR.Strohm दोस्त !!!! मैं वहां गया हूं और यह बहुत बुरा लगता है। अधिक सावधान इंजीनियर होने के कारण, मैं एक कार्य पर थोड़ा और समय लूंगा। इसलिए प्रबंधक ने अन्य लोगों को तेज कोड लिखने की अनुमति देनी शुरू कर दी और फिर मुझे एक कोड समीक्षा में साफ कर दिया। मुझे यह बिल्कुल गलत लगा, क्योंकि यह भूमिका टीम के लिए मेरी प्रासंगिकता बन गई, जबकि यह वह नहीं था जो मैं चाहता था। यह कहने की जरूरत नहीं है कि मुझे इसका एहसास होने के तुरंत बाद मैंने टीम छोड़ दी।
davidXYZ 19

17

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

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

कब्रिस्तान अपरिहार्य पुरुषों से भरा हुआ हैं।
- गॉल, चार्ल्स डी

इसलिए बकवास को काटें और अपना काम ठीक से करें। अगर किसी और चीज के लिए नहीं, तो आपके लिए, क्योंकि आप गरीब आत्मा होने की संभावना रखते हैं, जिन्हें अब से 2 साल बाद कोड में कुछ बदलाव करने होंगे।


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

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

क्या "हार-जीत" "जीत-जीत" या "जीत-हार" प्रणाली में एक विशेष स्थिति है? मुझे इसकी ज्यादा जानकारी नहीं मिल रही है ... लेकिन ध्यान दें कि दुनिया की हर चीज जीत-जीत नहीं हो सकती। सहकर्मी जो निर्देशक या टीम लीडर बनना चाहते हैं, वे निश्चित रूप से इसे जीत नहीं पाएंगे। या सहकर्मी जो सुपर स्टार के रूप में दिखना चाहते हैं या एक पदोन्नति प्राप्त करना चाहते हैं, या एक उठाना चाहते हैं, या अपने "वास्तुकार" शीर्षक की रक्षा करते हैं, या 1 साल के स्टॉक ऑप्शन वेस्टिंग डेट से पहले निकाल नहीं पाते हैं, निश्चित रूप से इसे नहीं देखेंगे। "जीत-जीत" जब उसे आपको नीचे रखना होगा। अब मैं भी "हार-जीत" की स्थिति में नहीं
आना चाहता हूँ

कारण यह है, अगर वह मुझसे पहले गंदगी की तरह व्यवहार करता है, तो मैं शायद उससे कुछ हद तक नफरत करूंगा, और यह बाद में एक अच्छा रिश्ता नहीं होगा। यदि मैं श्रेष्ठ दिखाई देता हूं और वह मुझे कुछ हद तक सम्मान देता है, तो रिश्ते को नीचे और ऊपर के बिना बेहतर ढंग से जारी रखा जा सकता है। लेकिन सच है, मैंने पाया कि कटे हुए सिलिकॉन वैली में, यदि आप "स्वीकार" और "सहिष्णु" हैं, तो आप एक ऐसा डोरमैट बन जाते हैं, जिस पर लोग कदम रखना पसंद करते हैं। तो निश्चित रूप से उचित रूप से प्रतिशोध करें या उसे बताएं कि परिणाम है।
17

@ @।: कृपया मेरी पोस्ट के लिंक का अनुसरण करें। अपने मामले में, आपको खुलेआम जीत-जीत या किसी सौदे की वकालत करनी चाहिए। अक्सर बातचीत के सभी प्रकार झगड़े में बदल जाते हैं, जब वास्तव में बातचीत के तरीके पर चर्चा करने में समय व्यतीत होता है तो चीजों को हल किया जाएगा। यह उतना ही सरल है: "मैं हमारे रिश्ते को एक प्रतियोगिता के बजाय एक सहयोग के रूप में पसंद करूंगा और उसके अनुसार प्रतिबद्धताएं करने के लिए तैयार हूं। यदि आप एक विकल्प के रूप में नहीं देखते हैं, तो मुझे अभी बताने के लिए पर्याप्त ईमानदार रहें। यदि आप कोशिश करते हैं। मुझे बाहर निकालने के लिए इसका उपयोग करने के लिए, मैं आपकी गेंदों को चीर दूंगा। ” यद्यपि आप अंतिम बिट को फिर से लिखना चाहते हैं;)
back2dos

15

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

एक आदमी की पूरी नौकरी एक मॉड्यूल के लिए कोड को बनाए रख रही थी जिसने दो पूरी तरह से अलग सबसिस्टम को ब्रिज किया, प्रत्येक सिस्टम पर मॉड्यूल को UART के माध्यम से संचार करने की अनुमति दी। मूल रूप से, यह धारावाहिक प्रोग्रामिंग 101 था। केवल एक सामान्य इंटरफ़ेस बनाने के बजाय जो कुछ इस तरह दिखता था:

  int sendData (int targetModule, void * data, size_t byteCount);
  int recvData (int sourceModule, void * data, size_t maxBytes);

उन्होंने हर एक संदेश के लिए अलग-अलग ऑपकोड तैयार किया जो कि किसी भी दो संचार मॉड्यूल प्रत्येक अभिभावक को भेजना चाहते हैं। जिसका मतलब था कि उसके मॉड्यूल को हर संदेश के बारे में जानना चाहिए, और जब भी कोई संदेश जोड़ा या बदला जाए, तो उसे अपडेट करने की आवश्यकता है। अनुचित अंतरंगता के बारे में बात करो!

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

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


एक दिलचस्प परिप्रेक्ष्य।
scribu

यह केवल मोटर वाहन उद्योग तक सीमित नहीं है। मुझे लगता है कि कोई भी बड़ा संगठन, जो सॉफ्टवेयर / प्रौद्योगिकी क्षेत्र में ही नहीं है, लेकिन सॉफ्टवेयर डेवलपर्स (अन्य आईटी कर्मचारियों के बीच) को नियुक्त करता है, इस तरह की चीज से कुछ हद तक कम या अधिक प्रभावित होगा।
क्रेगटीपी

मैं प्रलेखन के मूल्य में विश्वास करता हूं, लेकिन दस्तावेज़ीकरण इस आदमी की नौकरी की रक्षा नहीं कर रहा है। वह केवल अक्षम प्रबंधन और शालीनता के कारण है। यह आश्चर्यजनक है कि मेमो लिखने के लिए किसी को भी अपने दिन से 90 मिनट तक का समय नहीं मिला: हकदार लाखों डॉलर कैसे बचाएं और एक बेहतर उत्पाद का निर्माण करें। शायद यह इस कारण का हिस्सा है कि जीएम और क्रिसलर जैसी कंपनियों ने खुद को बहुत गहरे, बहुत महंगे छेदों में पाया।
कालेब

1
@ कालेब: किसी भी बड़े संगठन में कोई भी अच्छा काम नहीं किया जाता है। दूसरों को उनकी जागीर की अनुमति देना बहुत आसान है और यदि आप कर सकते हैं तो अपने लिए एक जासूसी करना चाहिए।
गिल्बर्ट ले ब्लैंक

3
@ कालेब: हम विषय से दूर हो रहे हैं, लेकिन मैंने और मेरे जैसे अन्य लोगों ने मानव प्रकृति से नहीं लड़ने का फैसला किया है। आप एक छोटे (<20) सूचना प्रौद्योगिकी समूह में एक योग्यता प्राप्त कर सकते हैं, लेकिन एक बार जब आप 100 या तो सॉफ्टवेयर डेवलपर्स को पास करते हैं, तो आपका संगठन एक जागीर होगी, चाहे आप इसे पसंद करें या न करें।
गिल्बर्ट ले ब्लैंक

14

बदली जा रहा है, एक डेवलपर के हित के खिलाफ नहीं है?

मुझे आपसे इसे तोड़ने से नफरत है, लेकिन हर कोई बदली है। निश्चित रूप से, कभी-कभी यह आपको बदलने के लिए थोड़ी सी चुनौती हो सकती है (यदि आप अनुभवी और पर्याप्त उज्ज्वल हैं), लेकिन यह असंभव से प्रकाश वर्ष है।

आपके नियोक्ता के लिए वास्तव में एक मूल्यवान वस्तु होने का तरीका (न केवल वर्तमान नियोक्ता, बल्कि कोई भी नियोक्ता) कोड लिखने की क्षमता का प्रदर्शन करना है जो कोड पढ़ने वाले किसी भी व्यक्ति के लिए आसान है (कोड के साथ काम करने के लिए थोड़ा रैंप अप) और दस्तावेज़ कोड (कोई भी कोड में खुदाई किए बिना आपके सिस्टम का उच्च स्तरीय अवलोकन प्राप्त कर सकता है)।

वास्तव में कोड प्रलेखन में अच्छा होना इन दिनों आने वाला एक कठिन गुण है, जिससे अकेले आपको दूसरों से अलग होने में मदद मिलेगी।

साफ और अच्छी तरह से प्रलेखित कोड भी फिर से शुरू करने के लिए योग्य है (कम से कम, इसके ठोस परिणाम, अर्थात "हम nनए डेवलपर्स को न्यूनतम रैंप पर लाने और मेरे प्रलेखन के कारण सहायता करने में सक्षम थे ), जहां बनाने के बारे में डर लगता है अपने आप को "अपूरणीय" नहीं है।


-1: मुझे आपसे इसे तोड़ने से नफरत है, लेकिन हर कोई बदली है। - हां, लेकिन कुछ लोगों को दूसरों की तुलना में प्रतिस्थापित करना अधिक कठिन होता है।
जिम जी।

10

बदली जा रहा है, एक डेवलपर के हित के खिलाफ नहीं है?

निर्भर करता है कि उस डेवलपर के हित क्या हैं। यदि आप एक ऐसे व्यक्ति हैं जो अपने पूरे करियर के लिए एक ही नौकरी में रहना चाहते हैं, तो एक ऐसी कंपनी के लिए पूरी तरह से अपरिहार्य हो जो अक्षमता को पुरस्कृत करे और अच्छा पैसा कमाए।

लेकिन क्या होता है जब कंपनी दुर्घटनाग्रस्त हो जाती है, शायद इसलिए कि उन्होंने बहुत सारे लोगों को काम पर रखा है? आप आगे कहाँ जाने वाले हैं? जब वे आपसे पूछते हैं कि आप 15 साल तक एक ही नौकरी में क्यों रहे? और इसी तरह।

अब इसे एक अलग तरीके से देखें: कितने डेवलपर्स ने अपना कोड खो दिया है जो कोई ऐसा व्यक्ति है जो कोड लिखता है जिसे कोई भी पढ़ सकता है?

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

मैं नहीं जानता कि आप किस तरह के व्यक्ति हैं, लेकिन यह मेरे हितों को बेहतर ढंग से पेश करता है।

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


9

बदली जा रहा है, एक डेवलपर के हित के खिलाफ नहीं है?

आप सही हैं, लेकिन मुझे लगता है कि आपने बदली का अर्थ गलत समझा। मुझे एक 1000 डेवलपर्स मिल सकते हैं जो व्यस्त कोड लिखते हैं, अनिर्दिष्ट है जो जल्दी से एक अप्रत्याशित गड़बड़ में बदल सकता है।

एक डेवलपर्स जो न केवल स्थिर कार्यक्रमों का उत्पादन करता है, बल्कि स्वच्छ कोड, सूचनात्मक प्रलेखन और परियोजना की निरंतरता सुनिश्चित करता है, जो न केवल अपूरणीय है, बल्कि यह अमूल्य है


7

मैं इस प्रश्न को एक अलग दृष्टिकोण से संबोधित करूंगा, क्योंकि पहले से ही कई उत्कृष्ट उत्तर हैं।

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

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

आप कौन सा मार्ग पसंद करेंगे?


4

यदि आप असफलता के एकल बिंदु हैं, तो संभवतः आपका ग्राहक (या नियोक्ता) आपको बदलने की कोशिश करेगा; हमेशा एक ऐसा बिंदु होता है जहां सॉफ़्टवेयर को प्रतिस्थापित करने की तुलना में इसे कम करना महंगा होता है, फिर चाहे वह कितना ही आवश्यक क्यों न हो। एक कारण यह है कि आईटी सबसे आउटसोर्स व्यवसायों में से एक है।

दूसरी ओर, बदली होने से आपको कई अनमोल लाभ मिलते हैं:

  • छुट्टी लेने में सक्षम होने के नाते
  • बुलाने पर नहीं
  • एक नई और बाहर निकलने की परियोजना पर काम करने और छोड़ने की स्वतंत्रता

-1: यदि आप असफलता के एकल बिंदु हैं, तो आपका ग्राहक (या नियोक्ता) शायद आपको बदलने की कोशिश करेगा; - मेरे अनुभव में नहीं है। कृपया देखें @evadeflow उत्तर।
जिम जी।

3

यदि आप कुछ त्वरित दस्तावेज लिखने में 5 मिनट नहीं खर्च करते हैं तो आप एक घंटे फिर से पढ़ने और लोगों को यह समझाने में खर्च करने जा रहे हैं कि उन्हें आपके कोड का उपयोग करने की आवश्यकता कब है।

इससे भी बदतर एक नई नौकरी की तलाश में दिन बिताए जा सकते हैं क्योंकि आपके बॉस को पता चला कि आप बनाए रखने योग्य कोड नहीं लिख रहे थे।


3

उत्कृष्ट प्रलेखन अंततः रिफैक्टिंग / एवोल्यूशन के साथ अप्रचलित होगा, और इसे अद्यतित रखना वास्तव में समय लेने वाला है।

स्वच्छ कोड + इकाई परीक्षण> उत्कृष्ट प्रलेखन


1
माना। मैं आपको यह नहीं बता सकता कि मैंने कितने प्रोजेक्ट्स पर काम किया है, जहाँ टीम में हर किसी ने (मेरे सहित) ने तय किया कि हम "इस बार इसे सही करने जा रहे हैं" और डॉक्युमेंट या CppDoc का उपयोग करके सब कुछ डॉक्यूमेंट में रखें और इसे बनाए रखें- दिनांक। यह अभी तक नहीं हुआ है। प्रोजेक्ट शेड्यूल क्या वे हैं, docstrings अनिवार्य रूप से कोड के संबंध में सिंक से बाहर निकल जाएंगे, और हमारा परीक्षण कवरेज न्यूनतम या अस्तित्वहीन होगा। अब मैं डार्ट ऑक्सीजन का उपयोग करने वाले किसी भी व्यक्ति को डार्ट्स को घूरता हूं, और उन्हें पहले मुझे अपने परीक्षण दिखाने के लिए कहता हूं। बिना किसी परीक्षण के कोड के लिए प्रलेखन केवल झूठ का एक पैकेट है।
evadeflow

इस बिंदु के बगल में एक तरह से है - अच्छा इकाई परीक्षण कर रहे हैं प्रलेखन। आप सिर्फ एक विशेष प्रकार के स्वच्छ, प्रलेखित कोड की वकालत कर रहे हैं, यह कहते हुए कि यह नहीं किया जाना चाहिए।
कैस्केबेल

2

आपके प्रश्न का उत्तर है - हां"। हाँ, आपको अच्छे दस्तावेज और स्वच्छ कोड लिखना चाहिए। जानबूझकर अन्यथा करना अखंडता की कमी को प्रदर्शित करता है, जो कि, व्यापार की दुनिया में तेजी से प्रचलित होने के बाद किसी तरह से अचानक "अच्छी" बात नहीं है।

कोई भी अपूरणीय नहीं है। जो लोग ऐसी स्थिति का निर्माण करते हैं, जिसके बारे में वे सोचते हैं कि वे कठिन तरीके से यह पता लगाने के लिए हैं कि वे नहीं हैं। अपने लिए सह-निर्भरता का निर्माण करना प्रतिफलन है क्योंकि यह आपके नियोक्ता को ही नहीं, आपको भी सीमित करता है।


2

सॉफ्टवेयर विकास कंपनियों के मुख्य लक्ष्यों में से एक उनके बस कारक को बढ़ाना है

मिथ्या आधार। एक सॉफ्टवेयर डेवलपमेंट कंपनी का मुख्य लक्ष्य (हर एक जो मैंने, वैसे भी काम किया है) सबसे अच्छा सॉफ्टवेयर का उत्पादन करने के लिए हैं और वे पैसे कमा सकते हैं, जरूरी नहीं कि उसी क्रम में हों। "बस कारक" को कम करना पैसे खोने से बचने का सिर्फ एक तरीका है।

नियम 11 आप पर निर्भर लोगों को रखना सीखें।

इसका तुम्हारे लिए क्या मतलब है?

क्या आप चाहते हैं कि लोग आप पर निर्भर रहें क्योंकि आपने उन्हें इस तरह से कम आंका है कि वे केवल आपकी मदद से आगे बढ़ सकते हैं? या क्या आप चाहते हैं कि लोग आप पर निर्भर रहें क्योंकि आप स्मार्ट और व्यावहारिक, विश्वसनीय, भरोसेमंद हैं, और दूसरों को अपने काम को बेहतर तरीके से करने में मदद करने में सक्षम हैं? क्या आप अपने सहकर्मियों को आपकी मदद के बिना बुरा दिखना चाहते हैं, या क्या आप चाहते हैं कि उन्हें अच्छा दिखने के लिए आपकी सराहना करें?

यह तुम्हारा निर्णय है।


1

(उत्पादन कोड संभालने)

मैं थोड़ा आगे जाता हूं। मैंने प्रोग्राम को "इडियट प्रूफ" बनाने के बारे में लिखा है, लेकिन मैं हमेशा यह नहीं बताता कि: मैं बहुत से कोड लिखता हूं, जो अन्य लोग नहीं देखेंगे या काम नहीं करेंगे (कम से कम, यह उम्मीद है कि जब यह लिखा जाए)। मैंमैं उस मामले में खुद का बचाव करने की कोशिश कर रहा हूं। यह एक अच्छी बात है जब आपका कार्यक्रम आपके लिए समस्याओं का पता लगाता है, और समस्या को इतना सरल बना दिया गया है कि यह काफी स्पष्ट है कि एक त्रुटि है, और इसकी उत्पत्ति है। सच्चाई यह है कि, जब आप कोई प्रोग्राम लिखते हैं (जब तक आप इसे समय से पहले लागू नहीं करते हैं) तो कार्यान्वयन विवरण स्पष्ट होता है, लेकिन उन्हें क्लाइंट के लिए सारगर्भित और त्रुटि प्रतिरोधी होना चाहिए (तब भी जब मॉड्यूल स्थानीयता मौजूद हो)। कारण यह है कि कार्यक्रम बहुत जटिल हो जाते हैं। कभी-कभी आप समस्याओं को अलग कर सकते हैं, लेकिन हर समय नहीं। यदि आप अपने घटकों को बहुत सख्त, सरल, अच्छी तरह से समझाया और बेवकूफ प्रमाण रखते हैं, तो वे अच्छी तरह से बड़े पैमाने पर करते हैं और अधिकांश दोषों को उनके भेजे जाने से पहले पता लगाया जाता है। पुन: उपयोग करना आसान है, और आपके पास अधिक आत्मविश्वास है और कार्यक्रमों का पुन: उपयोग करने का एक आसान समय है, साथ ही, उन जटिल प्रोग्राम जो आप लिखते हैं, केवल कुछ समय के बाद प्रोग्राम से अधिक जटिल (यहां तक ​​कि आप तक) बन जाते हैं। जब आप इसे 6 महीने में पढ़ते हैं, तो यह बेवकूफ सबूत संस्करण की तुलना में समझने और डीबग करने में एक बेतुकी राशि ले सकता है। यदि एक घटक एक टूटने वाले परिवर्तन का परिचय देता है, तो यह लंबे समय तक अन्यथा नहीं चल सकता है। कार्यक्रम जटिल हैं; आप उस वास्तविकता से बच नहीं सकते हैं, लेकिन आप इसे बेवकूफ प्रमाण बना सकते हैं, जो आपके जीवन को बहुत आसान बना देगा जब कुछ गलत हो जाता है या जब इसे पुन: उपयोग या परिवर्तित किया जाना चाहिए। इसलिए, बेवकूफ प्रूफ दृष्टिकोण का अर्थ है कि आपके सॉफ़्टवेयर को आपके जूनियर्स या टीम पर नए लोगों के साथ ही (न सिर्फ किसी के रूप में अच्छा / अनुभवी) के रूप में समझा, पुन: उपयोग या बनाए रखा जा सकता है। प्रतिस्थापन एक अलग चिंता का विषय है: यदि लोग आपके कार्यक्रमों के साथ काम करना पसंद करते हैं, तो आप एक अच्छा काम कर रहे हैं - डॉन ' प्रतिस्थापन के बारे में चिंता मत करो। निश्चित रूप से, मैं उन परिदृश्यों के साथ आ सकता हूं जहां अनजाने कार्यक्रम आपकी नौकरी बचा सकते हैं, लेकिन एक अच्छा कार्यक्रम लिख सकते हैं जिसे अन्य लोग उपयोग कर सकते हैं और बनाए रख सकते हैं स्पष्ट रूप से कम बुराई (दूसरों के पुनर्विक्रेताओं को देखें)। अगर मैं खुद को ऐसा कुछ लिखने के लिए पकड़ता हूं जो बेवकूफ नहीं है, तो मैं इसे ठीक करने की कोशिश करता हूं।

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

आपको वास्तव में पता नहीं है कि आप उस समय के बारे में क्या सोच रहे थे जब आप निष्क्रिय कार्यान्वयन को फिर से करते हैं। जब आप वास्तव में अनुभवी होते हैं, तो समस्या सरल होती है क्योंकि आप स्थापित विधियों या दृष्टिकोणों पर अधिक भरोसा कर सकते हैं जो आप उपयोग करते हैं। हालांकि, यह भी मानता है कि इन पद्धतियों को अपरिवर्तनशील माना जाता है। भले ही दस्तावेज़ीकरण ढीला हो सकता है, फिर भी आपको अपने कार्यान्वयन में रक्षात्मक होना होगा (जैसे कि आप इस परिदृश्य में NULL को पास करने से बेहतर जानते हैं - उस स्थिति का परीक्षण करें)।

एक प्रोग्रामर के रूप में, क्या आपको वास्तव में सभी के लिए उत्कृष्ट दस्तावेज और आसानी से पढ़ने योग्य कोड लिखना चाहिए; या आपको इस तरह से कोड और प्रलेखन लिखना चाहिए कि यह काम करता है और आप स्वयं इसे समझ सकते हैं, लेकिन किसी अन्य व्यक्ति को इसे समझने में परेशानी हो सकती है?

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


1

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


1

मैं यह भी बताने जा रहा हूं कि यदि आपके पास उस कोड को बहुत बार देखने का अवसर नहीं है, तो आपको भी इसे छह महीने में पता लगाने में परेशानी होगी, यदि आप इसे जानबूझकर मानते हैं।


0

मैं दस्तावेज लिखता हूं कि मैं कौन सा कोड लिखता हूं, इसलिए नहीं कि दूसरे इसे पढ़ सकें, बल्कि इसलिए कि मैं इसे 3 महीने में पढ़ सकता हूं ! यह रखरखाव को आसान बनाने के बारे में है। यदि आप लिखे गए कोड के लिए ज़िम्मेदार हैं, और आप बग्स को ठीक नहीं कर सकते हैं जो बाद में लाइन के नीचे दिखाते हैं, तो आप इसे अच्छी तरह से प्रलेखित करना चाहेंगे ... यह बहुत अप्रासंगिक है कि यदि आप सक्षम नहीं हैं तो आप कैसे बदली जा सकती हैं अपना काम करने के लिए!


-1: आप स्व-दस्तावेजीकरण कोड के लिए प्रयास क्यों नहीं करते हैं? के रूप में, सबसे अच्छा, निरर्थक प्रलेखन, और सबसे खराब, प्रलेखन के विपरीत, जो बहुत जल्दी अप्रचलित हो जाएगा? कृपया @xsAce उत्तर देखें।
जिम जी।

0

प्रत्येक "अपूरणीय" कंप्यूटर पेशेवर के साथ बातचीत करने का दुर्भाग्य मुझे मिला है, बड़े हिस्से में, क्योंकि वे अपने नियोक्ता के संसाधनों को बंधक बनाने की कोशिश कर रहे थे। जब मेरे पास ऐसे लोग होते हैं जो मुझे रिपोर्ट करते हैं तो मुझे बताते हैं कि उनका समय दस्तावेज़ीकरण को "बेकार" करने के लिए मूल्यवान है, मैं उन्हें जल्द से जल्द बदल देता हूं।

ऐसा लगता है कि यदि कोई संभावित कर्मचारी सत्ता के 48 कानूनों को नैतिक या नैतिक रूप से स्वीकार्य मानता है, तो आप उनके बिना बेहतर होंगे।


-1: जब मेरे पास ऐसे लोग होते हैं जो मुझे रिपोर्ट करते हैं तो मुझे बताते हैं कि उनका समय दस्तावेज़ीकरण को "बेकार" करने के लिए मूल्यवान है, मैं उन्हें जल्द से जल्द बदल देता हूं।
जिम जी।

@ जिम जी: अच्छा लगा। मुझे लगता है कि आप अपना समय डेल करने के लिए बेकार है दस्तावेज़ीकरण बेकार है ...
जॉन Percival Hackworth

0

यदि आप वास्तव में अपूरणीय होना चाहते हैं (जिसे आप सभी उत्तरों को पढ़ने के बाद पुनर्विचार करना चाहते हैं ...) - तो कोड का दस्तावेजीकरण नहीं करने के साथ क्यों रुकें?

अचूक कोड लिखने के तरीके के बारे में वास्तव में शानदार गाइड है जिसे आपको निश्चित रूप से पढ़ना चाहिए: http://thc.org/root/phun/unmaintain.html

का आनंद लें! (मैं सबसे निश्चित रूप से किया था ...)


वहाँ भी है "उतार-चढ़ाव" :)
CraigTP
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.