नए प्रोग्रामर का मूल्यांकन करने का सबसे अच्छा तरीका क्या है? [बन्द है]


52

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

अधिक चीजें जो मुझे नोट करनी हैं:

  • मेरे देश में शिक्षा प्रणाली बेकार है - वास्तव में बेकार है। इस तरह की नौकरी करने वाले लोग अच्छे होते हैं क्योंकि उनके पास इसके लिए प्रतिभा होती है या वास्तव में अपने दम पर सीखने की कोशिश करते हैं।

  • विश्वविद्यालय / स्नातक / पोस्ट-ग्रेजुएशन डिग्री का मतलब यह नहीं है कि आप बिल्कुल जानते हैं कि चीजों को कैसे करना है।

  • प्रमाणपत्रों का अर्थ यहाँ भी कुछ नहीं है क्योंकि प्रमाणन पाठ्यक्रम के प्रभारी लोगों के पास भी कौशल नहीं है (या कम भुगतान वाले नौकरियों में हैं)।

हमें वास्तव में अच्छे उम्मीदवारों को प्राप्त करने की आवश्यकता है जो लचीले हैं और यांत्रिक सोच नहीं रखते हैं (क्योंकि अनुभव से इस प्रकार के लोगों का प्रदर्शन कम है)।

हम एक सरकारी संस्थान में हैं और जो लोग उम्मीदवार हैं, वे जरूरी नहीं कि बाहर से आते हैं, लेकिन हमारे पास किसी भी उम्मीदवार को स्वीकार करने या न करने की संभावना है जब तक कि हम सही नहीं पाते हैं।

मुझे आशा है कि मैं अपने प्रश्न में बहुत आक्रामक नहीं लग रहा हूँ; और BTW मैं खुद एक प्रोग्रामर हूँ।

संपादित करें: मुझे लगा कि वास्तव में यहाँ कुछ जटिल है। मैं बिना किसी पूर्वाग्रह के चर्चा को धाराप्रवाह बताने के लिए केवल "सही उत्तर" को टॉगल करूंगा।


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

जवाबों:


52

उम्मीदवार के चयन के बारे में, मैं आमतौर पर तीन-स्ट्राइक प्लान के साथ जाता हूं:

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

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

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

इन सभी के अंत में, आपको यह तय करने में सक्षम होना चाहिए कि आप इस उम्मीदवार को अपनी टीम का हिस्सा बनाना चाहते हैं या नहीं।


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

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

1
@ChristopherMahan FizzBuzz (और simiarly तुच्छ कोडिंग) का मान एक साधारण द्वारपाल के रूप में है। यदि वे अपनी पसंद की भाषा में FizzBuzz को लागू नहीं कर सकते हैं, तो क्या वे कोई कोड लिख सकते हैं?
वेटाइन

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

कोड की समीक्षा एक भयानक विचार है, और JohnFX का खंडन अपर्याप्त है। मैं बहुत से देवों के बारे में जानता हूं जो महान हैं लेकिन अपने नियोक्ता के मालिकाना कोड आधार के बाहर किसी भी चीज पर काम नहीं करते हैं। ये काम से बाहर के परिवारों और चीजों वाले लोग हैं। हालांकि, जब वे काम करते हैं, तो वे बहुत उत्पादक होते हैं।
MrFox

20

उन्हें हल करने के लिए FizzBuzz देने के साथ शुरू करें । यह उनमें से सबसे खराब खरपतवार होना चाहिए।

फिर कुछ कठिन - उदाहरण के लिए, पुस्तकालय कार्यों में निर्मित बिना स्ट्रिंग को कैसे उल्टा करना है। उनकी विचार प्रक्रिया क्या है, यह देखने के लिए हल करते हुए उनसे बात करने को कहें।

यदि आप इन बहुत आसान पाते हैं, तो आप कठिन समस्याएँ दे सकते हैं, जब तक आप आश्वस्त न हों कि वे पैदल चल सकते हैं और केवल बात नहीं कर सकते हैं।


1
मुझे लगता है कि यह आपके द्वारा साक्षात्कार किए जाने वाले प्रोग्रामर के स्तर पर निर्भर हो सकता है। हालांकि यह एक जूनियर स्तर की भाड़े की क्षमता का उपयोग करने के लिए ठीक हो सकता है, मैं एक साक्षात्कार में ऐसे प्रश्नों पर एक स्पष्ट संकेतक पर विचार करूंगा कि यह एक ऐसी कंपनी नहीं थी जिसे मैं काम करना चाहता था।
jfrankcarr

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

1
@ ऑन्ड्रे - बात करने वाला हिस्सा उनकी विचार प्रक्रिया में अंतर्दृष्टि प्राप्त करना है। आप यह देखना चाहते हैं कि वे किसी समस्या के बारे में कैसे सोचते हैं और इसे हल करने के लिए दृष्टिकोण करते हैं। क्या आपके पास एक बेहतर विकल्प है?
ओडेड

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

4
यहां तक ​​कि एक स्कूल में एक अटेंडेंट के रूप में, जिसने हाल ही में पहचाने गए सीएस पेशेवरों से मुझे पता चला है कि तुच्छ फ़िज़बज़ एक ठीक फिल्टर है। जिन लोगों के साथ मैंने स्नातक किया था, उनमें से अधिकांश शायद समय की उचित मात्रा में इसे हल नहीं कर सके। उन लोगों ने रोजगार पाने के लिए संघर्ष किया या नहीं किया। मुझे लगता है कि joelonsoftware.com/articles/GuerrillaInterviewing3.html का अनुसरण करना अच्छा है।
ऋगवेद

14

बस नौकरी के बारे में जुनून की तलाश करें।

जोएल को उद्धृत करने के लिए, उन लोगों की तलाश करें जो " स्मार्ट हैं, और काम करते हैं। "

बाकी कोई फर्क नहीं पड़ता


7
समस्या यह है कि आप नहीं बता सकते हैं कि क्या वे स्मार्ट हैं।

4
@Chad: सीखने के लिए एक जुनून "चीजों को पूरा करने" के लिए नहीं है। यह पता लगाने के लिए कि क्या कोई काम कर सकता है, आपको उन्हें कुछ करने के लिए कहना होगा।
केविन क्लाइन

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

3
@ मेरे अनुभव में नहीं। मुझे पता है कि सबसे चतुर प्रोग्रामर में से कुछ बहुत बहिर्मुखी हैं।

4
यदि आप एक डेवलपर उम्मीदवार के साथ एक कमरे में नहीं बैठ सकते हैं और यह पता लगा सकते हैं कि वे स्मार्ट हैं या नहीं, तो कोई ऐसा व्यक्ति खोजें जो कर सकता है।
जेफ ओ

13

मेरी प्रोग्रामिंग के 25 वर्षों के आधार पर (जो, माना जाता है कि अन्य प्रोग्रामर को काम पर रखने के केवल 5 या 6 उदाहरण शामिल हैं):

सकारात्मक संकेतक:

  • प्रौद्योगिकी के बारे में भावुक

  • एक शौक के रूप में कार्यक्रम

  • अगर प्रोत्साहित किया तो एक तकनीकी विषय पर अपने कान बंद बात करेंगे

  • महत्वपूर्ण (और अक्सर कई) व्यक्तिगत साइड-प्रोजेक्ट वर्षों में

  • अपने दम पर नई तकनीकों को सीखता है

  • विभिन्न तकनीकों के लिए कौन सी तकनीकें बेहतर हैं, इसके बारे में राय दी गई है

  • एक तकनीक के साथ काम करने के विचार के बारे में बहुत असहज वह "सही" होने के लिए विश्वास नहीं करता है

  • स्पष्ट रूप से स्मार्ट, विभिन्न विषयों पर महान वार्तालाप कर सकता है

  • विश्वविद्यालय / काम से बहुत पहले प्रोग्रामिंग शुरू कर दी

  • कुछ छिपे हुए "हिमशैल" हैं, सीवी रडार के तहत बड़ी व्यक्तिगत परियोजनाएं

  • असंबंधित प्रौद्योगिकियों की एक विशाल विविधता का ज्ञान (सीवी पर नहीं हो सकता है)

नकारात्मक संकेतक:

  • प्रोग्रामिंग एक दिन का काम है

  • वास्तव में "टॉक शॉप" नहीं चाहते हैं, यहां तक ​​कि जब प्रोत्साहित किया जाए

  • कंपनी प्रायोजित पाठ्यक्रमों में नई तकनीकों को सीखता है

  • आपने जो भी तकनीक चुनी है, उसके साथ काम करके खुश हैं, "सभी प्रौद्योगिकियां अच्छी हैं"

  • बहुत ज्यादा स्मार्ट नहीं लगता

  • विश्वविद्यालय में प्रोग्रामिंग शुरू की

  • सभी प्रोग्रामिंग अनुभव सीवी पर है

  • मुख्य रूप से एक या दो प्रौद्योगिकी के ढेर पर केंद्रित (जैसे कि जावा एप्लिकेशन को विकसित करने के लिए सब कुछ), इसके बाहर कोई अनुभव नहीं है

इसके अलावा, मेरा सुझाव है:

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

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


10

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

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

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


7

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

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

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


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

3
बहुत समय लेने वाली? किसी को उम्मीदवारों से बात करनी होगी। कोई लिखित परीक्षा नहीं होगी। परीक्षण की सामग्री जल्दी से सार्वजनिक ज्ञान बन जाएगी, और उम्मीदवार याद किए गए उत्तरों के साथ पहुंचेंगे।
केविन क्लाइन

10
@kevincline: बिल्कुल, आपको उनसे बात करनी होगी। मैं जेरॉक्स (70 के दशक में) में साक्षात्कार कर रहा था और मुझसे पूछा गया कि मैं हैशिंग एल्गोरिथ्म में टकराव को कैसे संभालूंगा। मेरे पास प्रोग्रामिंग में बहुत औपचारिक स्कूली शिक्षा नहीं थी, लेकिन मैं इसे लगभग 5 वर्षों से कर रहा था, इसलिए मैंने कहा कि मुझे पता नहीं है कि हैश क्या होता है। मेरे साक्षात्कारकर्ता ने मुझे यह समझाया, फिर सवाल पूछा। हम एक घंटे से अधिक के लिए चले गए जब मैंने खोज की और कई प्रकार की टक्कर की समस्याओं को हल किया। उन्होंने मुझसे कहा कि अगर मैं एक घंटे में ऐसा कर सकता हूं तो मैं कुछ भी संभाल सकता हूं जो उन्होंने मुझे फेंक दिया। मुझे नौकरी मिल गयी। क्योंकि उसने मुझसे बात की।
पीटर रोवेल

@PeterRowell है कि चीजों को कैसे होना चाहिए। +1
चिरोन

3

इस प्रश्न को पढ़ने और इसके कुछ उत्तरों से मुझे एक लेख लिखने के लिए प्रेरित किया गया है, जो मुझे लगता है कि ब्याज की हो सकती है:

सॉफ्टवेयर डेवलपर्स को काम पर रखते समय अजीब भर्ती प्रथाओं

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

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


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

1
@ स्लेसके, मैं प्रिंसिपल में सहमत हूं, खासकर अगर वही लोग सभी साक्षात्कारों में भाग लेते हैं। इसलिए बेहतर है कि कंपनी और टीम दोनों के लिए सबसे अच्छा फिट खोजने के लिए बोझ को साझा करें, और आपको दूसरों की टिप्पणियों से सीखने का मौका दें। खराब इंटरव्यू आगे नहीं बढ़ेंगे, लेकिन उम्मीदवार में अधिक रुचि वाले इंटरव्यू के लिए अधिक इंटरव्यू की जरूरत हो सकती है, इसलिए बहुत व्यापक टीमों में 3 या 4 के इंटरव्यू होना असामान्य नहीं है। बहुत अधिक हालांकि बहुत अधिक अव्यवस्थित होने का आभास देगा। यह उम्मीदवार को सामने वाले साक्षात्कार की संख्या के बारे में बताने के लिए भी भुगतान करता है।
S.Robins

@ s- रॉबिन दिलचस्प राय, केवल मेरे सवाल के कुछ पहलुओं के बारे में कुछ संधि करना चाहते हैं। हमारे नियंत्रण से बाहर होने के कारण हम एक सामान्य भर्ती प्रक्रिया के आधार पर अपने उम्मीदवारों का चयन नहीं कर सकते हैं, इसके बजाय उम्मीदवार केवल आते हैं और हमें यह कहने की आवश्यकता है कि क्या उसके पास नौकरी लेने के लिए सही कौशल / ज्ञान है। शायद एक सामान्य भर्ती प्रक्रिया में ये चीजें बहुत बार नहीं होती हैं। लेकिन हमारी स्थिति में हमें इस स्थिति से निपटने की जरूरत है।
राफेल

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

@ s-robins जिसे आप अच्छी तरह से समझ गए ...
राफेल

1

आपने किस भाषा के लिए नहीं कहा है, लेकिन किसी के ज्ञान का परीक्षण करना काफी आसान है। यह उस स्तर पर भी निर्भर करता है जिसे आप देख रहे हैं, लेकिन साक्षात्कार के प्रश्नों के संबंध में प्रश्नों का एक बड़ा पूल है

हालाँकि आप अपना इंटरव्यू आयोजित करने का निर्णय लेते हैं, उन "लेटरल-थिंकिंग पज़ल" साक्षात्कार के प्रश्न नहीं पूछते


2
भविष्य में मैंने उस भाषा को निर्दिष्ट नहीं किया है जिसे हम विकसित करने के लिए उपयोग कर रहे हैं, क्योंकि हमारा मानना ​​है कि एक अच्छा प्रोग्रामर (उसकी / उसके सम्मानजनक क्षमता पाठ्यक्रम के साथ) यह किसी भी भाषा में प्रोग्राम करने के लिए स्वतंत्र रूप से सीख सकता है।
राफेल

2
@Rafael norvig.com/21-days.html । जैसा कि मैंने कहा, यह निर्भर करता है कि आप किसी जूनियर प्रोग्रामर की तलाश कर रहे हैं या किसी सीनियर की।
B:05овиЈ

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

@ राफेल उस मामले में आप एक जूनियर से बहुत ज्यादा उम्मीद कर रहे हैं। लेख मैं ऊपर टिप्पणी में पोस्ट किया है, जहां यह बताता है कि एक प्रोग्रामिंग भाषा को मास्टर करने में कितना समय लगता है।
B21ови

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

1

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

इसके बारे में सोचो। यदि FizzBuzz प्रश्न 200 में से 199 को समाप्त करता है, तो यह सिर्फ सैकड़ों साक्षात्कारों को समाप्त कर देता है। क्या आप वास्तव में सैकड़ों संभावनाओं का साक्षात्कार करने जा रहे थे?

FizzBuzz के बाद कम रिटर्न की तरह लगता है। यह मानते हुए कि 199/200 भी करीब है। और मुझे लगता है कि आपका समय भी मूल्यवान है ...


2
डरावना कैसे FizzBuzz एक प्रोग्रामर की क्षमता का मूल्यांकन करने के लिए मानक परीक्षण है। हालाँकि, यह एक आजमाया हुआ और सच्चा परीक्षण है - मैं आपको यह नहीं बता सकता कि सीएस डिग्री वाले कितने प्रोग्रामर ऐसा नहीं कर सकते हैं (अपनी 'पसंद की भाषा' में)
नोडी द नूड गाइ

0

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

बेवकूफ आसान प्रश्न के ऐसे उदाहरण पुनरावृत्ति के बारे में एक प्रश्न है जैसे कि आपके पास एक सूची है और आपको लूप का उपयोग किए बिना इसे रिवर्स ऑर्डर प्रिंट करना होगा। एक साधारण रेगेक्स प्रश्न यदि रेगेक्स सामान्य रूप से आपके विकास में किया जाता है। बिट्स और बाइट्स के बारे में एक प्रश्न यदि C ++ का उपयोग किया जाता है (एक टेम्पलेट लिखें जो लंबे समय तक चार्ट को स्वीकार करता है और द्विआधारी प्रतिनिधित्व को प्रिंट करता है। विशेषज्ञता की आवश्यकता नहीं है, बस थोड़ी लंबाई जानने के लिए साइज़ोफ़ () का उपयोग करें)

यह आपको प्रति प्रश्न <= 3 मिनट के बारे में लेना चाहिए


0

उनसे सबसे दिलचस्प प्रोग्रामिंग चुनौती के बारे में पूछें जो उन्होंने कभी हल करने की कोशिश की है, लेकिन नहीं कर सकते हैं, इसे हल करते समय उन्होंने किस दृष्टिकोण का उपयोग किया, क्यों वे हल नहीं कर सके और वे क्या सोचते हैं अन्य दृष्टिकोण इसे हल कर सकते हैं।

यह एक प्रोग्रामर के रूप में प्रोग्रामर क्षमताओं का न्याय करने के लिए मेरे लिए पर्याप्त है।


0
  1. क्या वे बचाव कर सकते हैं जो वे दावा करते हैं कि वे जानते हैं? उन्होंने इसे एक कौशल या किसी अन्य परियोजना पर किए गए कौशल के रूप में रिज्यूमे / सीवी पर रखा। देखें कि वे इस विषय पर कितनी गहराई से जा सकते हैं।
  2. क्या वे कुछ नया सीख सकते हैं? जिस प्रौद्योगिकी का आप उपयोग कर रहे हैं या आपके द्वारा काम करने वाले व्यवसाय के डोमिनियन के लिए कुछ विशिष्ट तकनीक के बारे में बात करें और देखें कि क्या वे विषय को समझ सकते हैं। क्या वे बुद्धिमान प्रश्न पूछते हैं? क्या वे एक सादृश्य के साथ आ सकते हैं? क्या यह किसी अन्य उद्योग या प्रौद्योगिकी में किए गए कुछ के समान है?

  3. क्या वे बल्कि प्रोग्रामिंग करेंगे? यह उनकी सूची में नंबर एक होना जरूरी नहीं है, लेकिन उन्हें कोड लिखने के लिए एक प्राथमिकता दिखानी होगी। और मेरा मतलब है कि वास्तव में कोड लिखना और कुछ बनाना, चारों ओर नहीं बैठना और इसके बारे में बात करना या पूरे दिन बोर्ड पर ड्राइंग करना। योजना को कम करने या काउबॉय कोडिंग को बढ़ावा देने के लिए नहीं, लेकिन आपके पास अंततः कोड होना चाहिए। कीबोर्ड से बचने वालों से बचें। यह एक प्रबंधन की स्थिति नहीं है।

आप एक से दस चीजों के पैमाने पर कुछ स्कोरिंग कर सकते हैं या सिर्फ अपनी तरह की गंध करने में सक्षम होने पर भरोसा करते हैं।


0

अगर यह आपको बेहतर बुरे प्रोग्रामर का एहसास कराता है तो हर देश में मौजूद है। कैसे उन्हें बाहर निकालने के लिए समस्या है।

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

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

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

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

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


-1

उम्मीदवारों को किसी भी तकनीक का उपयोग करने की स्वतंत्रता के साथ हल करने के लिए एक वास्तविक दुनिया की समस्या दी जानी चाहिए।

यदि वह उड़ने वाले रंगों में बाहर आती है, तो वह इन है!

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