paint-brush
एक अनुभवी प्रोग्रामर के महत्वपूर्ण गुण: कार्य और व्यवहारद्वारा@ivandovhal
1,676 रीडिंग
1,676 रीडिंग

एक अनुभवी प्रोग्रामर के महत्वपूर्ण गुण: कार्य और व्यवहार

द्वारा Ivan Dovhal12m2022/07/13
Read on Terminal Reader
Read this story w/o Javascript

बहुत लंबा; पढ़ने के लिए

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

Companies Mentioned

Mention Thumbnail
Mention Thumbnail
featured image - एक अनुभवी प्रोग्रामर के महत्वपूर्ण गुण: कार्य और व्यवहार
Ivan Dovhal HackerNoon profile picture


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


प्रोग्रामर का "जीवित मस्तिष्क" या एक अनुभवी डेवलपर का बुनियादी कौशल सेट


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


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


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


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


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


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


निम्नलिखित बिंदु एक आदर्श प्रोग्रामर के 'जीवित मस्तिष्क' के आंतरिक कामकाज की रूपरेखा तैयार करते हैं


प्रौद्योगिकी की गहरी समझ और सर्वोत्तम दृष्टिकोण खोजना


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


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


UX के प्रति सचेत रहना


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


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


तकनीकी प्रक्रिया के प्रति प्रतिबद्धता


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

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


पठनीय कोड लिखना जो दूसरों के लिए काम करना आसान हो


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


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


गुणात्मक विश्लेषण और वास्तुकला का विकास


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


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


योजनाबद्ध तरीके से समझाने की क्षमता


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

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


एक प्रभावी कार्यप्रवाह बनाना


अनुभवी इंजीनियर टीम के प्रदर्शन और अपने स्वयं के प्रदर्शन के बीच अंतर करते हैं। टीम की दक्षता बढ़ाने के लिए, वे एक वर्कफ़्लो बनाते हैं या नई तकनीकों का चयन करते हैं, जैसे कि स्वचालित परिनियोजन।

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


स्वस्थ पूर्णतावाद, या गुणवत्ता कोड कैसे लिखें और काम पर न मरें


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


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


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


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


निम्नलिखित बिंदु स्वस्थ पूर्णतावाद के लाभों को उजागर करते हैं


एक टीम में काम करने की क्षमता


डिफ़ॉल्ट रूप से, यह स्पष्ट है कि टीम के खिलाड़ियों को किसी भी परियोजना में महत्व दिया जाता है। यह उनके गैर-टकराव की प्रकृति, और जिम्मेदारी लेने, संवाद करने और विश्वसनीय होने की क्षमता के लिए बोलता है।

आप अपनी राय रख सकते हैं और फिर भी दूसरों की सुन सकते हैं।


जटिल कार्यों में विश्वास


अनुभवी प्रोग्रामर आत्मविश्वासी होते हैं, लेकिन जिद्दी नहीं। वे कठिन कार्यों से डरते नहीं हैं, क्योंकि वे पहले से ही विशेषज्ञता के एक निश्चित स्तर तक पहुँच चुके हैं और उनके पास पर्याप्त तकनीकी ज्ञान है, जो उन्हें जटिलताओं से निपटने की अनुमति देता है।


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


आवश्यक जानकारी विकसित करने और खोजने की निरंतर इच्छा


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


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


संतुलन रखने की क्षमता


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

एक अनुभवी प्रोग्रामर संतुलन बनाए रखते हुए एक वैकल्पिक समाधान ढूंढेगा। भावनात्मक रूप से शांति से किसी समस्या का गैर-मानक समाधान खोजना आसान है।


ज्ञान साझा करने और प्रतिक्रिया देने की क्षमता


आदर्श रूप से, अनुभवी प्रोग्रामर दूसरों के साथ ज्ञान साझा करते हैं; वेबिनार, सम्मेलनों और हैकथॉन में भाग लें। किसी पुस्तक या किसी और के सिद्धांत से ज्ञान साझा करना एक बात है, और अपने स्वयं के अनुभव का योगदान देना- आपके अतीत के 'दर्द'- दूसरी बात है। नेटवर्किंग वास्तव में मददगार है, भले ही कुछ लोग इसका आनंद न लें।


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


पारदर्शी प्रबंधन और प्रभावी संचार के बारे में समय पर प्रतिक्रिया है। यह अच्छा है अगर टीम लीड की स्थिति में प्रोग्रामर इसे समझते हैं और अभ्यास करते हैं।


अपनी गलतियों को स्वीकार करने की क्षमता


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


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


विफल रहता है कि वरिष्ठ अनुमति नहीं दे सकते


विफलता तकनीकी और मानवीय दोनों हो सकती है। उदाहरण के लिए, यदि कोई कर्मचारी नियमित रूप से काम पर नहीं जाता है, तो यह एक मानवीय कारक है।

जहां तक ​​महत्वपूर्ण तकनीकी विफलताओं का सवाल है, मुझे ऐसा नहीं मिला, क्योंकि मैं अक्सर वरिष्ठ स्तर से नीचे के प्रोग्रामर के साथ काम नहीं करता था। जाहिर है, सीनियर और जूनियर इंजीनियरों की संभावित विफलताएं अलग-अलग आयामों में हैं।


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


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


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


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

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


"फेकर्स", या अनुभवी और अनुभवहीन प्रोग्रामर के बीच भेद


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


प्रश्न जो मुझे एक प्रोग्रामर के अनुभव का आकलन करने में मदद करते हैं:


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


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

ऐसा होता है कि एक प्रोग्रामर के पास 5 साल का अनुभव होता है और वह 10 तकनीकों से अच्छी तरह वाकिफ होता है, लेकिन जब आप इस सूची से बुनियादी सवाल पूछते हैं, तो हो सकता है कि कोई जवाब न हो। अगले ब्लॉक से प्रश्नों के सेट के साथ भी ऐसा ही होने की संभावना है।


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

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


जूनियर से सीनियर तक का विकास: विकास युक्तियाँ


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


एक समय जावा रश पाठ्यक्रमों ने मेरी बहुत मदद की; सब कुछ आसानी से समझाया गया था, और मैं तुरंत अभ्यास कर सकता था। लेकिन यह फ्रंट एंड के बारे में नहीं है।


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

वहीं यह सोचना भी भूल है कि किसी कोर्स में डिग्री हासिल करने से किसी आईटी कंपनी के लिए दरवाजे खुल जाएंगे। ज्ञान के बिना यह कागज का टुकड़ा व्यर्थ है। डिप्लोमा के लिए पाठ्यक्रमों में भाग लेने का कोई मतलब नहीं है।


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


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


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