आइंस्टेलुंग प्रभाव का संयोजन [बंद]


17

Einstellung प्रभाव "एक विशेष तरीके से किसी दिए गए समस्या को हल करने भले ही देखते हैं एक व्यक्ति की प्रवृत्ति" बेहतर के लिए संदर्भित करता है "या समस्या के हल के लिए अधिक उपयुक्त तरीकों।"

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

दो बहुत ही ठोस उदाहरण देने के लिए मैं लंबे समय से वेब अनुप्रयोगों का निर्माण कर रहा हूं, लंबे समय तक जावास्क्रिप्ट फ्रेमवर्क (जैसे jQuery) और बेहतर वेब एप्लिकेशन फ्रेमवर्क (जैसे ASP.NET MVC) का व्यापक उपयोग करने के लिए। यदि मेरे पास क्लाइंट का काम है, जहां मैं एक समय की कमी या समस्या डोमेन या व्यावसायिक नियमों से मुद्दों को दबा रहा हूं, तो मैं केवल एक समाधान प्राप्त करने की कोशिश करने के लिए जो जानता हूं, उसका उपयोग करता हूं। इसमें बहुत ही बदसूरत चीजें शामिल हैं जैसे

document.getElementById 

या ASP.NET MVC दृष्टिकोण के साथ चीजों की खोज करने के तरीके के बजाय टेम्पलेट बाउंड कंट्रोल (डेटालिस्ट / रिपीटर) के साथ ASP.NET का उपयोग करना।

एक तकनीक जो मैंने अतीत में इस्तेमाल की है, वह है निजी परियोजनाएं जो इन नई तकनीकों की खोज के लिए मौजूद हैं, लेकिन इसे बनाए रखना मुश्किल है। क्या अन्य तरीकों की सिफारिश की जा सकती है?


क्या आप सोलो में काम करते हैं?
अपालाला

3
"MVC" बैंडवागन के बारे में सावधान रहें, इसकी जगह है। यदि कोई वेबफ़ॉर्म समाधान काम करता है तो रहने दें।
21:30 पर डार्क नाइट

जवाबों:


4

यह एक बड़ा सवाल है। और मुझे लगता है कि यह सिर्फ वरिष्ठ प्रोग्रामर नहीं हैं जो इसमें भाग लेते हैं - इसे जल्दी से संबोधित करना एक शिक्षार्थी के लिए अपने कौशल विकास में तेजी लाने का एक शानदार तरीका हो सकता है।

इस मुद्दे के दो पक्ष हैं - एक जो बुरा है और एक जो वास्तव में अच्छा है

बुरा - गलत समाधान चुनना

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

साथ में एक नई समस्या आती है। आपके लिए, यह नई समस्या समस्या ए की तरह दिखती है , इसलिए आप इसे उस तरह से हल करते हैं जैसे आप आमतौर पर ए को हल करते हैं । कुछ सही नहीं लगता है, और इसमें अधिक समय लगता है, और जब आप काम करते हैं तो आपको यह एहसास होता है कि यह एक नई समस्या है, सी । यह ए की भिन्नता है जिसका आपको पता नहीं था।

तो आप इस गलती को फिर से नहीं करने के लिए क्या करते हैं? दो चीज़ें:

  1. इस नई समस्या के बारे में अलग-अलग जानकारी दें। पता लगाएँ कि क्या दृष्टिकोण अलग तरीके से और क्यों काम कर सकते हैं।
  2. इस समस्या को दूर करें और अधिक नई समस्याओं को हल करने के लिए आगे बढ़ें।

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

अच्छा - क्षमता

वास्तविक दुनिया में, समय सीमा और सीमित संसाधनों के साथ, जो आप जानते हैं उसका उपयोग करना हमेशा बुरा नहीं होता है:

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

यही कारण है कि एक बुरी बात नहीं है - यह जोखिम विश्लेषण उपयोग कर रहा है चुनने के लिए दक्षता 100% सटीकता से अधिक। यह हर दिन किया जाता है और हम उन सभी चीजों में बंध जाते हैं जो हमें नहीं मिल रही हैं अगर हमने ऐसा नहीं किया।

तो, आपके प्रश्न का उत्तर देने के लिए:

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

  1. नई समस्याओं की सूची बनाना और उनकी खोज करना
  2. समस्या के लिए सही समाधान का चयन करने में बेहतर हो ; सिर्फ यह जानने के बजाय कि कौन सा समाधान है, जानें कि यह सही क्यों है।
  3. अपने निर्णय लेने के कौशल का अभ्यास और सान करें कभी-कभी दक्षता सही विकल्प होती है, और उन समय को पहचानने में बेहतर होने से औसत दर्जे का वास्तविक लाभ होगा।

मैं इस जवाब को प्यार करता हूं, समय में डालने के लिए धन्यवाद।
डकोटा

9

अपने कौशल को बेहतर बनाने के लिए अपने काम के समय का 20% अलग सेट करें / तेज़ी के बजाय सही करें। अन्यथा, आप धीरे-धीरे पीछे गिरने लगते हैं। इसका मतलब यह हो सकता है कि आपको अल्पावधि में कम काम मिले, लेकिन लंबी अवधि में निवेश बंद हो जाएगा।

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


2
यदि आपके पास इसके लिए समय है, तो 20% बढ़ाएं। मैं ऐसा अनुभव भी नहीं कर रहा हूं, लेकिन मैंने पहले ही यह समझ लिया है: यह करना हमेशा सही रहता है। इसके अलावा, आपके द्वारा इसे ठीक करने के बारे में जितना अधिक पता है, उतनी ही तेज़ी से आप इसे सही तरीके से कर पाएंगे और अंततः (ठीक है, कि मैं क्या उम्मीद करता हूं; पी) दोनों एक साथ विलीन हो जाएंगे और आप बहुत कुछ सही कर पाएंगे। तेज।
टिजिन

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

1
या 50% जब काम कम होता है, या परियोजनाओं के बीच भी अधिक होता है। मेरे द्वारा अध्ययन किए गए कुछ भी व्यर्थ नहीं गया है। यह सभी बाद में की तुलना में जल्द ही इस्तेमाल किया गया है, भले ही यह एक मायने में जब एक सूचित राय है।
अपालाला

5

सॉफ्टवेयर विकास, मेरे विचार में हमेशा निरपेक्ष * सर्वश्रेष्ठ * समाधान खोजने के बारे में नहीं है , बल्कि काम किया जा रहा है। इसलिए हो सकता है कि यदि आप हमेशा समस्या को सबसे अच्छे तरीके से हल नहीं करते हैं, तो यह दुनिया का अंत नहीं है।

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


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

प्रोग्रामिंग के लिए +1 (कम से कम पेशेवर प्रोग्रामिंग) लेखन कोड के बारे में किया जा रहा है जो सैद्धांतिक रूप से सही कोड के बजाय काम करता है जो कला का काम है।
jwenting

3

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

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

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

अच्छा। आप अपने लक्ष्यों के बजाय ग्राहक की जरूरतों पर ध्यान केंद्रित कर रहे हैं। जाने के लिए रास्ता।

इसमें बहुत ही बदसूरत चीजें शामिल हैं जैसे

document.getElementById

या ASP.NET MVC दृष्टिकोण के साथ चीजों की खोज करने के तरीके के बजाय टेम्पलेट बाउंड कंट्रोल (डेटालिस्ट / रिपीटर) के साथ ASP.NET का उपयोग करना।

Webforms में कुछ भी गलत नहीं है। MVC वेबफ़ॉर्म को बदलने के लिए नहीं है। यह नई तकनीक सीखने का समय नहीं है। त्रिकोण को याद रखें आपके पास समय होने पर रिफ्लेक्टर। इसके अलावा, पहले बयान देखें।

एक तकनीक जो मैंने अतीत में इस्तेमाल की है, वह है निजी परियोजनाएं जो इन नई तकनीकों की खोज के लिए मौजूद हैं, लेकिन इसे बनाए रखना मुश्किल है। क्या अन्य तरीकों की सिफारिश की जा सकती है?

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

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


2

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

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

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


1

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


1

क्या आप सुनिश्चित हैं कि यह सिर्फ यह नहीं है कि आप डॉक्यूमेंट के बजाय क्या डालेंगे। EEEgetById वास्तव में समय की बर्बादी है, चाहे आप इसे कितना भी समायोजित कर लें।

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


1
मुझे नहीं पता तुम्हारा क्या मतलब है; मैं एक बेहतर दृष्टिकोण के रूप में jQuery के चयनकर्ताओं का उपयोग करने की बात कर रहा था। सीधे DOM का उपयोग करना ठीक काम करता है, लेकिन jQuery ज्यादा बेहतर तरीका है। तो स्पष्ट होने के लिए, दोनों काम करते हैं, एक दूसरे की तुलना में बेहतर है।
डकोटा

1
ठीक है, $("#id")कम है, लेकिन अंततः document.getElementById("id")शीर्ष पर कुछ ओवरहेड के लिए एक उपनाम है । क्या आप जानते हैं कि यह आपके वर्कफ़्लो में सुधार करेगा? या क्या आपको अभी बताया गया है कि jQuery कई बार बेहतर है कि आप इसे मानते हैं?
aaaaaaaaaaaa

1
@eBusiness - क्या आप जानते हैं कि $("#id")अंततः केवल एक उपनाम है document.getElementById("id")? या आपको अभी-अभी कहा गया है कि ऐसा कितनी बार आप मानते हैं? मुझे उम्मीद है कि हर बार जब आप उपयोग करते हैं, getElementByIdतो उस मामले को संभालने के लिए याद रखें जहां IE और ओपेरा तत्वों को नाम के साथ-साथ मामले से भी हटाते हैं जब ब्लैकबेरी 4.6 नोड्स को वापस करता है जो अब दस्तावेज़ में नहीं हैं।
निक नॉल्सन

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

1
मुझे पता है कि मैंने इसे उगल दिया, लेकिन मुझे लगता है कि हम jQuery बनाम जावास्क्रिप्ट फ्लैमर में थोड़ा बहुत आगे बढ़ रहे हैं।
आआआआआआआआआआआ आआआआआ

1

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

आत्म जागरूकता

अपनी प्रवृत्ति, अपनी कमजोरियों और अपनी ताकत के बारे में जागरूक रहें।

सचेत निर्णय

अपने निर्णय स्पष्ट और सचेत करें। बिना सोचे समझे कुछ करने के लिए कूदें नहीं कि आप इसे कैसे करेंगे।

जानें और लागू करें

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

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