जोएल टेस्ट प्रश्न # 11 है: "क्या नए उम्मीदवार अपने साक्षात्कार के दौरान कोड लिखते हैं?"। साक्षात्कार के दौरान कोड लिखने और उस पर निर्णय लेने के लिए नए उम्मीदवारों से पूछने के लिए और उनके खिलाफ क्या तर्क हैं?
जोएल टेस्ट प्रश्न # 11 है: "क्या नए उम्मीदवार अपने साक्षात्कार के दौरान कोड लिखते हैं?"। साक्षात्कार के दौरान कोड लिखने और उस पर निर्णय लेने के लिए नए उम्मीदवारों से पूछने के लिए और उनके खिलाफ क्या तर्क हैं?
जवाबों:
मैं विपक्ष नहीं देख रहा हूँ। एक साक्षात्कार में कई भाग होते हैं, और एक उम्मीदवार को कुछ बार 'श्रृंखला तक' का समर्थन करना चाहिए।
मैं साप्ताहिक ~ 10 लोगों का साक्षात्कार करता हूं। मैं वास्तव में, वास्तव में, वास्तव में इस तथ्य की सराहना करता हूं कि एचआर ने पृष्ठभूमि के सभी काम किए हैं और मुझे बहुत सारे नोट्स दिए हैं। जब तक वे मेरे पास पहुंचते हैं, तब तक मेरे लिए उनकी परीक्षा लेने का समय आ जाता है।
परीक्षण पूरी तरह से स्थिति पर निर्भर करते हैं। आम तौर पर, मैं जांच करने की कोशिश करता हूं:
सामान्य प्रोग्रामिंग कौशल। क्या आप ऑपरेटरों को प्रभावी ढंग से उपयोग कर सकते हैं? क्या आप एक संख्यात्मक प्रणाली की कल्पना कर सकते हैं जिसका मूलांक 10 नहीं है?
क्या आप जानते हैं कि कैसे हम आपको काम पर रखने के लिए काम करते हैं?
आपके द्वारा सूचीबद्ध किसी भी ओपन सोर्स प्रोजेक्ट में आपके योगदान का मूल्यांकन
मैं इसे छोटा और मजेदार बनाए रखने की कोशिश करता हूं। जब मैं कार्यालय में जाता हूं, तो मैं उत्तरों को पकड़ता हूं, उन्हें देखता हूं और फिर एक माध्यमिक साक्षात्कार आयोजित करता हूं। काम पर रखने के लिए, आपको आमतौर पर तीन साक्षात्कारों के माध्यम से प्राप्त करना होगा।
मैं यह भी अनुमान लगाता हूं कि आप जो टीम प्राप्त कर रहे हैं उसमें आप कितनी अच्छी तरह से मिश्रण करेंगे। उस टीम ने मुझे प्रभावी ढंग से करने के लिए गिना।
मेटा फॉर्म में प्रश्नों का उत्तर देना एक बात है, यह वास्तव में कोड का उत्पादन करने के लिए एक और है। यदि मैं आपको किराए पर लेने जा रहा हूं, तो मुझे वास्तव में आपको कोड देखने की आवश्यकता है।
स्कॉट व्हिटलॉक से माफी के साथ:
विपक्ष:
पेशेवरों:
यदि आप एक बाजीगर को काम पर रखने जा रहे हैं, तो आपको पागल होना पड़ेगा कि वह आपके लिए बाजीगरी न करे। या एक संगीतकार जो आप ऑडिशन होगा। अन्यथा आप भयानक यो-यो "मास्टर" के-स्ट्रैस जैसे सामान प्राप्त करते हैं ।
एक व्हाइटबोर्ड पर कुछ के माध्यम से चलना प्रोग्रामर एक त्वरित डेमो बाजीगरी के बराबर है।
मुझे लगता है कि यह सुपर उपयोगी है, और मैं हमेशा ऐसा करता हूं, लेकिन जब से लाभ को अच्छी तरह से कवर किया गया है, मैं केवल (स्पष्ट) नकारात्मक पर चर्चा करने जा रहा हूं।
मुझे लगता है कि कोड परीक्षण आपको झूठी सकारात्मक जानकारी देने की काफी संभावना नहीं है: संभावनाएं कम हैं कि कोई व्यक्ति जो वास्तव में कोड नहीं लिख सकता है वह एक साक्षात्कार में इसे नकली करने का प्रबंधन करेगा, कम से कम यदि आपके पास बढ़ती कठिनाई के सवालों का एक पैमाना है। (शायद सबसे संभावित परिदृश्य वे एक दोस्त से पूछकर धोखा दे रहे हैं, अगर यह आमने-सामने का साक्षात्कार नहीं है।)
गलत-नकारात्मक पक्ष पर समस्याएं अधिक हैं: क्या कोड परीक्षण आपको उस व्यक्ति को अस्वीकार करने के लिए प्रेरित करेंगे जो वास्तव में सबसे अच्छा उम्मीदवार है?
मंच का भय
आपके पास कोई ऐसा व्यक्ति हो सकता है जो वास्तव में एक अच्छा विकासकर्ता है, लेकिन जो इस साक्षात्कार से बहुत घबराया हुआ है, और वे अनिवार्य रूप से मंच पर भयभीत हो जाते हैं। दबाव में प्रदर्शन करना कुछ हद तक महत्वपूर्ण है, लेकिन स्टेज डर से निपटना प्रोग्रामर होने (अन्य व्यवसायों की तुलना में) का ऐसा महत्वपूर्ण हिस्सा नहीं है, और यह किसी ऐसे व्यक्ति को अस्वीकार करना दुर्भाग्यपूर्ण होगा जो इससे बुरी तरह से ग्रस्त है। यह कंपाउंड कर सकता है: यदि व्यक्ति एक सवाल का जवाब नहीं दे सकता है जो वे जानते हैं कि उन्हें जवाब देना चाहिए, तो वे अधिक तंग हो सकते हैं। या, इस सवाल के रूप में , उन्हें लगता है कि वे एक ही समय में बात और कोड नहीं कर सकते।
शमन: तकनीकी प्रश्नों में कूदने से पहले कुछ जानकारी प्राप्त करना, उनकी पृष्ठभूमि, लक्ष्यों आदि के बारे में जानना। शायद कुछ आसान तकनीकी सवालों के साथ शुरू करें ताकि उन्हें कुछ गति मिल सके। साक्षात्कार के दौरान एक डिक मत बनो (अर्धविराम आदि के बारे में पूछकर)।
यह एक शोर उपाय है
दिलचस्प कोड प्रश्नों में एक से अधिक सही उत्तर हो सकते हैं। यदि एक व्यक्ति एक सही उत्तर लिखता है, और दूसरा सही और अधिक कुशल उत्तर लिखता है, तो आपको उस पर कितना वजन डालना चाहिए?
कुछ हद तक यह कुछ "पहेली" प्रश्नों के साथ समस्या की तरह है: व्यक्ति के पास या तो अंतर्दृष्टि है या नहीं और आपको लगभग द्विआधारी परिणाम मिलता है। इंटेलिजेंस संभवतः उस अंतर्दृष्टि के होने की संभावना को प्रभावित करता है, लेकिन केवल कुछ ही बार नमूना लेना आपको एक क्रूड माप देता है।
यह मुझे कोड प्रश्नों के बारे में परेशान करता है (हालांकि मैं अभी भी उनका उपयोग करता हूं।) सबसे अच्छा शमन, जो मैं सोच सकता हूं कि जितना संभव हो उतना संभव समाधानों का एक रैंप है: व्यक्ति कम से कम एक क्रूड ब्रूट बल उत्तर, या एक उत्तर लिख सकता है। समस्या का एक हिस्सा। यह महसूस करना कि कुछ नहीं से बेहतर एक अच्छा संकेत है। फिर यदि वे अधिक खोज करते हैं, तो वे इसे अधिक कुशल या अधिक सुरुचिपूर्ण कोड बना सकते हैं। जितना संभव हो, ऐसे सवाल पूछने से बचें जो बाइनरी प्रतिक्रियाएं प्राप्त करते हैं।
यह वास्तव में प्रतिनिधि नहीं है
प्रोग्रामिंग एक के बाद एक दस मिनट की एल्गोरिथम समस्याओं को हल करने का काम नहीं है: बड़ी प्रणालियों को समझने और डिजाइन करने और समय की विस्तारित अवधि के लिए ध्यान केंद्रित करने के बारे में बहुत अधिक काम है, जो कि पारस्परिक कौशल के बारे में कुछ भी नहीं कहना है। कोड प्रश्न वास्तव में इसका परीक्षण नहीं करते हैं।
लेकिन, कोड प्रश्न केवल वही प्रश्न नहीं हैं जो आप पूछने जा रहे हैं: आप निरंतर प्रयास, रचनात्मकता, पारस्परिक कौशल के प्रमाण खोजने के लिए उनकी पृष्ठभूमि, उनके संदर्भ, उनके ओपन सोर्स कार्य (यदि हो तो) को देख सकते हैं।
यह जानना कि छोटी एल्गोरिथ्म समस्याओं को कैसे हल किया जाए और कोड को कैसे कम किया जाए, यह एक आवश्यक नहीं, बल्कि पर्याप्त स्थिति है: यदि आप छोटी समस्याओं को हल नहीं कर सकते हैं और आप nontrivial कोड नहीं लिख सकते हैं, तो दुनिया में सभी बड़ी तस्वीर वाली सोच नहीं है आपको एक उत्पादक डेवलपर बनाने जा रहा है।
जिसे कोई भी हल कर सकता था
नहीं, जाहिरा तौर पर नहीं। जैसा कि प्रसिद्ध फ़िज़बज़्ज़ पोस्ट बताते हैं, आपको लगता है कि समस्याएं केवल नए स्नातक ही नहीं बल्कि उद्योग के वर्षों के अनुभव वाले लोग हैं। मुझे पता नहीं क्यों। या तो कोड परीक्षण एक खराब माप है (जो संभव है, हालांकि मुझे लगता है कि इसकी संभावना नहीं है), या वे अपने फिर से शुरू होने पर परियोजनाओं में बहुत योगदान नहीं दे रहे थे, या वे गैर-चिपकाने और गैर-चिपकाने के द्वारा बहुत कुछ कर रहे थे- एल्गोरिथम कोड (जो संभव है)
यह स्वीकार करने योग्य है कि आप वास्तव में किसी भी एल्गोरिथम कोड को लिखे बिना बहुत कुछ कर सकते हैं। लोग उन ऐप्स पर बहुत पैसा कमाते हैं जिनका मूल्य ग्राफिक्स या व्यावसायिक तर्क में है, जिसे आप "प्रोग्रामिंग" नहीं कह सकते हैं, और यह ठीक है। लेकिन, अगर आपको वास्तव में प्रोग्रामर की जरूरत है, तो यह एक अच्छा फिट नहीं है।
यह अच्छी तरह से कैलिब्रेट नहीं किया जा सकता है
यदि आप एक प्रश्न के साथ आते हैं, तो उत्तर आपको बहुत आसान लग सकता है। हालाँकि, यदि आपसे नीले रंग से बाहर का कोई और तुलनीय प्रश्न पूछा जाता है, या ऐसा कोई प्रश्न जो आपके स्वयं के विशेष हितों और पृष्ठभूमि के लिए तिरछा नहीं है, तो यह बहुत कठिन हो सकता है।
शमन: उन कुछ डेवलपर्स पर परीक्षण चलाएं जिन्हें आप पहले से जानते हैं, और देखें कि वे कैसे करते हैं। शायद आपकी टीम में पहले से ही, जिसे आप जानते हैं कि वह बहुत चालाक है, उनमें से एक के साथ परेशानी होगी और आप इसे समायोजित करने पर विचार कर सकते हैं। शायद वे बेहतर या अलग उत्तर के बारे में सोचेंगे।
यह बहुत अधिक सामान्य ज्ञान की तरह है
मुझे लगता है कि कोड प्रश्न निश्चित रूप से सामान्य ज्ञान में प्राप्त कर सकते हैं, अगर आप लोगों को दिल से अस्पष्ट एपीआई पता है, या वाक्यविन्यास सही है, या एक nontrivial एल्गोरिथ्म की सटीक परिभाषा याद है। उन सभी को डॉक्स, वेब खोजों या कंपाइलर त्रुटियों पर निर्भर करने के लिए उचित है, और वास्तविक विशेषज्ञता के साथ थोड़ा सहसंबंध है। यह भी नहीं पता है कि एपीआई की संभावना कहां है, शायद एक ऐसा व्यक्ति है जिसने हाल ही में इसका उपयोग नहीं किया है, लेकिन जरूरी नहीं कि यह समस्या तब तक हो जब तक वे अपने पुनरारंभ पर झूठ नहीं बोल रहे हों।
तो इसका उत्तर बहुत आसान है: तुच्छ प्रश्न न पूछें और तुच्छ गलतियों पर लटके नहीं। वह उम्मीदवार याद दिलाएं जिसे एपीआई कहा जाता है या उन्हें इसे देखने दें; वाक्यविन्यास त्रुटियों को ठीक करना; डेटा संरचना परिभाषाओं को याद रखने वाले लोगों के लिए परीक्षण न करें।
आप तुलना कैसे करते हैं?
यदि आपके पास दो उम्मीदवार हैं और दोनों सवालों के जवाब अच्छी तरह से देते हैं, तो आप उनके बीच कैसे रहते हैं? आप सबसे तेजी से समाप्त होने वाले को चुन सकते हैं, लेकिन शायद वहाँ आप कछुओं पर कहर ढाना शुरू कर दें। आप एक और दौर कर सकते हैं और बहुत कठिन प्रश्न पूछ सकते हैं लेकिन मुझे इस बारे में निश्चित नहीं है। शायद आप उन्हें केवल ए + दोनों देते हैं और अन्य मानदंडों पर उनके बीच चयन करने की कोशिश करते हैं (या दोनों को किराए पर लेने के लिए पैसे खोजने की कोशिश करते हैं।)
एक चोर मैं सोच सकता हूं कि अन्य लोगों के सामने "ज़ोर से कोड करना" मुश्किल है। मुझे अपने कंधे पर किसी के साथ टाइप करने में भी मुश्किल होती है, और मैं अकेला नहीं हूँ। मुझे लगता है कि जब कोई मुझे किसी कार्य में मदद करने के लिए अपने कार्य केंद्र पर बुलाता है, तो वे अचानक टाइपो बनाने लगते हैं, गलत कोड-पूर्ति का चयन करते हैं, यहाँ तक कि गलतियाँ भी करते हैं - जिनमें से कोई भी उन्होंने नहीं बनाया होता, मैं वहीं नहीं बैठा था। नरक, मैंने देखा है कि लोग कट और पेस्ट ऑपरेशन के लिए मेनू का उपयोग करना शुरू कर देते हैं, सिर्फ इसलिए कि वे अवलोकन के अधीन थे। यह सामान्य व्यवहार नहीं है, और मैं जिन कोडर्स के बारे में बात कर रहा हूं वे उत्कृष्ट प्रोग्रामर हैं और इसके अलावा काफी स्मार्ट हैं।
मेरे पास हाल ही में एक साक्षात्कार था जिसमें साक्षात्कारकर्ता ने मुझसे पूछा कि मैं किसी विशेष ऑपरेशन को कैसे कोड करूंगा और उसने कहा, "बस मुझे गणित दिखाओ।" खैर, मुझे इसके गणित में आने से पहले सबसे पहले समस्या के बारे में सोचना था, ताकि मुझे हेमिंग और हॉविंग मिले। मैंने पहली बार व्हाइट बोर्ड में जो डाला वह शर्मनाक था, और मुझे लगा कि मैं उस बिंदु पर हार रहा हूं। मुझे आखिरकार ए-हा पल मिला और जवाब मिला (वास्तव में जब यह मेरे साथ हुआ तो वह वास्तव में क्या पूछ रहा था ), लेकिन वहां पहुंचने से पहले मैंने जो "गड़बड़" की उससे मुझे बहुत असहज महसूस हुआ। फिर भी, मुझे काम मिल गया है, लेकिन अगर साक्षात्कारकर्ता कम रोगी था तो मेरे पास नहीं हो सकता है।
मुझे लगता है कि यदि आप साक्षात्कारकर्ताओं को एक कोडिंग कार्य देते हैं, तो उन्हें कंप्यूटर पर काम करने के लिए कुछ समय अकेले दें, शायद एक आईडीई में भी वे परिचित हों। उन्हें आपके लिए कोड लिखने दें और फिर इसके बारे में बात करें। उनसे पूछें कि उन्होंने चीजों को एक निश्चित तरीके से क्यों किया, और क्या दूसरा तरीका बेहतर नहीं हो सकता है। आप उन्हें इस तरह की प्रक्रिया से अधिक जान पाएंगे कि वे (लाक्षणिक रूप से) आपके सामने एक कप में पेशाब करने के लिए कहें।
विपक्ष: कोई नहीं। किसी भी समय आप एक पीसी की स्थापना, एक कोड परीक्षण, और इसकी समीक्षा करने से भविष्य में अनकहा सिरदर्द बचाएंगे।
पेशेवरों: "भरोसा है, लेकिन सत्यापित करें" - रोनाल्ड रेगन। इसलिए कई बार मैंने देखा है और लोगों के बारे में सुना है कि आखिरकार एक स्थिति से जाने दो, जहां साक्षात्कार में आप सोचेंगे कि आपको एक रॉक स्टार मिल रहा है। साक्ष्य पुडिंग में है; मैं देखना चाहता हूं कि वे क्या कर सकते हैं। यह दर्शाता है कि क्या होता है जब आप किसी व्यक्ति को काम पर रखने में समय और पैसा लगाते हैं और उनके सामने एक नई परियोजना लाते हैं।
विपक्ष:
पेशेवरों:
जब मैंने अपनी वर्तमान नौकरी के लिए साक्षात्कार किया, तो मुझे भर्ती के लिए कोड लिखने के लिए प्रश्नों की एक सूची दी गई। मैं बहुत प्रभावित हुआ क्योंकि प्रश्न स्पष्ट रूप से किसी ऐसे व्यक्ति द्वारा लिखे गए थे जिन्हें एसक्यूएल का गहरा ज्ञान था, इसलिए यह दोनों तरीकों से काम करता है।
आप वास्तव में व्यक्ति को साक्षात्कार में कोड लिखना चाहते हैं - इससे भी बेहतर, उन्हें अपनी टीम में एक सदस्य के साथ एक्स राशि के समय के लिए जोड़ी बनाने का कार्यक्रम प्राप्त करें (जो भी आप आराम से समय / श्रमशक्ति में खर्च कर सकते हैं)।
यह बहुत ही एकमात्र तरीकों में से एक है जो आप बता सकते हैं कि वह व्यक्ति कोड कर सकता है या नहीं।
मैं जोड़ी प्रोग्रामिंग को थोड़ा पसंद करता हूं क्योंकि यह उनकी टीम को काम दिखाएगा, उन्हें काम करने के लिए एक वास्तविक आईडीई देता है और उन्हें एक 'वास्तविक' समस्या पर काम करने देता है (जोड़ी का दूसरा व्यक्ति उन्हें किसी भी पर्यावरणीय बारीकियों का मार्गदर्शन कर सकता है जो साक्षात्कारकर्ता यथोचित कभी नहीं जान सकता)।
हमने इस भर्ती नीति का उपयोग करना शुरू कर दिया है और हम वास्तव में परिणामों से खुश हैं।
आप एक पक्षी को उसके पंखों से और एक प्रोग्रामर को उसके कोड द्वारा जज करते हैं।
जब मैंने वर्तमान कंपनी के साथ काम शुरू किया तो मैं उनके लिए कुछ सी कोड लिखने के लिए कहता हूं जो कुछ बाइनरी इनपुट की समता बिट उत्पन्न करता है या जाँचता है (यह निर्भर करता है कि आप एन्कोडिंग या डिकोडिंग कर रहे हैं)। यह वास्तव में एक साक्षात्कार प्रश्न था क्योंकि काम के दौरान इस प्रकार की समस्याओं का समाधान किया जाता है। बेशक मैं समता जाँच नहीं बल्कि निम्न स्तर पर काम करने की सोच रहा हूँ।
अब तक के सभी जवाब (जो मैंने पढ़ा) ने इस तथ्य को संबोधित नहीं किया कि जोएल टेस्ट उद्यमियों के लिए एक सर्वोत्तम अभ्यास सूची नहीं है ( बल्कि एक संभावना नियोक्ता के अपने मूल्यांकन को कम करने के लिए एक जांच सूची है ।
बात यह है ... यदि वे पूरी तरह से अपने कैंडिडेट का परीक्षण करते हैं, तो वे संभवतः उन लोगों को काम पर रखते हैं जो उनके सामान को जानते हैं ... इसका मतलब है कि आपके लिए
बग-फिक्सिंग के बजाय उनके बाद ...
में कहना चाहूंगा:
पेशेवरों
विपक्ष
Reverse
विधि या समान हो, या लिखित परीक्षाओं के लिए चीजें हों जैसे" कक्षा की Foo
पद्धति के लिए तर्क क्या हैं Bar
", जब कोई भी बेवकूफ Google को प्रलेखन का उपयोग कर सकता है (या प्रलेखन का उपयोग कर सकता है) उम्मीदवार काम कर सकते हैं और व्यावसायिक समस्याओं को हल कर सकते हैं ।एक समर्थक यह है कि यह दर्शाता है कि किसी को प्रोग्रामिंग का बुनियादी ज्ञान है या जो कुछ भी (पिछली बार जब मैंने इसका सामना किया था, तो मुझे आश्चर्य हुआ कि SQL प्रश्न कितना बुनियादी था।) यह तकनीकी चर्चा के लिए आधार के रूप में भी काम कर सकता है, यह पूछ सकता है कि उम्मीदवार ने ऐसा क्यों किया और ऐसा कैसे किया जा सकता है।
साक्षात्कार में समय लगता है, जिसका उपयोग अन्य चीजों के लिए किया जा सकता है। इसके अलावा, व्हाइटबोर्ड पर कोड लिखना एक प्राकृतिक वातावरण नहीं है, और कुछ लोगों को इसके साथ अधिक और कम गंभीर समस्याएं होंगी। यह आपको एक डेवलपर को याद करने का कारण बन सकता है जो सामान्य उपकरण या संदर्भ के बिना बस घबरा जाता है।
प्रोग्रामिंग स्पष्ट "डिलिवरेबल्स" का एक गुच्छा के साथ एक उच्च तकनीकी कौशल है। या तो एक उम्मीदवार उन्हें वितरित कर सकता है या नहीं कर सकता है। इसलिए तकनीकी सवाल पूछने के लिए कोई "विपक्ष" नहीं हैं। यह कहने के लिए पूरी तरह से है, "मुझे इस एप्लिकेशन के लिए कुछ कोड दिखाएं, या" मुझे उस एप्लिकेशन के लिए कोड दिखाएं जो आपने ALADADER लिखा है। "
ऐसा नहीं करने से निम्नलिखित परिणाम हो सकते हैं: एक अमीर व्यक्ति ने अपने बच्चों को शतरंज खेलने के लिए सिखाने के लिए एक ट्यूटर का साक्षात्कार लिया (एक दिमाग का विस्तार करने वाले व्यायाम के रूप में)। ट्यूटर ने एक चेकर बोर्ड खोला और 64 चौकों के बारे में बात करना शुरू किया, लेकिन एक शतरंज के टुकड़े को नहीं छुआ। समय के लिए दबाया, पिता ने वैसे भी ट्यूटर को काम पर रखा। और ट्यूटर ने बच्चों को CHECKERS खेलना सिखाया।