ऑब्जेक्ट ओरिएंटेड प्रथाओं को कैसे फैलाना है इसके बारे में सुझाव [बंद]


14

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

मेरा प्रश्न है: क्या आप सुझाव दे सकते हैं कि इस प्रकार का ज्ञान कैसे फैलाया जाए?

मुझे पता है कि समस्या की सतह यह है कि इन अनुप्रयोगों में एक खराब वास्तुकला और डिजाइन है। एक और मुद्दा यह है कि कुछ डेवलपर्स हैं जो किसी भी तरह के परीक्षण को लिखने के खिलाफ हैं।

इसे बदलने के लिए कुछ चीजें जो मैं कर रहा हूं (लेकिन मैं या तो विफल हो रहा हूं या परिवर्तन बहुत छोटे हैं)

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

कुछ चीजें जो मैं भविष्य में करने की सोच रहा हूं (लेकिन मुझे चिंता है कि वे अच्छे नहीं होंगे)

  • OO इंजीलवादियों की एक टीम का गठन करें, जो विभिन्न टीमों में सोच के एक OO तरीके का प्रसार करता है (इन लोगों को हर कुछ महीनों में टीमों को बदलने की आवश्यकता होगी)।
  • डिजाइन की समीक्षा सत्र चलाना, डिजाइन की आलोचना करना और सुधार का सुझाव देना (भले ही समय की कमी के कारण सुधार न किए गए हों, मुझे लगता है कि यह उपयोगी हो सकता है)

टीमों के कोच के साथ मुझे जो कुछ मिला, वह यह है कि जैसे ही मैं उन्हें छोड़ता हूं, वे पुरानी प्रथाओं पर वापस लौट आते हैं। मुझे पता है कि मैं उनके साथ बहुत समय नहीं बिताता, आमतौर पर सिर्फ एक महीना। इसलिए मैं जो कुछ भी कर रहा हूं, वह छड़ी नहीं है।

मुझे खेद है कि यह प्रश्न हताशा के साथ फैला हुआ है, लेकिन इसे लिखने के लिए परिवर्तनकारी मेरे सिर को दीवार पर मारना था जब तक कि मैं बाहर नहीं निकलता।


मॉड्यूलर प्रोग्रामिंग को देखो - en.wikipedia.org/wiki/Modular_programming
Yusubov

ElYusubov, "मानक" TDD करना है, जो फिर से हर टीम का अनुसरण नहीं करता है। और कुछ टीमें काफी अच्छे नतीजों के साथ बीडीडी भी करती हैं। (TDD और BDD, इनसाइड-इन, मॉड्यूलर प्रोग्रामिंग की तरह हैं)।
अगस्तो

10
कृपया, OO को कुछ स्वर्ग भेजने के रूप में न देखें जो आपकी समस्याओं का समाधान करेगा या करना चाहिए। यह निश्चित रूप से बहुत दूरदर्शी है। OO के फ़ायदे हो सकते हैं लेकिन यहाँ इस विषय पर कुछ अलग-अलग विचार दिए गए हैं: presententialtype.wordpress.com/2011/03/15/… OO पर ध्यान केंद्रित करने की कोशिश न करें या यहाँ तक कि खुद को प्रतिमानित करें लेकिन सर्वोत्तम प्रथाओं की तलाश करें, जो आपके लिए काम करते हैं, cs। brown.edu/~sk/Publications/Papers/Published/...
AndreasScheinert

एंड्रियास, मैं लोगों को एफपी सीखने और ओओ में सिद्धांतों को लागू करने के लिए प्यार करता हूँ !!! मैं आपसे 100% सहमत हूँ। मेरे पास समस्या यह है कि काफी कुछ डेवलपर्स चीजों को उसी तरह से करने में सहज हैं जैसे वे उन्हें तब से कर रहे हैं जब से वे काम करना शुरू कर रहे हैं, और यात्रा में उन्होंने अपने समाधान कौशल में सुधार नहीं किया है।
अगस्तो

3
"स्प्रेड द वर्ड" का प्रयास न करें। कयामत और विनाश की शिक्षाएँ एक पैदल यात्रा से उपजी हैं, जो 21 वीं सदी के विश्वविद्यालय के स्नातक के साथ नहीं जातीं, जैसा कि उन्होंने 15 वीं शताब्दी के किसानों के साथ किया था।
मटनज़

जवाबों:


19

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

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

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

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

TL; DR: यदि आप किसी भी चीज को पूरी तरह से प्रचारित करना चाहते हैं, तो उसे (मंच-अज्ञेयवादी) अच्छी कोडिंग प्रथाओं को मानें, न कि किसी विशेष प्रतिमान या पद्धति को।


4
+1: यह पहचानने के लिए कि OOP उन्हें नहीं बचाएगा। इंजीलवादी अक्सर भूल जाते हैं कि .....
मैट्नज़

1
+1: लेकिन अगर मैं कर सकता तो मैं 10 बार बढ़ा देता। हालांकि यह सच है कि ओओपी प्रक्रियात्मक प्रोग्रामिंग की तुलना में कोडिंग संरचना के लिए बेहतर समर्थन प्रदान करता है, ओओपी अकेले पर्याप्त नहीं है। SCRUM, TDD और बाकी सभी के साथ समान। मुझे लगता है कि ये सभी उपयोगी उपकरण हैं लेकिन वे (1) प्रत्येक प्रोग्रामर के मूल रवैये को सरल, स्वच्छ, मॉड्यूलर कोड लिखने के लिए नहीं बदल सकते हैं, (2) एक या एक से अधिक वास्तुकारों के काम को जिन्हें पूरी टीम द्वारा पहचाना जाता है और सुनिश्चित करें कि समग्र कोड वास्तुकला सुसंगत रहता है। इन पूर्वापेक्षाओं के बिना एक टीम आसानी से मिट्टी की एक बड़ी वस्तु-उन्मुख गेंद का उत्पादन कर सकती है।
गियोर्जियो

5

आप किसी ऐसे व्यक्ति को नहीं बदल सकते जो पहले से ही बदलाव नहीं करना चाहता है। यही कारण है कि आपने जिन टीमों को कोचिंग दी है, वे अपने पुराने तरीकों पर लौट आए हैं।

तो वास्तव में, आपका सवाल यह होना चाहिए कि "मैं कैसे डेवलपर्स को OO दृष्टिकोण में बदलना चाहता हूं?"

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

यह दिखाएं कि विभिन्न OO तकनीक कम कोड को कैसे आगे बढ़ाएंगी, जो उन्हें तेजी से विकास के समय के साथ-साथ लिखना होगा। लगभग कोई भी डेवलपर एक प्रस्ताव को सुनेगा जिससे उनका काम आसान हो जाएगा।

फिर यह दर्शाना शुरू करें कि OO तकनीक किस तरह से अधिक आसानी से बनाए रखा कोड का नेतृत्व करेगी। उस प्रकार के वातावरण में हर कोई " परिवर्तन " करने के डर से रहता है जो उत्पादन एप्लिकेशन के एक तिहाई को तिरस्कृत करता है। इनकैप्सुलेशन इस जोखिम से बचने की कुंजी है और एप्लिकेशन की प्रत्येक (जल्द ही होने वाली) परत को अन्य परतों के साथ अपना अनुबंध बनाए रखने की अनुमति देता है।

मैं देखूंगा कि डेटा कैसे पास किया जा रहा है। यदि यह हर बार चर की एक लंबी सूची है, तो एक प्रारंभिक चरण के रूप में संरचना (या हांसी! एक वर्ग !!!) के भीतर कुछ ऊपर लपेटने पर विचार करें। बस एक वस्तु के भीतर डेटा को लपेटना परतों के बीच अनुबंध की शुरुआत है।

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

समीक्षा टीमों और OO प्रचारकों के आपके विचार अच्छे हैं। यह सिर्फ आप से अधिक होना चाहिए जो इस एजेंडे को आगे बढ़ा रहा है।


ग्लेन जवाब देने के लिए धन्यवाद! मुझे लगता है कि मैं वही कर रहा हूं जो आप सुझाते हैं। काफी कुछ प्रबंधन में खरीद रहे हैं और कुछ टीमों का नेतृत्व टीमों द्वारा धीमा किया जा रहा है कि अच्छी प्रथाओं का पालन नहीं करते हैं, और परिणामस्वरूप यह उनके काम को और अधिक कठिन बना देता है। आप अपने पहले वाक्य पर जो कहते हैं वह बहुत सही है और यह समस्या का हिस्सा है। मुझे लगता है कि कुछ लोगों का उपयोग चीजों को गलत करने के लिए किया जाता है और उनमें सुधार करने की प्रेरणा नहीं होती है।
अगस्तो

4

मेरा अनुभव है कि प्रक्रियात्मक मानसिकता से ओओ मानसिकता पर स्विच करना एक बड़ी बाधा है। इसके लिए दृढ़ता की आवश्यकता होती है जो कई डेवलपर्स सहन करने में विफल होते हैं। यह मुख्य रूप से है क्योंकि OO की बुनियादी बातों पर नजर डाली जाती है।

OO इंजीलवादियों की एक टीम का गठन करें, जो विभिन्न टीमों में सोच के एक OO तरीके का प्रसार करता है (इन लोगों को हर कुछ महीनों में टीमों को बदलने की आवश्यकता होगी)।

एक अन्छा विचार है। यह पूरी तरह से होना चाहिए और जमीन से ओओ के बारे में बात की जानी चाहिए। जब मैं सीख रहा था OO ऐतिहासिक उपाख्यानों ने बहुत मदद की।

मैं सुझाव भी दूंगा,

  • चूँकि अभिप्रेरणा की कुंजी है, उन्हें यह बताते हुए प्रेरित करें कि OO अपने कार्य को कैसे सुधार सकता है, विशेष रूप से कोड मेंटेनेंस।
  • कोड की समीक्षा करें और यह दर्शाएं कि रचना, वंशानुक्रम, बहुरूपता और प्रतिमानों को लागू करने के लिए कैसे करें।
  • SCRUM जैसी एक अच्छी प्रक्रिया का परिचय दें और इसमें डेवलपर्स को संलग्न करें।
  • Act रिफैक्टिंग ’और to रिफैक्टिंग टू पैटर्न’ जैसी किताबें पढ़ना अनिवार्य करें।

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

1

मैं शूवो नसेर से सहमत हूं। यह एक बड़ी बाधा है, इसलिए इसे एक चढ़ाई की तरह व्यवहार करें। ओओपी का उपयोग करके संपूर्ण एप्लिकेशन को डिज़ाइन करना सीखना समय लेने वाला है।

  1. उन लोगों को पहचानें जो ओओपी को समझते हैं और उन्हें टीम के नेताओं, प्रशिक्षकों, डिजाइनरों, कोड समीक्षकों आदि के करीब ले जाते हैं।
  2. प्रशिक्षण संदर्भ के रूप में मौजूदा परियोजना का उपयोग करें। संभवतः # 1 टीम के लोग उस टीम में थे।
  3. कुछ मौजूदा परियोजनाओं को रिफलेक्टर करें। यह कुछ लोगों को उनके प्रक्रियात्मक कोड के बीच OO कोड के बीच एक पुल बनाने में मदद कर सकता है। मूल बातें से शुरू करें। उन्हें देखना होगा कि आप इन सिद्धांतों का उपयोग कब, कहां और क्यों करते हैं।
  4. उन्हें डिजाइन सत्रों में उन लोगों के साथ शामिल करें जो जानते हैं कि वे क्या कर रहे हैं।
  5. उन्हें देव टीमों पर किसी ऐसे व्यक्ति के साथ रखें जो डिजाइन मार्गदर्शन प्रदान कर सकता है और यह सुनिश्चित कर सकता है कि परियोजना ओओ सिद्धांतों से चिपके रहती है (यह मानते हुए कि आप इसे पहली जगह में करना चाहते हैं क्योंकि यह विकास में सुधार करेगा।)

दत्तक लाभ को देखकर शायद ही कभी पूर्ववर्ती हो। हम जटिल डिजाइन के बारे में बात कर रहे हैं और टीपीएस रिपोर्ट कवर शीट्स का उपयोग नहीं कर रहे हैं ।


-1। यह उत्तर लगभग वैसा ही है जैसा कि यह प्रबंधक के लिए था, सामान्य डेवलपर के लिए नहीं। वह लोगों को "स्थानांतरित" नहीं कर सकता है और वह लोगों को "शामिल" नहीं कर सकता है। IMO।
यूफोरिक

+1। यह एक प्रबंधन समस्या है, और इसे एक के रूप में संबोधित किया जाना है। यह मध्यम और निचला प्रबंधन है (टीम लीडर प्रबंधन है) जो शैली को निर्धारित करता है। किसी कंपनी में बदलाव नीचे से तभी आता है जब वह प्रबंधन के लिए पारदर्शी हो। OOP पर स्विच करने के लिए शीर्ष पर सोच में बदलाव की आवश्यकता होती है। विकास प्रक्रिया को ध्यान में रखते हुए प्रक्रियात्मक / झरना ओओपी के लिए थोड़ा अनात्म है।
बजे डेविड हैमेन

@ यूफ़ोरिक - आपको बस प्रबंधन की स्वीकृति की आवश्यकता है। ओपी ने उल्लेख किया "टीमों ने मुझे कोचिंग दी है"। हो सकता है कि वह प्रबंधन नहीं है, लेकिन उनके काम करने के तरीके पर प्रभाव पड़ता है।
जेएफओ

@JeffO हाँ, आप सही हैं। लेकिन यह सब नीचे आता है अगर प्रबंधन ऐसे प्रयासों का समर्थन करना चाहता है। मेरे आखिरी काम में, ऐसा कुछ करना असंभव था, क्योंकि प्रबंधन डेवलपर्स की शिक्षा में रुचि नहीं रखता था।
व्यंग्यात्मक

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

1

आप पहले से ही अच्छे विचार रखते हैं

आपके प्रश्न में जिन विचारों को रेखांकित किया गया है, वे उत्कृष्ट हैं। यह एक बड़ा आश्चर्य है कि आपको सफलता नहीं मिल रही है। यह 2012 है और ऑब्जेक्ट-ओरिएंटेड क्रांति लंबे समय से अत्याधुनिक अत्याधुनिक से चली आ रही है। ऐसा लगता है जब तक आपके पास बहुत कम टर्न ओवर नहीं है और बहुत कम हायरिंग है, तो आपके पास एक कठिन समय कई दर्जन या सौ अच्छे ठोस ऑब्जेक्ट ओरिएंटेड प्रोग्रामर नहीं होंगे।

फुर्तीली या वस्तु उन्मुख?

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

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

काबू करने के लिए समस्याएं?

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

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

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

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

आधार का समर्थन बहुत छोटा है? उन 250 लोगों के बीच एक यात्रा करें और उन्हें तीन श्रेणियों में क्रमबद्ध करें: गले लगाने के लिए तैयार, सीखने के लिए तैयार और सीखने के लिए तैयार नहीं। आपके पास कुछ ऐसे लोगों से निराश होने के अच्छे कारण हैं, जिन्हें बदलाव करने में कोई दिलचस्पी नहीं है। आप रस्सी पर जोर दे सकते हैं। यह व्यर्थ प्रयास है। यदि आपको लगता है कि परिवर्तन का समर्थन करने वाले के लिए क्या है, तो आप यह पता लगा सकते हैं कि उनमें क्या रुचियां हैं।

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

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

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

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


0

यह एक टिप्पणी होनी चाहिए थी, लेकिन जब से मैं स्पष्ट रूप से अभी तक सामान पर टिप्पणी करने में सक्षम नहीं हूं, तब तक एक जवाब हो सकता है।

इस तरह की सफलताओं में सबसे महत्वपूर्ण बात यह है कि (यह ओओपी या किसी अन्य प्रतिमान-स्थानांतरण, कहते हैं, कार्यात्मक प्रोग्रामिंग या जो कुछ भी अगले वर्ष में आता है) DO CODE REVIEWS और PEER PROGRAMMING है । उन्हें एक साथ लाने के लिए, अलग-अलग तरीकों से टीमों को चलाएं जिससे उन्हें मदद मिलेगी।

ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग के लिए मेरा व्यक्तिगत रास्ता तब शुरू हुआ जब कुछ यादृच्छिक असंगत कोड समीक्षा ने मुझे पूर्ण सी ++ ओओ के बिना एक मॉड्यूलर तरीके से सामान बनाने और राज्य की नकल करने के लिए पीछा किया; कोड की तरह सोचो

extern float clients_total;

void client_add(float sum);  
void client_substract(float sum);
float client_get_total();

(ध्यान दें कि client_total पूरी तरह से निरर्थक हो सकता है, विशेष रूप से खराब नियोजित उदाहरण है)

और मैंने ऐसा करना तब ही समाप्त किया जब अधिक वरिष्ठ सहकर्मी ने सिर्फ मेरी स्क्रीन पर इशारा किया और कहा "देखो, यदि आप एक ही बार एक से अधिक चीजें लिखते हैं, तो एक प्रक्रिया या फ़ंक्शन का उपयोग करें और बस इसे बार-बार कॉल करें"।

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

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

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