प्रलेखन अपमानजनक - इससे कैसे निपटें?


12

महत्वपूर्ण : हमारे पास स्रोत कोड प्रलेखन के साथ कोई समस्या नहीं है । यह नियमित कोड ऑडिट के अंतर्गत आता है और इसे अद्यतित रखा जाता है। हमारी समस्या डेवलपर्स प्रलेखन (या, "बाहरी" यदि आपको पसंद है) के साथ है, तो प्रोग्रामर से प्रोग्रामर तक छोटे ब्लॉग जैसी युक्तियां जो एक बार लिखी जाती हैं, अक्सर पीछे रह जाती हैं।


हम प्रोग्रामर प्रलेखन का उत्पादन करने के लिए विकी जैसी प्रणाली का उपयोग करते हैं - प्रोग्रामर प्रोग्रामर द्वारा लिखे गए लेखों में थोड़ा और अधिक विवरण में वर्णन करते हैं कि कोड का विशेष टुकड़ा कैसे काम करता है। उन विकी पृष्ठों में आमतौर पर शामिल हैं:

  • एपीआई के कुछ हिस्सों के लिए डिजाइन निर्णयों के पीछे प्रेरणा (उदाहरण के लिए; हमने यह बदसूरत काम किया क्योंकि यह विशेष रूप से 3 पार्टी लाइब्रेरी इस तरह से सामान करना चाहता है, क्योंकि यह अन्य पुस्तकालय ..., क्योंकि ...)
  • इस बात की व्याख्या कि हम विशेष रूप से सामान्य कार्यों से कैसे निपटते हैं (उदाहरण के लिए, तुच्छ पॉपअप प्रदर्शित करना, जिसे उपयुक्त एप्लिकेशन शैलियों का संदर्भ देना है, रजिस्ट्री घटक में खुद को पंजीकृत करना है, और अन्य घटक द्वारा स्वचालित रूप से "स्कैन" होने के लिए कुछ इंटरफ़ेस लागू करना है)
  • अच्छी प्रथाओं (व्यक्तिपरक के रूप में, हम वास्तव में इस सामान को लिखते हैं)
  • पर्यावरण विन्यास, आवश्यक उपकरण और इसकी स्थापना

सामान्य तौर पर, मुख्य रूप से लेखन कोड से संबंधित सामान जो अपने आकार और ब्लॉग पोस्ट / लेख जैसी प्रकृति के कारण नियमित कोड-प्रलेखन में फिट नहीं होता है।

समस्या

जहाँ तक इस प्रणाली को पेश करने का कुछ महीने पहले एक अच्छा विचार था, आजकल मुझे ऐसा लगता है कि यह हल करने की तुलना में अधिक समस्याएं पैदा कर रहा है। उदाहरण के लिए:

  • लोग कर लिखने लेख ... लेकिन एक बार कोड बदल गया है, विकी अद्यतन शायद ही कभी इस प्रकार है
  • खरोंच के बहुत से लेख, किसी ने हड़बड़ी में लिखे और वैसे ही छोड़ दिए
  • भले ही लेख-अनुरोध आमतौर पर परियोजना के नेतृत्व से आता है, यह शायद ही कभी शुद्धता / संरचना के लिए सत्यापित होता है - जिसके परिणामस्वरूप कभी-कभी खराब गुणवत्ता होती है

सामान्य गिरावट। कोड बदल गया, विकी वही रह गया। अगली बार जब कोई व्यक्ति जानकारी के लिए देखता है, तो वह जो पाता है वह पुराने, कम गुणवत्ता वाले सामान का गुच्छा होता है - और सोच रहा है कि क्या चल रहा है, क्या वह जो सामान मिला है वह सटीक है या (इससे भी बदतर) जो इसके कुछ हिस्से हैं। और जो मदद करने वाला था, वह उसके विपरीत काम करता है।

फिलहाल ऐसा लगता है कि लोग समस्या के बारे में जानते हैं, इसमें प्रोजेक्ट लीड शामिल है, लेकिन जाहिर तौर पर कोई भी इसके साथ कुछ भी करने के लिए परेशान नहीं दिखता है (या करने के लिए अधिक दिलचस्प सामान है)।

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


3
हम अपनी बियर मीटिंग के बाद (दोपहर लगभग 3 बजे तक) बंद होने के बाद हर "उत्पादकता" शुक्रवार को अपने बाहरी दस्तावेज को अपडेट करते हैं। यह काफी अच्छा काम करता है।
lurkerbelow

क्या यह जानकारी केवल आपकी कंपनी के इंट्रानेट पर कर्मचारियों के लिए उपलब्ध है, या आपके एपीआई का उपयोग करने वाले तीसरे पक्ष के देवों के लिए भी है?
जेम्स

@ नाम: शुद्ध रूप से घर के डेवलपर्स के लिए। यह वास्तव में सभी के लिए उपदेशात्मक है, वास्तव में इस बात के लिए कि अन्य टीमों में से कोई भी उन सूचनाओं का उपयोग नहीं करेगा। सख्ती से प्रोजेक्ट / टीम-बाउंड।
किमी

जवाबों:


7

ऐसा लगता है कि आप विकी में बहुत अधिक मामूली बातों का दस्तावेजीकरण कर रहे हैं।

कोड में कोड और विधियों के दस्तावेज़ ब्लॉक । अपने कोड को स्व-दस्तावेज़ीकरण बनाने की कोशिश करें ताकि आपको बहुत सारी टिप्पणियां न करनी पड़े। इकाई परीक्षण लिखने से भी मदद मिल सकती है।

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

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

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

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


3

दस्तावेज़ीकरण को एक सुपुर्दगी के रूप में माना जाना चाहिए और इस प्रकार ट्रेसबिलिटी और स्वीकृति के नियमों के अधीन होना चाहिए, साथ ही विकसित होने के लिए उचित समय दिया जाना चाहिए।

जब यह नहीं है तो लोगों को "उम्मीद" सॉफ्टवेयर प्रलेखन को देखना असामान्य नहीं है।


2

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

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


प्रारंभिक लिखने में कोई समस्या नहीं है। जब वह डॉक्टर पहले से मौजूद है, और कोई अन्य व्यक्ति मूल मॉड्यूल कोड को बदलता है , तो वह अक्सर बाहरी डॉक्स / विकी को "भूल जाता है" (या कभी-कभी यह भी पता नहीं होता है कि ऐसी चीज मौजूद है)।
किमी

1
फिर रोल-बैक उसके समाधान को इंगित करता है कि विकी के किन वर्गों को कार्य समाप्त करने के लिए अद्यतन करने की आवश्यकता है
आंद्रेजेज बोबाक

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

यह सही है, और एक बात सुनिश्चित है - टीम के बीच उनका जीवन आसान नहीं होगा
आंद्रेजेज बोबाक

2

यदि किसी चीज़ में तेज़ी से बदलाव हो रहा है, तो उसे कोड के बाहर नहीं रखा जाना चाहिए।

एपीआई के कुछ हिस्सों के लिए डिजाइन के फैसले के पीछे प्रेरणा

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

सामान्य गिरावट। कोड बदल गया, विकी वही रह गया।

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


1
+1, मुझे लगता है कि प्रलेखन, जो तेजी से बदलता है, को स्रोत कोड से निकाला जाना चाहिए। यह डेवलपर के लिए कम दर्दनाक है।
lurkerbelow

+1: निर्णय समग्र रूप से सलाह देता है, लेकिन दुर्भाग्य से आप इकाई परीक्षणों (यूआई देव प्राइम उदाहरण) के साथ अपने सभी "कोड संबंधी मुद्दों" को कवर नहीं कर सकते। काश ऐसा होता!
किमी

@ जिमी: जब आप जीयूआई लेआउट के लिए एक उपयोगी इकाई परीक्षण नहीं लिख सकते हैं, तो आप निश्चित रूप से कार्रवाई और बैक-एंड लॉजिक के आह्वान का परीक्षण कर सकते हैं
पार्सिफाल

अगर मैं "API के भागों के लिए डिज़ाइन निर्णयों के पीछे प्रेरणा" रखता हूं, तो कोड / टिप्पणियों में, मेरे स्रोत की फाइलें फट जाएंगी। इसके बजाय, मैं इन मुद्दों को ट्रैकर में अधिक विवरण में ट्रैक करता हूं और केवल कोड टिप्पणियों में संबंधित टिकट का उल्लेख करता हूं
gnat

1

समस्या से निपटने का एक अच्छा तरीका है, इसे प्रक्रिया का हिस्सा बनाना। यदि आपके पास विकी पर संबंधित पृष्ठों का कोड ट्रेस / संदर्भ है, तो एक डेवलपर आसानी से पता लगा सकता है कि क्या अद्यतन करने की आवश्यकता हो सकती है। इसके अतिरिक्त, समीक्षकों को कोड समीक्षा में यह सुनिश्चित करने के लिए ज़िम्मेदार बनाते हैं कि विकी अप-टू-डेट (अपडेट के संबंध में) है।

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


0

यदि आप एक .net भाषा का उपयोग कर रहे हैं, तो ( Sandcastle ) जो XML दस्तावेज़ीकरण (C # में C // ) लेता है और इसे MSDN सहायता प्रारूप में रूपांतरित करता है।

प्रारूप में विवरण, टिप्पणियां शामिल हैं, और कोड नमूने, साथ ही कुछ अन्य विशेषताओं को शामिल करने की क्षमता है। आप .CHM, .HsX, .MSCH और HTML / ASP.NET फॉर्मेट में आउटपुट कर सकते हैं। वास्तविक प्रोजेक्ट आपके समाधान में जोड़ा जाता है, और बिल्ड सर्वर पर बनाया जाता है। हमने यह किया है और हर रिलीज के लिए एक वेब साइट पर तैनात किया है, और उपभोक्ता इसे पसंद करते हैं क्योंकि प्रलेखन रिलीज के लिए प्रासंगिक है, और लगातार अपडेट किया जाता है।

आप यह भी निर्दिष्ट कर सकते हैं कि दस्तावेज में क्या शामिल किया जाए। वर्तमान में हमारे पास 2 परियोजनाएं हैं: बाहरी उपभोक्ताओं के लिए एक जिसमें केवल अनुबंध और उपयुक्त वस्तुएं (कक्षाएं, एनम आदि) शामिल हैं, और एक आंतरिक डेवलपर्स के लिए जिसमें एपीआई में सब कुछ शामिल है, जिसमें निजी और आंतरिक ध्वजांकित आइटम शामिल हैं।

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


0

मैं दो क्षेत्रों पर ध्यान केंद्रित करूंगा, 1) कोड। 2) कोई नहीं-कोड नोट और दस्तावेज़।

1) कोड।

इसे स्व-प्रलेखन बनाने का प्रयास करें। अतीत में मैंने पाया कि अक्सर सलाह दी जाती थी लेकिन शायद ही कभी अच्छी तरह से समझाया जाता है, इसलिए ...

छद्म कोड के इस प्रकार के बजाय:

# Routine by mdd on 7/25/2012
# processes cars for sale
a=0
col = Car.all
Collection.loop |a|
 if a.stat = 'fs' then 
   a+= a.value    
   call easo 
  endif
end

ऐसा कोड करें जो इस तरह दिखता है:

accumulating_potential_sale_revenue = 0
cars_to_check = Car.all
cars_to_check.loop |one_car|
  if one_car.sell_status == 'for_sale'
    accumulating_potential_sale_revenue+= one_car.sale_price
    call email_about_special_offer(car)
  endif
end

'जब किसने किया था' जानकारी ट्रैक करने के लिए स्रोत नियंत्रण का उपयोग करें।

2) गैर-कोड

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

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