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