मेरा सहकर्मी उन चीजों को नहीं समझता है जिनके साथ वह काम करता है। क्या करें? [बन्द है]


13

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


यह कौन सा देश है?

यह अंतरराष्ट्रीय कंपनी है।
tika

2
यदि यह वास्तव में एक बड़ा मुद्दा है और आप 100% निश्चित हैं कि आपका सहकर्मी गलती कर रहा है, तो पहली बात यह है कि इसे विनम्रता से इस तरह इंगित करें कि उसे कोई खतरा नहीं है। दूसरी बात यह है कि यदि आपका सहकर्मी नहीं सुनता है, तो यह नकदी में संभावित नुकसान को इंगित करने के लिए है। यही सभी प्रबंधकों को सुनता है, और उस पर बहुत सावधानी से। आपके द्वारा वर्णित के रूप में एक थ्रेडिंग समस्या होना संभावित रूप से बहुत हानिकारक है, और जब तक आप अपने बयानों में 100% निश्चित नहीं होते हैं, तब तक उनके साथ आगे बढ़ें।
NB

संभवतः परियोजना प्रबंधन एसई साइट पर है।
बर्नार्ड

1
प्रोजेक्ट मैनेजमेंट एसई साइट में "मल्टीथ्रेडिंग" टैग नहीं है, जो यह प्रश्न होना चाहिए।
राल्फचिनपिन

जवाबों:


13

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


मुझे डर है कि यह है कि पुरुष द्वारा स्वागत किया नहीं होगा, क्योंकि वह सोचता है कि वह है इस क्षेत्र में पेशेवर (और हर कोई खुद को सिखा सकते हैं)। लेकिन मैं कोशिश कर सकता हूं।
tika

आह हां, और एक बड़ी समस्या - अंग्रेजी मेरी मूल भाषा नहीं है, मैं बहुत अच्छी तरह से नहीं बोलता हूं।
tika

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

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

8

एक इकाई परीक्षण लिखें जो बग दिखाता है और उसे इसे ठीक करने के लिए कहता है।


1
वह इस बग के बारे में पहले से ही जानता था। वह सिर्फ कारण नहीं खोज सकता।
टीका

क्या आपको तीन दिन के डिबग सत्र में कारण नहीं मिला? या मैं आपके प्रश्न को गलत तरीके से पढ़ता हूं?

1
@scarfridge प्लेटफॉर्म पर निर्भर करता है। जावा के लिए आप बाइट कोड इंस्ट्रूमेंटेशन या एस्पेक्ट ओरिएंटेड प्रोग्रामिंग का उपयोग कर सकते हैं कि वास्तव में जहां समस्या है, वहां वेट डालने के लिए (या निष्पादन को नियंत्रित करने के लिए जेवीएमटीआई का उपयोग करें)। यह करना संभव है!

1
यह केवल अनुक्रम की बात नहीं है। कई अन्य कारक शामिल हैं - जो कोर कोड निष्पादित करते हैं, जब जीसी होता है और यह वस्तुओं को कैसे स्थानांतरित करता है, एक कोर के कैश से दूसरे में परिवर्तन कैसे प्रसारित होते हैं, आदि
tika

1
वास्तव में यह केवल विधि का एक सेट है जो कई बार दोहराया जाता है। लेकिन यह ज्यादा मायने नहीं रखता। वास्तविक कारण लॉक के बिना 2 थ्रेड्स से एक डिक्शनरी ऑब्जेक्ट तक पहुंच है (यानी मेमोरी बाधाओं के बिना)। थ्रेड A इसे बनाता है, थ्रेड B इसे पढ़ता है।
tika

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

मुझे तुम्हारा विचार आता है। अपनी आज्ञा का पालन करो।
tika

2
अगर किसी मुद्दे को दिखाने वाली परीक्षा को "इकाई परीक्षण" या "एकीकरण परीक्षण" कहा जाता है, तो इससे क्या फर्क पड़ता है? पूरी स्थिति जस की तस बनी हुई है।
डॉक ब्राउन

1
मेरी चिंता यह है कि उनके सहकर्मी को इकाई और घटक परीक्षण के बीच का अंतर नहीं पता हो सकता है, इसलिए इस मुद्दे को हल करने के लिए आगे प्रशिक्षण की आवश्यकता हो सकती है।
कोडार्ट

@CodeRush - मुझे लगता है कि आप सहकर्मी की समीक्षा में विश्वास नहीं करते हैं? यह आपके लिए वास्तव में सराहना की जाएगी कि कोई और आपके कोड को पुन: जाँच रहा था (जैसा कि उत्पादन में दुर्घटना के विपरीत है)?

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

-5

मुझे लगता है कि आपकी कंपनी को मल्टीथ्रेडिंग का उपयोग नहीं करना चाहिए।

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

आप इसे प्रबंधित करने में सक्षम हो सकते हैं, लेकिन आपका संगठन ऐसा नहीं कर सकता। यहां तक ​​कि अगर वे समस्या को समझते हैं, जो वे नहीं करते हैं, तो उनके पास विशेषज्ञता नहीं है।

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

मल्टीथ्रेडिंग के सभी खतरों पर जोर दें। (डरावनी कहानियाँ: मेरी पसंदीदा बग में कुछ पंक्तियाँ शामिल थीं: जैसे int i = 5; i = i * i;, जिसका iमूल्य 35 था। एक मैंने जो बहुत देखा था: if (thing != null) thing.reset();एक शून्य सूचक अपवाद फेंकना।) मुझे लगता है कि आपकी एकमात्र आशा उन्हें समझ में आ रही है। एक पूरी, नई, अजीब दुनिया में कदम रखना, और शायद उन्हें एक बड़ा कदम वापस लेना चाहिए।

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


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

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

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

1
बावजूद, जब सवाल यह है कि "मैं एक सहकर्मी को कैसे निपुण करता हूं जिसके पास विशेषज्ञता की कमी है?", मुझे नहीं लगता कि "आपकी कंपनी सॉफ्टवेयर का निर्माण गलत कर रही है" एक वैध जवाब है। किसी भी संगठन में, चाहे वह कितना भी विशाल और ज्ञानी क्यों न हो, उनके ज्ञान में हमेशा अंतराल रहेगा। यह जानने के बिना कि संगठन कौन है या सॉफ्टवेयर क्या कर रहा है, मुझे नहीं लगता कि आप मज़बूती से यह निर्णय ले सकते हैं कि कंपनी को पता नहीं है कि वे क्या कर रहे हैं, या कि उनकी समस्या को हल किए बिना हल किया जा सकता है।
अक्सिमिंडर
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.