स्नातक / जूनियर इंजीनियरों से क्या मानकों की उम्मीद की जा सकती है? [बन्द है]


38

क्या बफर ओवरफ्लो एक स्नातक डेवलपर से स्वीकार्य हैं? क्या हम बार को बहुत ऊंचा कर रहे हैं? स्नातक / जूनियर इंजीनियरों की अपेक्षित क्षमताएं क्या हैं?

प्रसंग:

वर्तमान में हम लिनक्स पर मुख्य रूप से C में काम कर रहे एक जूनियर डेवलपर स्थिति के लिए भर्ती कर रहे हैं।

प्रक्रिया के भाग के रूप में, हमें उम्मीदवारों को सी में अपने अवकाश पर कोड टेस्ट पूरा करने की आवश्यकता होती है।

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

[संपादित करें]:

  • हम स्पष्ट रूप से त्रुटि-जाँच, उत्पादन गुणवत्ता कोड के लिए पूछते हैं।
  • हम उम्मीदवारों के लिए एक परीक्षण और निर्माण ढांचा प्रदान करते हैं

[अद्यतन करें]:

इस धागे के परिणामस्वरूप, और वार्तालापों में हमारे पास अन्य डेवलपर्स के साथ व्यक्तिगत रूप से है, हम कोड परीक्षण करने के तरीके को बदल रहे हैं और जिसे हम अपनी भर्ती के साथ लक्षित करते हैं।

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

हालांकि, हमने भर्ती प्रक्रिया को हमारे और उम्मीदवारों दोनों के लिए अधिक उपयोगी बनाने के लिए कुछ उपाय किए हैं।

विशेष रूप से:

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

[अपडेट २०१५-०uj-०९ ]: नुजोब के एंडी डेविस ने उम्मीदवार के दृष्टिकोण से एक कोड परीक्षण के उपयोग पर एक दिलचस्प और प्रासंगिक लेख लिखा है, और लेख देखने लायक है। इसे यहां खोजें ।


29
शायद...? यह देखते हुए कि ऐसा लगता है कि स्कूल के बहुत से लोगों को अब सी में जावा की तुलना में बहुत अधिक अनुभव है। यदि उम्मीदवार स्कूल से बाहर हैं और उनके कोडिंग एक्सपोज़र का 2/3 जावा है, तो आपका सी आपके पास पास करने के लिए पर्याप्त मजबूत नहीं हो सकता है। परीक्षा। लेकिन ... अगर वे खुले हैं और सीखने के लिए तैयार हैं, तो आप क्या कहेंगे? आखिरकार, यह एक जूनियर स्थिति है ...
FrustratedWithFormsDesigner

4
यह एक साक्षात्कार में लिखा गया कोड भी है, शायद क्षमा योग्य समय की कमी। मैं कम से कम उनका उल्लेख अवश्य करूँगा कि उनके कोड को बफर अतिप्रवाह से ग्रस्त होने की आवश्यकता नहीं है
मैन्सफील्ड

4
मैं दूसरा @FrustratedWithFormsDesigner। मैं एक जूनियर डेवलपर हूं, और सी के साथ सौदा करने का एकमात्र समय सीपीयू आर्किटेक्चर पर एक वर्ग के कुछ असाइनमेंट के लिए था। इस बीच, मैं अपने आप को C #, Java, और रूबी में बहुत ठीक मानता हूं।
केविन -

4
और क्या परीक्षण ढांचे में एक परीक्षण शामिल है जो बफर अतिप्रवाह का कारण बनता है?
FrustratedWithFormsDesigner

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

जवाबों:


109

मुझे नहीं लगता कि आपने बार को बहुत ऊंचा सेट किया है, मुझे लगता है कि आपको एक अलग बार की आवश्यकता हो सकती है।

मुझे लगता है कि एक उम्मीदवार की योग्यता निर्धारित करने के लिए कोड परीक्षण उपयोगी होते हैं, लेकिन उन्हें पास / असफल नहीं होना चाहिए। आपको उम्मीदवार के साथ संवाद शुरू करने के लिए कोड परीक्षण के परिणामों का उपयोग करना चाहिए।

यदि आप ऐसी गलतियाँ देखते हैं जो उन्होंने की हैं (विशेष रूप से यदि वे जूनियर डेवलपर्स हैं) तो उन्हें इंगित करें और उनसे पूछें कि वे अलग तरीके से क्या करेंगे या यदि वे समझते हैं कि कोई समस्या क्यों है।


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

15
@brice बहुत ठोस प्रदर्शन है कि वे वास्तव में जूनियर डेवलपर्स हैं। स्पष्ट रूप से स्पष्ट गलतियों से बचना अभ्यास और अनुभव के साथ आता है।
14

34
@brice: वह उनके साथ विशिष्ट त्रुटियों पर चर्चा करने के लिए कह रहा था; मत कहो कि त्रुटियां थीं और उन्हें आपसे वापस पाने के लिए कहें। वास्तविक समय में त्रुटियों पर चर्चा करें - उन्हें एक संकेत दें (लाइन नंबर या शायद एक विवरण और फ़ंक्शन और उन्हें आपको लाइन नंबर देने के लिए कहें), फिर पूछें कि इसे कैसे रोका जा सकता था। लक्ष्य त्रुटि मुक्त परीक्षण कोड नहीं है, लेकिन आवेदकों की ताकत और कमजोरियों की अच्छी समझ है।
jmoreno

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

67

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

जाहिर है कि उन्हें फ़िज़बज़्ज़ जैसे बुनियादी कोड लिखने में सक्षम होना चाहिए और अवधारणाओं का सामान्य ज्ञान होना चाहिए; यदि आपने उन्हें बताया और वे यह भी नहीं जानते थे कि एक बफर अतिप्रवाह क्या था, तो मैं कहूंगा कि यह एक नहीं है, लेकिन मैं एक बग के बिना 5 से अधिक लाइनों के कोड लिखने की उम्मीद नहीं करता।

जिस दिन आपको अपने जूनियर की क्षमता पर भरोसा होता है, जिस दिन आपका सवाल होना चाहिए, जूनियर्स को बहुत सारे मेंटरिंग और "ट्रस्ट लेकिन वेरिफाइड" की एक स्वस्थ खुराक के साथ इलाज किया जाना चाहिए। मैं एक बार जूनियर था, और उन सभी के लिए जो उस समय वहां थे: मुझे क्षमा करें। एक जूनियर के रूप में आपके द्वारा की गई भयानक चीजों को याद रखें? (कृपया मुझे मत बताना यह सिर्फ मैं था; आप मुझे एक जटिल दे देंगे ..)


1
मैं आधिकारिक तौर पर अभी भी पूरे 2 वर्षों के अनुभव के साथ एक 'जूनियर सॉफ्टवेयर इंजीनियर' हूं! मेरी पृष्ठभूमि न तो सीएस या एसडब्ल्यू इंजीनियरिंग (इट्स इन फिजिक्स) है। मैं स्वेच्छा से कोड में हाथ नहीं डालूंगा, किसी भी इनपुट पर segfaults, अभी, या जब मैं भर्ती हुआ था।
ब्राइस

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

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

हम कोड के लिए एक परीक्षण रूपरेखा भी प्रदान करते हैं, जिसमें परीक्षण शामिल हैं जो अतिप्रवाह को ट्रिगर करता है!
brice

@brice जब आप कहते हैं कि आपने परीक्षण ढांचा प्रदान किया है, तो क्या आपने मेमोरी समस्याओं के परीक्षण के लिए वेलग्रिंड जैसा उपकरण प्रदान किया है?
B:03овиЈ

15

मैं यहां कुछ मुद्दों को देखता हूं।

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

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

हमने जो मात्रा निर्धारित की है, वह यह है कि जिन लोगों को परीक्षण दिया गया उनमें से लगभग 70% को कभी भी वापस नहीं मिला। सामान्‍य रूप से 15% मोड़, जो संकलित नहीं होंगे, आमतौर पर मूलाधार वाक्यविन्यास त्रुटियों (उदाहरण के लिए, लापता ;) के कारण। एक और 10% संकलन करता है लेकिन आवश्यक कार्यों को करने में विफल रहता है।

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

यदि हमें कोड संरचना और रक्षात्मक कोडिंग तकनीकों को अधिक देखना था, जैसे कि अप्रबंधित संसाधनों को ठीक से निपटाना या try .. catchबयानों का उपयोग करना तो लगभग कोई भी नहीं गुजरता।

सवाल, ज़ाहिर है, क्यों है?

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

सिर्फ एक पक्ष उदाहरण है। हाल ही में एक स्नातक ने मुझे अपने एक वर्ग के लिए मोबाइल ओएस लिखने के अपने अनुभव के बारे में कुछ बता रहा था, लेकिन वह समझा नहीं सकता था, यहां तक ​​कि एक वेब सर्वर ने भी कैसे काम किया। वह बस नहीं जानता था। 15 या 20 साल पहले शायद यह समझने का सही समय था कि ओएस कैसे बनाया जाए। आज ... इतना नहीं। फिर भी यह एक आवश्यक वर्ग था जब रक्षात्मक प्रोग्रामिंग पर एक वर्ग उनके और बाहरी दुनिया के लिए बहुत अधिक उपयोगी होगा।

तो हम क्या करे?

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


2
पूरी तरह से यहाँ सहमत हूँ, मैंने उद्योग में अपने 2 1/2 वर्षों में अधिक सीखा है, फिर मैंने कभी कॉलेज में नहीं सीखा। मैंने स्कूल में रहते हुए एक वेब-डेवलपर के रूप में अपनी पहली इंटर्नशिप प्राप्त करने के बाद मुझे यह दर्दनाक रूप से सीखा।
रयान

5
अब मैं आपके प्रोग्रामिंग टेस्ट की कोशिश करना चाहता हूं ..
आकाश

1
वास्तव में? सॉफ्टवेयर के विशिष्ट टुकड़ों को स्थापित करने का अनुभव और एक वेबसर्वर क्या करता है, इसके लिए एक ओवरसाइम्प्लीफाइड संस्करण देने की क्षमता है? अगर कोई मोबाइल ओएस लिखने से निपट सकता है, तो वे सीख सकते हैं कि वेबसर्वर कैसे काम करते हैं।
माइकल शॉ

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

2
@ क्रिसली: मैं यह नहीं देखता कि उन चीजों में से एक बड़ी समस्या है। ऐसा नहीं है कि हमारे पास एक छोटा मैदान है जो धीरे-धीरे चलता है। नौकरी पर सीखना होने वाला है। मुझे लगता है कि आपके पास यहां एक अनिवार्य रूप से अच्छा बिंदु हो सकता है, लेकिन उदाहरण आश्वस्त नहीं हैं। यदि सीएस पाठ्यक्रम के साथ कोई समस्या है, तो "विजुअल स्टूडियो 101 कैसे स्थापित करें" और "वेब्सवर्कर्स 101 की मूल बातें" को जोड़कर मैं इसे ठीक कर दूंगा। (मुझे एक "रक्षात्मक प्रोग्रामिंग" वर्ग का विचार पसंद है।)
माइकल शॉ

5

मुझे लगता है कि आप समस्या को गलत तरीके से देख रहे हैं। आपको खुद से यह पूछना चाहिए कि यह क्या है: नौकरी करने में सक्षम होने के लिए हमें एक उम्मीदवार से क्या चाहिए? आपको स्थिति का सही मूल्यांकन करना चाहिए और यह क्या होता है। नीचे कुछ सुझाव दिए गए हैं कि जूनियर डेवलपर को कब नियुक्त किया जाए और कब नहीं।

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

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

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

मेरे बारे में:

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

4

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

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

क्या यह सामान्य विचार नहीं है कि एक जूनियर डेवलपर जो कम जानता है, लेकिन एक जूनियर डेवलपर की तुलना में कम जानने के लिए तैयार है और सीखने और सुधारने के लिए अधिक मूल्यवान है, जो अधिक जानता है, लेकिन जो सुधार नहीं कर सकता है या नहीं?

कहा जा रहा है, आपकी एक टिप्पणी में आपने उल्लेख किया था कि आपने उन्हें उन परीक्षणों को सौंप दिया है जो उनके कोड में बफर ओवरफ्लो को इंगित करते थे यदि वे उनका उपयोग करते थे। तो शायद बड़ा सवाल यह है कि उन्होंने परीक्षण क्यों नहीं चलाए (यदि उन्होंने किया, तो वे क्यों छोटी गाड़ी कोड में बदल गए)?


3

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

हालांकि एक कृत्रिम मुक्त रूप कोड परीक्षण में मैं स्प्रिंट की तरह उल्लंघन पर हल्का होगा। बहुत कम समय (माना), अति सक्रिय, कुछ काम करने के लिए पेश करने के लिए बहुत बड़ा आग्रह।


10
मैंने लगभग एक ही जवाब लिखा जब तक मैंने देखा कि वह एक "जूनियर" की बात कर रहा है, ध्यान रखें कि .. मैंने कुछ तेज जूनियर्स देखे हैं, लेकिन फिर भी वे बिना सोचे समझे बेवकूफी करते हैं, ज्यादातर सॉफ्टवेयर इंजीनियरिंग को ही सिखाया जा सकता है अनुभव से
जिमी हॉफ

@JimmyHoffa हाँ, अभी तुम्हारी पहली पंक्ति पढ़ी है, मेरे "पूर्ण न-जाने" को ठीक किया है। आपकी बात गौर करने लायक है। अब तक मैं प्रत्येक प्रोग्रामर का उपयोग और अनुमान लगा सकता था, लेकिन एक मानसिक मामला और एक "झूठा"।
जोप एगेगन

@JupEggen: मुझे पूरा यकीन है कि "मानसिक" वह शब्द नहीं था जिसे आप खोज रहे थे। अन्यथा उन्हें आपके दिमाग को पढ़ने में सक्षम होना चाहिए ...;)
NotMe

2

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

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

  • क्या आपका संगठन किसी को भी आकर्षित करने में सक्षम है जो वर्किंग कोड लिख सकता है ?

  • अपने विकास की प्रक्रिया मजबूत है पर्याप्त ऐसी है कि कोई है जो कर सकते हैं लगभग लिखने कोड सहकर्मी की समीक्षा की मदद से कोड काम करने और समर्थन का परीक्षण लिख सकता है?

  • क्या आप क्रम-क्रम-प्रोग्रामर को सिखाने में सक्षम हैं कि प्रोग्रामर कैसे बनें, और क्या आप उस प्रयास को खर्च करने के लिए तैयार हैं और शायद कुछ साल इंतजार करें और उम्मीद करें कि उम्मीदवार की आंतरिक प्रतिभा में निखार आएगा?

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