मैं और एक जूनियर दोस्त जो Python इस्तेमाल करता है, जबकि मैं .Net इस्तेमाल करता हूँ,
नौकरी से जुड़ी एक स्थिति पर बात कर रहे थे।
उस दौरान हमने जूनियर्स के बीच इस बात पर चर्चा की कि
Rust, Elixir जैसी भाषाएँ, जो देश में कम देखने को मिलती हैं, इस्तेमाल करने वाले जूनियर और
Java, JS जैसी भाषाएँ, जो देश में बहुत ज़्यादा दिखती हैं, इस्तेमाल करने वाले जूनियर में
किसकी स्थिति ज़्यादा फायदेमंद होगी।
बेशक, सीमित ज्ञान के आधार पर हमारी जो निष्कर्ष निकला, वह यह था कि पहले CS और कोडिंग टेस्ट के ज़रिए अपनी क्षमता दिखाना सबसे ज़रूरी है,
और उसके बाद मामला कंपनी पर निर्भर करता है — हम बस इतना ही अनुमान लगा पाए।
सीनियर्स इस बारे में क्या सोचते हैं?
20 टिप्पणियां
यह पोस्ट मैंने बहुत देर से देखी, इसलिए शायद अब यह बात बाद में कह रहा हूँ, लेकिन सिर्फ़ यह कहना कि भाषा तो बस एक टूल है~~~ थोड़ा अव्यावहारिक लगता है। कम से कम अगर कोई junior ऐसा है जो Rust जैसी ऊँची learning curve और entry barrier वाली भाषा को अच्छी तरह संभाल सकता है, तो वह दूसरी भाषाएँ जैसे .NET, Python तो आसानी से संभाल ही लेगा। मुझे लगता है कि बुनियादी क्षमता में काफ़ी स्तर का अंतर होगा। मेरे अनुभव में, जो लोग C/C++ के बजाय Python से developer market में आए, उनमें basic client/server, algorithm knowledge के साथ-साथ काम समझने और संभालने की क्षमता भी काफ़ी कमज़ोर थी। बेशक, अगर संबंधित क्षेत्र की domain knowledge साथ हो तो synergy effect आएगा। यानी हक़ीक़त यह है कि शुरुआत की रेखा से ही skill gap साफ़ दिखता है, और यह सिर्फ़ भाषा चुनने का मामला नहीं है।
हो सकता है कि यह इस सवाल का मुख्य बिंदु न हो, लेकिन कभी-कभी जब मैं यह सुनता हूँ कि "भाषा सिर्फ एक tool है, कुछ भी चुनो कोई फ़र्क नहीं पड़ता", तो थोड़ा अफ़सोस होता है। हर भाषा जिन मूल्यों का पीछा करती है और जिस इरादे से बनाई जाती है, वे अलग होते हैं, लेकिन ऐसा लगता है कि उन सबको यह कहकर एक ही जैसा बना दिया जाता है कि "दोनों से वैसे भी यह-वह सब किया जा सकता है"।
यह दावा कि भाषा सिर्फ़ एक साधन है, control structure, data structure और algorithm learning जैसे शुरुआती चरण तक सीमित रखें तो उससे सहमत हुआ जा सकता है। लेकिन मुझे लगता है कि शुरुआती चरण के बाद industry की inertia, standard library, third-party library, execution model, deployment method, reference materials की उपलब्धता और quality, users की संख्या जैसी बारीक बातों पर विचार करना सही है। जैसे, भले ही general-purpose languages की expressiveness बराबर हो, machine learning के उद्देश्य से Python चुनना सबसे सुरक्षित विकल्प है।
शायद मैं जूनियर हूँ, इसलिए हो सकता है कि मैंने इसे सिर्फ़ शुरुआती कोर्स के दौरान ही देखा हो।
अच्छी बात कहने के लिए धन्यवाद T_T
सहमत हूँ haha
हमारे देश के उद्योग में प्रचलित tech stack फायदेमंद रहता है। जो चीज़ें self-study से सीखी जा सकती हैं और जो कंपनी में सीखी जा सकती हैं, उनमें फर्क होता है। मुझे लगता है कि दूसरा विकल्प कम से कम थोड़ा कम अकेला होगा।
मैं Java करते-करते .NET के आकर्षण में पड़ गया एक जूनियर हूँ, सिसक।
तकनीकी रूप से ज़्यादा परिपूर्ण या उत्पादक तकनीक ही बाज़ार में चुनी जाती है, ऐसा नहीं है। मेरे मामले में, लगभग 10 साल पहले Python Django इस्तेमाल करने वाली कोई एक ही बड़ी कंपनी थी, इसलिए नौकरी के लिए मैंने चुपचाप उम्मीद छोड़ दी थी और PHP व Spring पढ़ना शुरू किया था। अब भी अफ़सोस होता है कि आज के किसी भी framework में Django जैसी productivity नहीं मिलती।
आह.. तो फिर मुझे इस पर थोड़ा सोचने की ज़रूरत होगी।
ईमानदारी से कहूँ तो, अगर आप एक भाषा को ठीक से मास्टर कर लें, तो दूसरी भाषाओं के साथ आसानी से एडजस्ट कर सकते हैं.
बस ऑब्जेक्ट-ओरिएंटेड भाषा से फ़ंक्शनल भाषा में जाने जैसी स्थिति न हो तो.
शायद मैं जिस कंपनी में जाना चाहता हूँ, उसकी भर्ती घोषणा को संदर्भ के तौर पर देखूँगा।
भाषा शायद उतनी महत्वपूर्ण न हो.. environment को समझने और संभालने की दक्षता, या मजबूत design जैसी चीज़ें ज़्यादा महत्वपूर्ण हो सकती हैं.. बेहतर होगा कि लक्ष्य भाषा के अच्छी तरह डिज़ाइन किए गए open source को पढ़ने या उसमें commit करने को लक्ष्य बनाया जाए..
ओपन सोर्स को देखकर सीखना! इसे याद रखूंगा
कम से कम देश के भीतर तो Java इस्तेमाल करने वाली कंपनियां काफी हैं, इसलिए नौकरी पाने में भी यह फायदेमंद है.
मुख्य भाषा के तौर पर Java रखें और साथ में दूसरी भाषाएं सीखते जाएं, तो सिर्फ नौकरी के नजरिए से यह ज्यादा फायदेमंद है.
स्किल से अलग, अगर संबंधित अनुभव नहीं है तो दस्तावेज़ी चरण से ही रिजेक्ट होने की संभावना काफी बढ़ जाती है T_T
सही कहा। चाहे कोई दूसरी भाषाओं में कितना भी अच्छा क्यों न हो, अगर कंपनी में मुख्य रूप से Java इस्तेमाल होती है, तो उसे तुरंत Java में योगदान दे सकने वाले कर्मचारी की ज़रूरत होगी।
मैं चाहे जितना भी CS रट लूँ और दस्तावेज़ भी कंठस्थ कर लूँ,
अगर मेरा करियर रिकॉर्ड ही कंपनी के साथ मेल नहीं खाता, तो वे दस्तावेज़ चरण से ही बाहर कर देते हैं T_T
दुर्भाग्य से यह मेरा अपना अनुभव है T_T
कंपनी में मैं Java framework या WebSquare जैसे web solution संभालता हूँ, लेकिन hobby development में node या rust करता हूँ.
अगर सिर्फ कंपनी का काम करना है, तो मुझे लगता है कंपनी के stack के साथ चलना सही है, और अगर कोई development है जो आप खुद करना चाहते हैं, तो मुझे लगता है कि समय निकालकर भी अपनी पसंद की language पढ़ेंगे...
मुझे लगता है कि language या framework कभी भी बदल सकते हैं, इसलिए CS knowledge और architecture knowledge ज़्यादा महत्वपूर्ण हैं. मुझे नहीं लगता कि language सबसे महत्वपूर्ण चीज़ है.
लगता है मुझे फिर से अपनी विशेषज्ञता की किताबें खोलनी पड़ेंगी।
अलार्म आया तो देखा कि ऊपर वाले लोग इस बारे में बात कर रहे थे कि क्या भाषा सिर्फ़ एक साधारण टूल है haha
मुझे नहीं लगता कि भाषा ‘सिर्फ़ एक साधारण’ टूल है, लेकिन यह एक टूल है, ऐसा मैं मानता हूँ.
हर भाषा की अपनी दर्शन और design principles होते हैं, इसलिए मेरा मानना है कि उन्हें समझकर उस समस्या (या उस प्रोडक्ट) के लिए उपयुक्त भाषा चुननी चाहिए जिसे हल करना है या उपलब्ध कराना है.
आख़िरकार, उपयुक्त भाषा कैसे ढूँढनी है यह अनुभव या सीखने के ज़रिए पता चलता है. इसी नज़रिए से मैं भाषा को एक टूल मानता हूँ, और मैंने कहा था कि इससे भी ज़्यादा महत्वपूर्ण architecture या CS knowledge है.
2 हफ़्ते पहले लिखा अपना कमेंट देखा तो लगा कि आख़िर में मैंने जो कहा था, “मुझे लगता है कि भाषा महत्वपूर्ण नहीं है.”, वह थोड़ा घमंडी लगा, इसलिए यह अतिरिक्त कमेंट छोड़ रहा हूँ haha