- अक्सर सोचने पर मजबूर होना पड़ता है कि क्या दूसरे पेशे भी ऐसे ही होते हैं
- सॉफ्टवेयर इंजीनियर को शुरुआत से ही कई programming languages और tools जानने होते हैं
- लेकिन सिर्फ इतना काफी नहीं है; कंपनी जिस खास framework का उपयोग करती है, उसे भी सीखना पड़ता है
- उदाहरण: Rails, Django, Laravel आदि
- CSS भी ज़रूरी है, लेकिन layout क्यों टूट जाता है यह पूरी ज़िंदगी सीखने पर भी समझना मुश्किल है
- बस थोड़ा-बहुत जानकर भी किसी तरह टिके रहना संभव है
JavaScript और frontend ecosystem का विकास
- JavaScript से बच पाना बहुत कम ही संभव होता है
- legacy app में सिर्फ jQuery इस्तेमाल करने की नौबत आए तो उसे किस्मत अच्छी मान सकते हैं
- React के आने के बाद frontend और backend अलग-अलग होने लगे
- लेकिन कंपनियों ने लोगों की संख्या बढ़ाने के बजाय सब कुछ संभालने वाले 'full-stack engineer' की मांग शुरू कर दी
- React सीखना अनिवार्य
- REST API implement करना भी ज़रूरी
- types की ज़रूरत की बात आई, तो TypeScript भी सीखना पड़ता है
- state management के लिए Redux इस्तेमाल करने का माहौल बन गया
- tools की setting भी करनी पड़ती है: webpack, esbuild, rollup, Prettier, ESLint आदि
तकनीक चुनने की आज़ादी? असल में लगभग नहीं
- पुराना तरीका अपनाकर काम चल सकता है, लेकिन हक़ीक़त ऐसी नहीं है
- सिर्फ React जानने वाले नए इंजीनियर को server-side rendering सिखाने का समय है भी या नहीं, यह सोचना पड़ता है
- startup तेज़ी से चलते हैं और पैसे भी तेज़ी से खर्च करते हैं, इसलिए standard से हटना मुश्किल होता है
सिस्टम प्रबंधन में बदलाव: DevOps का उदय
- पहले अलग से system administrator होते थे
- वे infrastructure management, DB upgrade, daemon management जैसी चीज़ें संभालते थे
- अब DevOps culture के कारण इंजीनियर को सब कुछ संभालना पड़ता है
- Docker सीखना ज़रूरी
- भले ही Docker की ज़रूरत न हो, तब भी Ansible, SystemD जैसे tools सीखने पड़ते हैं
cloud और infrastructure management tools की ज़रूरत
- अब AWS भी अनिवार्य रूप से संभालना आना चाहिए
- GUI इस्तेमाल करने पर शुरुआती समझा जाता है, इसलिए Terraform या Pulumi जैसे IaC tools सीखने पड़ते हैं
प्रमोशन मिल जाए तो क्या सब खत्म? नहीं, यह नई शुरुआत है
- manager बनने पर पूरी तरह अलग तरह का काम सीखना पड़ता है
- deadline का अनुमान लगाना
- काम बाँटना
- काम की परिभाषा लिखना
- annual review में भाग लेना
- product meeting में feedback देना
- अगर कंपनी का आकार नहीं बढ़ा है, तो अक्सर इंजीनियरिंग का काम भी साथ में करना पड़ता है
मांगें लगातार बढ़ती ही जाती हैं
- हाल ही में किसी रहस्यमय कंपनी से संपर्क आया
- मांग की गई skills: Rails, Hotwire, native mobile development
- ऐसा लगा मानो kernel या compiler development भी मांग लें
- software लगातार और जटिल होता जा रहा है
- इस जटिलता के पीछे कारण हैं, लेकिन specialization गायब होती जा रही है
- एक घर बनाने के लिए भी कई तरह के विशेषज्ञ चाहिए होते हैं
- लेकिन software में हालात ऐसे हैं कि हर भूमिका एक ही व्यक्ति से निभाने की उम्मीद की जाती है
भविष्य की उम्मीद: कुछ prompts से app development की दुनिया
- अगर हक़ीक़त इतनी जटिल है, तो कुछ prompts से app बनाने वाला भविष्य बुरा नहीं लगता
97 टिप्पणियां
कम से कम मुझे लगता है कि SW engineer 21वीं सदी के gold rush में हिस्सा ले सकने वाला एक पेशा है~
मुझे समझ आता है कि लिखने वाले को किन बातों में मुश्किल महसूस हो रही है, लेकिन प्रतिक्रियाएँ अजीब लग रही हैं। यह गिनाने से कि असल ज़िंदगी में इससे भी बड़ी दूसरी मुश्किलें हैं, बहुत मदद नहीं मिलती। क्योंकि वह बात व्यक्तिपरक है।
https://whoisnnamdi.com/never-enough-developers/
यह एक विदेशी लेख है जिसमें विश्लेषण किया गया है कि अनुभवी SW इंजीनियर मिलना इतना मुश्किल क्यों है, एक बार पढ़कर देखिए।
इंजीनियर के रूप में शुरुआत करने पर भी बीच में non-engineering भूमिकाओं में जाने की दर ऊँची होती है - नई तकनीकों में बदलाव की रफ्तार दूसरे पेशों की तुलना में बहुत तेज़ होती है - 2007 ~ 2019 के online job postings का विश्लेषण - computer और mathematics क्षेत्र में 47% नौकरियों में एक या अधिक नई तकनीकों की मांग थी (जैसे, ऐसी तकनीकें जो 2007 में अपरिचित थीं) - education, legal आदि क्षेत्रों में यह 20% था; तुलना करें तो यह बहुत बड़ा बदलाव है - 2007 में इस्तेमाल होने वाली 16% तकनीकें 2019 तक बेकार हो चुकी थीं। यह भी दूसरे पेशों की तुलना में लगभग 2 गुना है। - ज़रूरी skills तेज़ी से बढ़ती हैं, और उतनी ही तेज़ी से गायब भी हो जाती हैं। - यानी, अनुभव बढ़ाने पर भी स्थिर रहना मुश्किल है। अनुभवी लोगों को भी अपने career की शुरुआत में मौजूद न रही तकनीकों को लगातार सीखते हुए बढ़ना पड़ता है। - तेज़ी से बदलने वाले क्षेत्रों (जैसे computer science) की नौकरियों में दूसरे job families की तुलना में career की शुरुआत में ज़्यादा वेतन मिलता है। लेकिन समय के साथ यह premium तेज़ी से घटता है। 35~40 साल के बाद तो दूसरे क्षेत्रों (social science, business) की तुलना में premium उल्टा कम हो जाता है। - engineering: शुरुआत में highly skilled, तेज़ी से बदलने वाला पेशा। शुरुआती career income अधिकतम होती है। लेकिन समय बीतने के साथ नई तकनीकों के आने से पहले से मौजूद skills की value गिरती जाती है। worker को experience बढ़ने पर भी लगातार सीखते रहना पड़ता है, लेकिन learning effect घटने लगता है और experience से मिलने वाला return कम होने लगता है। - जो लोग तेज़ी से सीखते हैं, वे तेज़ी से बाहर भी निकल जाते हैं। - जिन लोगों की cognitive ability ऊँची होती है और जो जल्दी सीख लेते हैं, वे तेजी से बदलते क्षेत्र में बने रहने के बजाय अधिक स्थिर क्षेत्रों में जल्दी जाना अपने लिए ज़्यादा फ़ायदेमंद समझते हैं। - यह mid-career attrition और दूसरे job groups में जाने की दर कोई अस्थायी चीज़ नहीं है; यह क्षेत्र जितना बड़ा होगा, यह उतनी बढ़ेगी। talent pool बढ़ेगा तो wages नीचे आएँगी और बीच में छोड़ने की दर भी बढ़ेगी। - हम उम्मीद करते हैं कि अच्छे लोग टिकेंगे और कमज़ोर लोग चले जाएँगे, लेकिन वास्तव में पैटर्न उल्टा चल रहा है। सक्षम और तेज़ी से सीखने वाले लोग जा रहे हैं। इससे software industry को बहुत बड़ी opportunity cost चुकानी पड़ रही है। - जब तक इंजीनियरिंग भूमिकाओं में बदलाव की रफ्तार धीमी नहीं होती, मुझे लगता है कि लंबे समय में software developers की labor shortage जारी रहेगी।
मुझे तो उल्टा टिप्पणियों की प्रतिक्रियाएँ समझ नहीं आ रही हैं। क्या कोरिया ऐसा देश है जहाँ इंजीनियरों के आत्ममुग्ध होने की वजह से समस्या है (हालाँकि ऐसे कुछ लोग हो सकते हैं)? बल्कि इसके उलट, वहाँ उन्हें नज़रअंदाज़ किया जाता है और उनका मनोबल टूटता है, और इसी वजह से अच्छे इंजीनियर और शोधकर्ता विदेश चले जा रहे हैं—यही असली समस्या बन रही है। मेरा मानना है कि Samsung, Naver आदि में काम करने के बाद AMD, Google जैसी कंपनियों में जाने वाले लोग अगर बाद में अनुभव लेकर कोरिया लौटें, तो वह देश के लिए बड़ी पूंजी साबित होगी। लेकिन अगर माहौल ऐसा ही रहा, तो ज़्यादातर लोग शायद वहीं के होकर रह जाएँगे।
लोग अक्सर software क्षेत्र को बहुत संकीर्ण नज़रिए से देखते हैं और इसकी value-add भी कम मानते हैं, लेकिन आपने खुद जिस क्षेत्र में काम किया है और अपनी आँखों से जो देखा है, वही पूरी दुनिया नहीं है। नीचे की टिप्पणी की तरह, system semiconductor की प्रतिस्पर्धात्मकता भी SW तकनीक के अनुसार बदलती है.
कॉमेंट्स में software engineers को इस तरह नज़रअंदाज़ और नीचा दिखाते देखकर लगता है कि आगे चलकर कोरिया manufacturing और semiconductor में भी बड़ी ताकत नहीं दिखा पाएगा। घमंड करना और दूसरों को कमतर समझना तो निश्चित ही गलत है, लेकिन वास्तविक value को कम करके आंकना भी अच्छी बात नहीं है.
कोरिया में non-memory, यानी system semiconductor, की प्रतिस्पर्धात्मकता क्यों नहीं है? निष्कर्ष पहले ही कहें तो, इसकी वजह यह है कि वह ‘software industry’ में अमेरिका से पीछे है। आप यह पूछ सकते हैं कि semiconductor और ‘software’ का क्या संबंध है। अब मैं इसकी वजह को पृष्ठभूमि से धीरे-धीरे समझाने की कोशिश करता हूँ।
जैसा ऊपर बताया गया, system semiconductor की प्रतिस्पर्धात्मकता semiconductor circuit design capability से नहीं आती। यह अंततः hardware के रूप में साकार होती है, लेकिन इसकी नींव संबंधित application क्षेत्र की software creativity में होती है।
https://brunch.co.kr/@airtight/215/…
जैसा कि दूसरे लोगों ने कहा, SW का दायरा भी बहुत व्यापक है। कुछ क्षेत्र ऐसे होते हैं जिन्हें जल्दी सीखकर लागू किया जा सकता है, और कुछ ऐसे क्षेत्र होते हैं जहाँ विशेषज्ञता के आधार पर लंबे समय तक पढ़ाई और अनुभव जमा होना ज़रूरी होता है। यह मत सोचिए कि आपका अपना अनुभव ही सब कुछ है।
लेख में किसी दूसरे पेशे को खास तौर पर नीचा नहीं दिखाया गया है, फिर भी अजीब तरह की बहुत-सी टिप्पणियाँ लगी हुई हैं। जैसा किसी और ने कहा, मानव जीवन में IT जितना गहराई से शामिल होता जा रहा है, software उतना ही महत्वपूर्ण होता जा रहा है और बहुत-सी infrastructure उसी पर टिकी हुई है। मेरा मानना है कि हर developer की क्षमता बढ़ जाने से उन्हें अधिक compensation नहीं मिल रहा, बल्कि बस यह काम खुद ही महँगा हो गया है। क्योंकि यह पहले की तुलना में अधिक महत्वपूर्ण हो गया है। यहाँ यह काम कठिन है या नहीं, यह बहुत बड़ा मुद्दा नहीं है। कठिन है या नहीं, यह एक subjective भावना है, और वही किसी खास पेशे के साथ होने वाले व्यवहार या उसके मूल्य को तय भी नहीं करती।
लगता है कि उसे अपनी ही काबिलियत पर भरोसा नहीं है, इसलिए वह इतना हंगामा कर रहा है। जो लोग वास्तव में अच्छे हैं, उन्हें भी तुच्छ बताकर नीचा दिखा रहा है।
सब कुछ एक जैसा दिखाने के लिए
यह सही है कि यह ऐसा काम है जिसे कोई भी चुनौती के रूप में ले सकता है, लेकिन इसका मतलब यह नहीं कि उसमें प्रोफ़ेशनल सोच और आत्मगौरव नहीं होना चाहिए। लोग इसे लेकर काफ़ी गलतफ़हमी में हैं।
बिलकुल। यह ऐसा क्षेत्र है जिसमें कोई भी चुनौती ले सकता है, लेकिन व्यक्ति के अनुसार productivity में बहुत फर्क पड़ता है। इसे नकारने की वजह से ही जो लोग सच में अच्छे हैं, वे इंडस्ट्री छोड़ देते हैं या विदेश में नौकरी बदल लेते हैं।
मुझे टिप्पणियाँ समझ नहीं आ रही हैं। आत्ममुग्ध होना ठीक नहीं है और दूसरे पेशों को नीचा दिखाना तो बिल्कुल नहीं करना चाहिए, लेकिन क्या मूल पोस्ट में शुरू से ही किसी का अपमान किया गया था? या फिर आप लोग ऐसे इंजीनियर चाहते हैं जिनमें कोई self-respect न हो, जो बस यह सोचते हों कि यह काम कोई भी करे तो एक जैसा ही है, और जो बस जैसे-तैसे काम करें?
यह भी सही है कि वे कुछ ज़्यादा ही बढ़ा-चढ़ाकर कह रहे हैं।
आलोचनात्मक टिप्पणियाँ देखकर मैंने बहुत सोचा। कुछ हिस्सों से सहमति है और कुछ पर मेरी अलग राय है।
सही कहा। कमेंट्स में भी काफ़ी बकवास है। हद से ज़्यादा डूब जाना भी ठीक नहीं, लेकिन अगर आपको लगता है कि software engineering कोई ख़ास बात नहीं है, तो वह काम छोड़ दीजिए। ईमानदारी से कहें तो मानक नीचे कर दें तो यह आसान काम है, लेकिन अगर ऐसा नहीं है तो यह मुश्किल काम है—क्या यह सच नहीं है? दुनिया के ज़्यादातर पेशों की तरह।
यह आकलन करना मुश्किल है कि कोई दूसरा व्यक्ति किस माहौल में है, उसका स्वभाव कैसा है, या वह क्या महसूस कर रहा है.... लेकिन कम से कम मुझे इससे सहानुभूति नहीं होती, और मुझे लगता है कि इससे भी ज़्यादा कठिन और श्रमसाध्य नौकरियाँ बहुत हैं, इसलिए मुख्य लेख से मैं ज़्यादा जुड़ नहीं पा रहा हूँ।
उसकी तुलना करने की ज़रूरत नहीं है.
•शीर्षक का अनुवाद "पागलपन" के रूप में किया गया है, लेकिन मुझे लगता है कि यह बस मौजूदा स्थिति को व्यक्त करता है जो इंसान को बेदम कर देती है। और मैं भी मुख्य लेख की बातों से कुछ हद तक सहमत हूँ। यह सही है कि पहले की तुलना में अब एक इंजीनियर से अपेक्षाएँ कहीं अधिक व्यापक और बड़ी हो गई हैं। और पहले की तुलना में वास्तविक दुनिया का बहुत बड़ा हिस्सा कंप्यूटर सिस्टम के भीतर आ गया है, और उसी अनुपात में abstraction और implementation की कठिनाई भी तेज़ी से बढ़ रही है। सिर्फ़ वास्तविक दुनिया के और कठिन कामों की सूची गिनाने से यह कहने की ज़रूरत है क्या कि यह काम कठिन नहीं है...
मैं भी उन्हीं वजहों से software developer बना। कुछ लोगों को यह काम इसलिए पसंद नहीं आएगा क्योंकि इसमें हर दिन नई technologies सीखनी पड़ती हैं, और कुछ लोग सोचेंगे कि हर दिन नई technologies सीखनी पड़ती हैं इसलिए यह एक blessing है। लगता है नज़रिया बस अलग-अलग है।
हाँ, सही है। उस व्यक्ति के लिए वह बात मुश्किल हो सकती है। मुश्किल होना तो व्यक्तिपरक होता है।
मुझे समझ नहीं आता कि उस व्यक्ति को इतना बुरा-भला क्यों कहा जा रहा है। अगर उसने दूसरे पेशों को नीचा दिखाया होता तो उसकी आलोचना हो सकती थी, लेकिन ऐसा भी नहीं है। असल में टिप्पणियाँ ही उल्टा गैर-तार्किक तरीके से लेखक की हद से ज़्यादा निंदा कर रही हैं।
शीर्षक का अनुवाद भले ही "पागलपन" किया गया हो, लेकिन मुझे लगता है कि यह शायद मौजूदा स्थिति को व्यक्त करता है जो इंसान को बस बेहाल कर देती है। और मैं भी मूल लेख से कुछ हद तक सहमत हूँ। यह सही है कि पहले की तुलना में अब एक इंजीनियर से अपेक्षाएँ कहीं अधिक व्यापक और बड़ी हो गई हैं। और पहले की तुलना में वास्तविक दुनिया के कहीं अधिक हिस्से कंप्यूटर सिस्टम के भीतर आ गए हैं, इसलिए abstraction और implementation की कठिनाई भी तेज़ी से बढ़ रही है। सिर्फ इसलिए कि वास्तविक दुनिया के और भी कठिन कामों की सूची गिना दी जाए, यह कहने की ज़रूरत है कि यह काम कठिन नहीं है... ऐसा मुझे नहीं लगता।
दूसरे लोगों की बातों की तरह, जैसे-जैसे मानव जीवन में IT गहराई से समाता जा रहा है, software का महत्व बढ़ता जा रहा है और वह बहुत-सी infrastructure को सहारा दे रहा है। इसलिए उसके साथ होने वाला व्यवहार भी बदल गया है। वह काम कठिन है या नहीं, यहाँ यह महत्वपूर्ण बात नहीं है।
सही कहा। शुरुआत से ही कठिनाई एक व्यक्तिपरक भावना है। यह कभी ऐसी दुनिया नहीं थी जहाँ सिर्फ़ कठिन होने की वजह से सम्मान मिले। मुझे तो टिप्पणियाँ और भी अजीब लग रही हैं। व्यवहार या待遇 इस बात से तय होता है कि आप productivity आदि में कितना योगदान देते हैं। वह काम कठिन है या नहीं, यह उससे अलग बात है।
बाकी चीज़ों के बारे में तो नहीं जानता, लेकिन IT क्षेत्र में जानकारी थोड़ी ज़्यादा खुलकर साझा होती है और अपने काम को एक-दूसरे के साथ बाँटने का माहौल, कंपनियों सहित, काफ़ी व्यापक रूप से फैला हुआ है, इसलिए वह बात मुझे अच्छी लगती है।
अरे, हर तरह की जानकारी खुली पड़ी हो और हमेशा जवाब देने वाले कंप्यूटर के साथ काम करना कितना आसान है lol
यह लेख ऐसा महसूस कराता है मानो software engineer की ज़िंदगी पूरी तरह दर्द और अव्यवस्था से भरी हो, लेकिन वास्तव में यह ज़्यादा एक ऐसी बात लगती है जो लेखक के अपने अनुभव किए गए खास technical trends और environment पर आधारित है.
तकनीक में बदलाव निश्चित रूप से तेज़ हैं, लेकिन हर engineer इन्हें बिल्कुल एक जैसे तरीके से नहीं झेलता, और उनमें से कई लोग इसी के भीतर स्थिरता और आनंद भी महसूस करते हैं.
अगर बदलाव है, तो उसके मुताबिक खुद को ढालना engineering का ही एक हिस्सा है, अपने-आप में वह कोई 'पागलपन' नहीं है.
बस हंसकर आगे बढ़ जाता हूं... हाहा
दुनिया में ऐसा कौन-सा काम है जो मुश्किल न हो
मैं किसी दूसरे पेशे में 10 साल से ज़्यादा काम करने के बाद IT में आया हूं, और पिछले 10 सालों में बाहर से जितना देखा था, उतना ही यहां भी बढ़ा-चढ़ाकर शिकायत करने वाले लोग कम नहीं हैं.
मुश्किल होना एक व्यक्तिपरक बात है, फिर आप ऐसी तरह से क्यों बोल रहे हैं?
उनके लिए ऐसे पहलू वाकई परेशानी हो सकते हैं।
अगर इस तरह बोलना है, तो कोई आपसे भी कह सकता है कि आपने देर से field बदली, इसलिए बस औसत-से काम ही कर रहे हैं और आपको ऐसा लग रहा है। तब आपके पास भी कहने को कुछ नहीं बचेगा, है न?
सॉफ़्टवेयर इंजीनियर सिर्फ़ वही लोग नहीं होते जो cloud में DevOps करते हैं।
मुझे लगता है फ्रंटएंड के मामले में यह कुछ हद तक सही है। यह ऐसा मोहल्ला है जहाँ आज जो सीखा, वह कल कचरा बन जाता है....
Tailwind इस्तेमाल करने से पहले, भले ही मैंने बहुत गहराई से काम न किया हो, मुझे बस जबरदस्त गुस्सा और हताशा ही महसूस होती थी।
बैकएंड या सिस्टम डेवलपमेंट? यह करते हुए कभी-कभी लगता है, क्या मैं सच में इसके लिए पैसे लेने लायक काम कर रहा हूँ~ ऐसा लगता है जैसे Lego जोड़ने के पैसे मिल रहे हों, लेकिन अच्छा है कि मैं software development कर रहा हूँ...
CSS भी ज़रूरी है, लेकिन layout क्यों टूट जाता है यह ज़िंदगी भर सीखने पर भी समझना मुश्किल है > सच में बिल्कुल सही बात है T_T
लगता है यह तो शुरू से ही AGI को करना चाहिए था..
Hacker News की राय
सॉफ़्टवेयर इंजीनियर बनना कठिन नहीं है। सॉफ़्टवेयर इंजीनियरिंग सबसे आसान नौकरियों में से एक है। हम इतने अधिक सुरक्षित माहौल में हैं कि इस लेख में बताई गई बातों को कठिन समझते हैं, और यही इस बात का प्रमाण है कि हमारा पेशा वास्तव में कितना कठिन नहीं है
सॉफ़्टवेयर लगातार अधिक जटिल होता जा रहा है। इस जटिलता के पीछे कारण हैं। लेकिन वे अच्छे कारण नहीं हैं। पहले efficiency के लिए incentives होते थे। टैलेंट की कमी, bandwidth और computing power की कमी, बजट की कमी जैसी चीजें थीं
20 साल की "हर कोई programmer बने" वाली लहर, अत्यधिक funding, और committee द्वारा design ने एक बेहद जटिल दुनिया बना दी है
30 साल के करियर में ऐप्स और system frameworks पर काम किया, और नई language, API, framework, tool वगैरह सीखने पड़े। इसमें सॉफ़्टवेयर के बनने और डिलीवर होने के तरीकों में बदलाव भी शामिल थे: agile development, tech lead-driven काम, QA से no-QA, unit testing, code review आदि—लक्ष्य हमेशा बदलता रहता है
जिन languages की जानकारी है: Pascal, C, 6502 assembly, C++, Objective-C, Javascript, Swift आदि
करियर की शुरुआत में memory management, चीजों को छोटा और तेज़ रखना एक महत्वपूर्ण skill थी। करियर के बीच के दौर में concurrency का विशेषज्ञ बनना पड़ा
Apple जैसी बड़ी कंपनियों में "अच्छी" teams और "खराब" teams होती थीं। यह किसी खास engineer के लिए सापेक्ष बात होती है। जो team मुझे पसंद नहीं थी, वही किसी और के लिए बिल्कुल सही हो सकती थी
"खराब" टीम में कई साल काम करने के बाद गंभीर पेट की समस्या हो गई, और surgery की ज़रूरत पड़ी। stress को गंभीरता से लेना चाहिए
घर बनाने की तरह यहाँ specialization खत्म हो रही है। जिन नौकरियों में high school diploma से अधिक शिक्षा चाहिए, उनमें अब generalist होने की मांग है। कई नौकरियाँ तरह-तरह की skills मांगती हैं
अगर एक व्यक्ति पर्याप्त ज्ञान के साथ काम संभाल सकता है, तो दो specialists को रखने की ज़रूरत नहीं पड़ती। architecture firms भी अक्सर न्यूनतम लोगों से काम चलाती हैं
जटिलता के कारणों में FAANG जैसी कंपनियों के लिए resume-building, job niche बनाना, और job security से जुड़ा आत्ममोह शामिल है। industry maturity की बुनियादी अनदेखी हो रही है
अच्छा काम करो तो manager बना दिया जाता है। फिर पूरी तरह अलग काम सीखना पड़ता है। skills सीखने में बहुत समय लगाया, लेकिन वह "इंसानों को debug" करने की क्षमता में नहीं बदलता
आज के web pages, 10 साल पहले की तुलना में बहुत अलग नहीं हैं। लेकिन मशीनें कहीं अधिक जटिल हैं, pages का download size बड़ा है, और responsiveness कम है
सॉफ़्टवेयर उद्योग के बारे में एक सिद्धांत यह है कि mature tech company को कैसे manage करना है, यह कोई नहीं जानता। tech दुनिया में resume-driven development एक समस्या है। tech managers को इसे पहचानकर रोकना चाहिए, लेकिन वे ऐसा नहीं कर पाते
कुछ programming languages और frameworks सीखना बस "थोड़ा झंझट" है, कठिन नहीं
सॉफ़्टवेयर कृत्रिम है। physical sciences में नई तकनीकें और समाधान खोजना कहीं अधिक कठिन है। climate change, बीमारियों का इलाज, और टिकाऊ food supply सुनिश्चित करने जैसी जटिल समस्याओं को हल करना वास्तव में बहुत कठिन है
सॉफ़्टवेयर इंजीनियरिंग मूलतः data को इधर-उधर व्यवस्थित करने का काम है। यह शक्तिशाली तो है, लेकिन भौतिक दुनिया की सबसे कठिन समस्याओं को हल करने जितनी बुनियादी रूप से जटिल नहीं है
Software engineering की जटिलता इंजीनियरों और टीमों के काम के अनुसार अलग-अलग होती है; इसकी कोई तयशुदा ऊपरी सीमा नहीं होती। अगर हर समस्या सिर्फ डेटा को फिर से व्यवस्थित करने से ही हल हो जाती, तो SW engineering जैसा क्षेत्र कभी बना ही नहीं होता।
यह दावा करना कि भौतिक दुनिया के बजाय औपचारिक प्रणालियों पर आधारित होने के कारण इसमें जटिलता कम है, लगभग उसी स्तर की बात है जैसे यह कहना कि भाषाविज्ञान और गणित जटिल नहीं हैं, क्योंकि वे मनुष्यों द्वारा कृत्रिम रूप से बनाई गई भाषा और संख्यात्मक औपचारिक प्रणालियों पर आधारित हैं।
जलवायु परिवर्तन, बीमारियों के इलाज और टिकाऊ खाद्य आपूर्ति सुनिश्चित करने जैसी जटिल समस्याओं के समाधान में भी SW तकनीक महत्वपूर्ण है। आगे चलकर यह और भी महत्वपूर्ण होगी। इसे बिल्कुल अलग समस्या की तरह क्यों बताया जा रहा है, यह मुझे अच्छी तरह समझ नहीं आता।
क्या वास्तव में Big Data जैसी तकनीकों से समस्याओं के समाधान में काफ़ी योगदान नहीं हो रहा है?
अहंकार अच्छा नहीं है, लेकिन अपनी असली क़ीमत को कम करके आंकना भी अच्छा नहीं है।
Software engineer जैसा टॉप-टियर पेशा बहुत कम है। उस पल का सामना करो जब तुम्हें एहसास होगा कि कुछ नया बना पाना कितना खुशी देता है।
पिछले कुछ वर्षों में software developers की supply काफ़ी बढ़ी है, इसलिए software development के बारे में industry के बाहर के लोग भी बहुत कुछ जानने लगे हैं। ऐसे में यह उम्मीद थी कि software industry में काम करने वालों की बढ़ा-चढ़ाकर की जाने वाली शिकायतें और साथ काम करने वाले दूसरे पेशों के लोगों द्वारा की जाने वाली अत्यधिक प्रशंसा शायद कुछ कम होगी। लेकिन चूँकि इसकी पृष्ठभूमि में supply shortage से पैदा हुआ बेहतर treatment था, इसलिए अब इसे तथाकथित “hot” पेशा समझा जाने लगा है, और मुझे लगता है कि शायद यह प्रवृत्ति उल्टे और भी बढ़ गई है.
हाँ, जब software development एक अलोकप्रिय पेशा था, जिसमें लोगों की दिलचस्पी नहीं थी और जिसे बहुत कम लोग करना चाहते थे, तब स्थिति तुलनात्मक रूप से ठीक थी। वह अपने आप में एक तरह की motivation भी बन जाता था, और एक छोटे पेशेवर समूह के रूप में पेशेवर identity बनाने में भी मदद करता था। ‘मैं जिस समूह का हिस्सा हूँ, वह खास है’ — यह भावना लोगों को belonging और psychological stability देने वाला एक महत्वपूर्ण तत्व भी है।
लेकिन जिस समय मैंने programmer बनने का फ़ैसला किया था, तब भी software development काफ़ी हद तक mainstream काम बन चुका था; और अब तो क्या वह दौर सचमुच बीत नहीं गया? कोरिया के मानकों से देखें तो हर साल निकलने वाले software majors की संख्या पहले की तुलना में इतनी बढ़ चुकी है कि उसकी तुलना ही नहीं की जा सकती। अब software development कोई रहस्यमय काम नहीं रह गया है। इसके अलावा, कई वर्षों तक चली उस retraining boom के नतीजे में, जो talent procurement की विफलता के कारण शुरू हुई थी, अब पूरे समाज में यह बात फैल चुकी है कि अगर किसी का aptitude और सोचने का तरीका मेल खाता हो, तो non-majors भी self-study से सीखकर आसानी से amateur स्तर से निकलकर professional बन सकते हैं।
जो लोग कहते हैं कि software development बहुत कठिन काम है, वे ख़ुद यह काम क्यों करते हैं? क्या वे इसे इसलिए करते हैं क्योंकि यह कठिन और थकाने वाला होने के बावजूद संतोष देने वाला काम है? इस industry में ऐसे लोग मुझे बहुत ज़्यादा नहीं दिखे। क्या आप इसे कठिन इसलिए कहते हैं कि दूसरे लोग इसे नहीं कर पाते, जबकि असल में आप यह काम इसलिए करते हैं क्योंकि यही आपके लिए सबसे आसान काम है? लोग ज़रा-सा बढ़ा दें तो आत्ममुग्ध होकर ख़ुद को कोई बहुत खास समझते हुए आँखें बंद मत कीजिए, और आसपास देखिए। science और engineering में कौन-सा ऐसा क्षेत्र है जिसमें कोई अपने कमरे में बैठकर इंटरनेट पर थोड़ा-बहुत देखकर self-study करे और (अगर अच्छा करे) तो कुछ ही महीनों में field में लगाया जा सकने वाला expert बन जाए?
सिर्फ इसलिए कि demand growth और manpower training policy के बीच mismatch के कारण आपको थोड़े समय का market gain मिला, या सिर्फ इसलिए कि किस्मत से आपको दूसरों के विपरीत इस काम से परहेज़ न करने वाला mindset और सीखने का मौका मिला, बेहतर होगा कि आप उसे कोई बहुत बड़ा अर्थ न दें।
आधुनिक industry के नज़रिए से software अभी भी न तो उच्च स्तर की specialization तक पहुँचा है और न ही proper mass production तक। यह handicraft और manufacturing के बीच कहीं है, लेकिन stage के लिहाज़ से handicraft के कहीं ज़्यादा क़रीब है, और जैसे बहुत-से कारीगर-आधारित कामों में होता है, वैसे ही software programmer के मामले में भी hobby और profession के बीच की रेखा अभी धुंधली है।
हमें यह स्वीकार करना चाहिए कि industry के लिहाज़ से हमारा काम कुछ वैसा ही है जैसे लोहारखाने में लोहा पीटना, आरी लेकर बढ़ईगिरी करना, या sandpaper से काँच घिसकर चमकाना। यह आधुनिक industry से साफ़ तौर पर अलग है, जहाँ लकड़ी डालो तो paper mill कागज़ निकाल देती है, तेल डालो तो petrochemical plant plastic बना देता है, और silicon को महँगी मशीनों में डालो तो factory semiconductor उगल देती है। दूसरी manufacturing industries के विपरीत, software development में अभी भी हाथ का हुनर रखने वाले लोगों की ज़रूरत होती है।
बेशक, जिन लोगों के पास दूसरों से अलग बेहतरीन हाथ का हुनर है, वे सम्मान के हक़दार हैं। लेकिन थोड़ा-सा हुनर निखार लेने के बाद यह सोचना कि काश युवावस्था में सीखे हुए इसी हुनर के सहारे पूरी ज़िंदगी गुज़ार सकता, या फिर यह कि मेरे पास इतना बढ़िया हुनर है तो क्या मुझे दूसरों की तरह मेहनत से काम नहीं करना चाहिए, या क्या मेरे पास कोई ऐसा असाधारण talent है जो दूसरों के पास नहीं — इस तरह ‘विशेष मैं’ के मोह में डूब जाना शायद घमंड के क़रीब की बात नहीं है क्या?
ज़रा ध्यान से सोचिए कि दूसरे लोग इसकी इतनी आलोचना क्यों कर रहे हैं, और आप खुद भी या आगे चलकर घमंड में ऐसी बकवास बातें करते हुए मत घूमिए।
कंप्यूटिंग तकनीक के प्रति जुनून के साथ काम करने वाले लोग भी बहुत हैं। अपने विचारों और अनुभवों के आधार पर सामान्यीकरण मत कीजिए। क्योंकि यह उन लोगों के लिए अपमानजनक है।
नीचे उचित आलोचनाएँ हैं। computing technology की accessibility ज़्यादा होने में SW engineers का योगदान भी बड़ा है। accessibility ज़्यादा होने का मतलब यह नहीं कि professional बनना भी आसान है। क्या cooking तक पहुँच आसान होने से cooking expert बनना आसान हो जाता है?
•सीखना आसान है। मानता हूँ, लेकिन entry barrier कम होने का मतलब यह नहीं कि specialization भी कम है। दूसरे industries, खासकर manufacturing के अन्य technical roles की तुलना में इसे सीखना आसान लगने की वजह शायद development खुद आसान होना नहीं, बल्कि open source culture या कम risk होना है। पहले बताई गई developers की diversity के पहलू में, कुछ काम ऐसे होते हैं जिन्हें जल्दी सीखकर किया जा सकता है, और कुछ काम ऐसे होते हैं जिन्हें expertise के आधार पर करना पड़ता है।
•थोड़ी drawing सीखकर अगर कोई comic artist का assistant बन जाए, तो क्या आप खुद को professional कहते फिरेंगे? या फिर कुछ cooking classes करके kitchen में नौकरी मिल जाए, तो क्या आप खुद को cooking expert, chef कहेंगे? आपकी बात लगभग उसी स्तर की है। अगर यह इतना आसान होता, तो उसे professional नहीं कहा जाता।
•क्या इसकी सीधे manufacturing industry से तुलना करना सार्थक है? जिस नज़रिए से देखें कि industry अभी पर्याप्त रूप से उन्नत नहीं हुई है, उस हिसाब से तुलना का विषय manufacturing लगता है। लेकिन अगर software industry को manufacturing के paradigm से समझने की कोशिश करेंगे, तो यह handcraft या hobby development जैसा दिख सकता है; उल्टा, मुझे लगता है कि ऐसे ही पहलू software development की अपनी लचीली और रचनात्मक संस्कृति बनाते हैं, और उसी के आधार पर यह आगे बढ़ रहा है.
•यह सही है कि पहले की तुलना में अब एक engineer से अपेक्षाएँ कहीं अधिक व्यापक और बड़ी हो गई हैं। और पहले की तुलना में वास्तविक दुनिया का बहुत बड़ा हिस्सा computer systems के भीतर आ गया है, इसलिए abstraction और implementation की कठिनाई भी तेज़ी से बढ़ रही है। सिर्फ़ इसलिए कि हम वास्तविक दुनिया के और भी कठिन कामों की सूची गिना सकते हैं, क्या यह कहना ज़रूरी है कि यह काम कठिन नहीं है... मुझे ऐसा नहीं लगता।
•परिस्थितियाँ बदल गई हैं। मुझे नहीं लगता कि बाज़ार में developers से अपेक्षाएँ और उन्हें मिलने वाला reward पहले से ज़्यादा होने का कारण सिर्फ़ उनकी technology, skill level या expertise है। जैसे-जैसे IT मानव जीवन में गहराई से समाता गया है, software की अहमियत बढ़ी है, और वह बहुत-सी infrastructure को संभाल रहा है। मेरा मानना है कि हर developer की क्षमता बढ़ जाने की वजह से reward नहीं बढ़ा, बल्कि यह काम ख़ुद ही महँगा हो गया है। क्योंकि इसकी अहमियत पहले से अधिक हो गई है।
•ऐसा लगता है कि आप SW development को सिर्फ code generation और API generation समझ रहे हैं। लेकिन SW development का असली सार वास्तविक दुनिया को abstract करके protocol और interface बनाना, और चीज़ों को उनमें फिट करना है। मतलब, अलग-अलग तरीकों से काम करने वाली चीज़ों को जोड़कर उन्हें ऐसे चलाना कि वे एक ही सिस्टम की तरह काम करें। यह सोच से कहीं अधिक जटिल बौद्धिक काम है, और इसी वजह से जितना लोग समझते हैं उससे कहीं अधिक मुश्किल है अच्छे SW engineer तैयार करना। अभी कहा जाता है कि लोग बहुत हैं, लेकिन उनमें से वास्तव में ठीक से काम कर सकने वाले कितने हैं? ज़्यादातर ने बस कोई tool एक-दो बार इस्तेमाल किया होता है, लेकिन वही SW engineer होने का मूल नहीं है।
आप संदर्भ से हटकर आलोचना कर रहे हैं। मूल पोस्ट लिखने वाले ने किसी को नीचा नहीं दिखाया, लेकिन SW engineer role की value को कमतर दिखाकर और उसे गिराकर पेश करने वाले क्या आप खुद नहीं हैं?
अगर आप कहीं जाकर robotics या OS जैसे क्षेत्रों में PhD भी कर लें, तो सिर्फ डिग्री कोर्स पूरा करने भर से ही कम-से-कम उस हिस्से में आपको expert professional कहा जा सकता है। मेरा मतलब यह है कि professional होने का मानदंड कम-से-कम इतना तो होना ही चाहिए।
क्या आप बस थोड़ा-सा ड्रॉइंग सीख लेने और फिर किसी कॉमिक कलाकार के असिस्टेंट के तौर पर काम शुरू कर देने के बाद खुद को प्रोफेशनल कहते फिरेंगे? या फिर कुछ समय कुकिंग इंस्टीट्यूट जाकर किचन में नौकरी मिल जाए तो खुद को पाक-कला विशेषज्ञ, शेफ कहेंगे? आपकी बात लगभग उसी स्तर की है। अगर यह इतना आसान होता, तो उसे प्रोफेशनल नहीं कहा जाता।
खाना बनाना हो या पेंटिंग, ये कहना कि क्योंकि ये ऐसे काम हैं जो कोई भी कर सकता है, इसलिए कुछ महीने सीखकर कोई प्रो बन सकता है—आपकी बात भी कुछ वैसी ही लगती है। SW engineer को जो सम्मान मिलता है, वह इसलिए कि SW का प्रभाव उतना बड़ा हो गया है। मुद्दा यह नहीं है कि वह काम कठिन है या नहीं। अगर पसंद नहीं है तो कोई और काम कर लीजिए। लेकिन किसी दूसरे क्षेत्र में जाकर भी अगर आप ऐसी ही बातें करते फिरेंगे, तो अच्छी प्रतिक्रिया नहीं मिलेगी। उन लोगों को भी बुरा लगेगा। यह भी ठीक नहीं कि आप कोई बहुत महान काम कर रहे हैं इस घमंड में डूब जाएँ, लेकिन उसकी value को कम करके आँकना भी सही व्यवहार नहीं है।
मैं इस बात से इनकार नहीं करूंगा कि कोई भी चुनौती ले सकता है। लेकिन यह कहना कि कोई भी आसानी से प्रोफेशनल बन सकता है, झूठ है। उम्मीद है कि आप असल जिंदगी में किसी से ऐसी बातें कहकर नहीं घूमते होंगे। क्योंकि वह धोखा है।
साइंस/इंजीनियरिंग में ऐसा कौन-सा क्षेत्र है जहाँ कोई कमरे में बैठकर इंटरनेट पर थोड़ा देखकर self-study करे और (अगर अच्छा करे तो) कुछ ही महीनों में ऐसा expert बन जाए जिसे तुरंत इंडस्ट्री में लगाया जा सके? <- किसी भी क्षेत्र में ऐसे entry-level job seeker को कोई भी expert नहीं कहता। लगता है किसी ने यह आलोचना पहले ही कर दी है। अगर आप सच में ऐसा सोचते हैं, तो आपकी सोच का स्तर नीचा है और आपमें professional mindset भी नहीं है।
शौकिया स्तर से निकलकर प्रो बनना आसान है? अगर यह सच होता, तो उसे फिर प्रो नहीं कहते।
लगता है कि आप यह गलतफ़हमी पाल रहे हैं कि SW development सिर्फ code generation और API generation का काम है। SW development का मूल सार यह है कि वास्तविक दुनिया को abstract करके protocols और interfaces बनाए जाएँ, और चीज़ों को उनके भीतर फिट किया जाए। मतलब, अलग-अलग तरीकों से काम करने वाली चीज़ों को जोड़कर उन्हें एक इकाई की तरह काम कराने में इसकी असली भूमिका है। यह जितना दिखता है उससे कहीं ज़्यादा जटिल बौद्धिक काम है, और इसी वजह से अच्छे SW engineers तैयार करना सोच से ज़्यादा कठिन है। कहा जाता है कि अभी लोग बहुत हैं, लेकिन उनमें से कितने लोग वास्तव में ठीक से काम कर सकते हैं? ज़्यादातर लोगों ने बस कोई-न-कोई tool एक बार इस्तेमाल किया होता है, लेकिन वही SW engineer होने का मूल नहीं है।
दूसरी टिप्पणियों की तरह, Samsung, Naver आदि में काम करके बाद में AMD, Google आदि में जाने वाले लोग अगर अपने अनुभव के साथ बाद में कोरिया लौटें, तो वह एक बड़ी संपत्ति बन सकते हैं। लेकिन ऐसे माहौल में लौटना तो दूर, वे लगातार बाहर ही जाते रहेंगे। यह सिर्फ पैसों का मामला नहीं है; यहाँ का माहौल और सोच, दोनों ही बहुत खराब हैं।
कुल मिलाकर कहना क्या चाहते हैं? क्या कोरिया में engineers के साथ बहुत अच्छा व्यवहार होता है? अगर आपको लगता है कि आपको अपनी मेहनत से ज़्यादा मिल रहा है, तो कहीं दान ही कर दीजिए। क्या कोरिया ऐसा माहौल है जहाँ engineers के घमंड की वजह से समस्या होती है? समस्या तो यह है कि वहाँ की परिस्थितियाँ विदेशों से बदतर हैं, इसलिए काबिल लोग नौकरी बदलकर चले जाते हैं और वापस नहीं आते। (हालाँकि घमंडी लोग भी हो सकते हैं)
दूसरे लोग भी आपके जैसे ही होंगे, ऐसा मनमाने ढंग से मान लेना देखकर साफ है कि आप घमंडी हैं। बहुत से लोग ऐसे भी हैं जो कठिन समस्याओं को चुनौती देना पसंद करते हैं, इसलिए यह काम करते हैं। यह मत सोचिए कि आपका अनुभव ही सब कुछ है।
इंजीनियरिंग और साइंस के क्षेत्रों में ऐसा कौन-सा क्षेत्र है जिसमें कोई व्यक्ति कमरे में बैठकर इंटरनेट पर थोड़ा-बहुत देखकर खुद से पढ़ाई करे और (अगर अच्छा करे तो) कुछ ही महीनों में उसे सीधे इंडस्ट्री में काम करने लायक विशेषज्ञ माना जा सके? <- किसी भी क्षेत्र में ऐसे entry-level नौकरी चाहने वाले को कोई विशेषज्ञ नहीं कहता।
लगता है, इस टिप्पणी की तरह आपकी भी किसी को विशेषज्ञ मानने की कसौटी काफ़ी नीचे है। आम तौर पर ऐसे मामले में किसी को विशेषज्ञ नहीं कहा जाता। कहीं और जाकर ऐसी बात मत कीजिए।
आप तो काफ़ी मज़ाकिया इंसान लगते हैं। कहीं घमंडी आप ख़ुद तो नहीं? उस व्यक्ति ने तो बस अपनी मुश्किलें बयान की हैं। उन्होंने किसी को नीचा भी नहीं दिखाया, तो सिर्फ़ इसलिए कि आपकी और उनकी भावना अलग है, क्या वह आलोचना का कारण बन जाना चाहिए? बल्कि लगता है कि आप ही SW engineer होने पर गर्व महसूस करने वाले लोगों को नीचा दिखाना चाहते हैं। लगता है कि आपको अपने काम पर न तो गर्व है और न ही संतोष, तो ऐसी भावनाएँ ख़ुद ही संभालिए। बेकार की बातें करते मत फिरिए।
मुझे किसी और का कमेंट उचित आलोचना लगा, इसलिए उसे जोड़ रहा हूँ।
"यह सही है कि अतीत की तुलना में आज एक engineer से अपेक्षाएँ कहीं अधिक व्यापक और बड़ी हो गई हैं। और अतीत की तुलना में कहीं ज़्यादा वास्तविक दुनिया अब कंप्यूटर सिस्टम्स के भीतर आ गई है, इसलिए abstraction और implementation की कठिनाई भी तेज़ी से बढ़ रही है। लेकिन सिर्फ़ यह गिनाने से कि वास्तविक दुनिया में और भी कठिन काम हैं, क्या यह कहने की ज़रूरत है कि यह काम मुश्किल नहीं है... ऐसा मुझे नहीं लगता।"
उनके लिए वह मुश्किल हो सकता है। मुश्किल होना व्यक्तिपरक बात है।
मुझे समझ नहीं आता कि उन्हें इतनी गालियां क्यों पड़ रही हैं। अगर उन्होंने किसी दूसरे पेशे को नीचा दिखाया होता तो आलोचना हो सकती थी, लेकिन बात ऐसी भी नहीं है। असल में आप ही लेखक की हद से ज़्यादा आलोचना कर रहे हैं, जबकि यह आलोचना लायक बात भी नहीं है। सच में घमंडी आप हैं। आगे से ज़रा कम बोला कीजिए। ईमानदारी से कहूं तो ऐसा लगता है कि आप अपनी ही professionalism और self-respect की कमी को ढकने की कोशिश कर रहे हैं। यह सही है कि यह ऐसा काम है जिसे कोई भी चुनौती के तौर पर अपना सकता है, लेकिन इसका मतलब यह नहीं कि professional mindset और self-respect नहीं रखनी चाहिए। मैं अब इस पर और बात नहीं करूंगा।
"मैंने programming इसलिए शुरू की क्योंकि यह आसान था। मैं दिन भर अपने सामने रखी समस्याएँ हल करता था और करीब 5:30 बजे काम खत्म करके घर लौट जाता था और दोस्तों के साथ समय बिताता था। लेकिन 20 साल बाद भी मैं software के क्षेत्र में इसलिए काम कर रहा हूँ क्योंकि यह काम कठिन है.
जो काम पहले आसान था, वह अब इसलिए कठिन हो गया है क्योंकि भूमिका समस्याएँ हल करने से product को बढ़ाने की भूमिका में बदल गई है, पहले से तय सही चीज़ का पीछा करने से बदलाव के लिए क्या सही है उसे optimize करने की भूमिका में बदल गई है।" - Jessica Kerr,
<97 sujhav for Java developers> में शामिल कई लेखों में से Jessica Kerr द्वारा लिखे गए "पहेली से product तक" शीर्षक वाले लेख की शुरुआती पंक्तियाँ
जो लोग कहते हैं कि software development एक मुश्किल काम है, वे खुद यह काम क्यों करते हैं? क्या आप यह इसलिए करते हैं क्योंकि यह कठिन और थकाने वाला काम होने के बावजूद संतोष देने वाला है? मुझे नहीं लगता कि इस इंडस्ट्री में ऐसे लोग बहुत ज़्यादा थे। <-यह बात भी मज़ेदार है। बहुत से लोग जटिल समस्याएँ हल करने में मज़ा महसूस करते हैं, इसलिए यह काम करते हैं। आप खुद ही अपने अनुभव के आधार पर बहुत ज़्यादा सामान्यीकरण कर रहे हैं।
नीचे एक अच्छी बात थी, इसलिए उसे यहाँ भी छोड़ रहा हूँ.
क्या manufacturing industry से सीधे तुलना करना वाकई सार्थक है? जिस नज़रिए से देखा जाए कि industry का उन्नत होना अभी पर्याप्त नहीं हुआ है, उस हिसाब से तुलना का विषय manufacturing industry दिखाई देता है. अगर manufacturing industry के paradigm से software industry को समझने की कोशिश करें, तो यह handcraft या hobby development जैसा लग सकता है, लेकिन दूसरी ओर मुझे लगता है कि यही पहलू software development की अपनी लचीली और रचनात्मक संस्कृति बनाते हैं, और उसी के आधार पर यह बढ़ रहा है.
एक बात और कहूँ तो, SW का क्षेत्र भी बहुत व्यापक है। कुछ काम ऐसे होते हैं जिन्हें जल्दी सीखकर किया जा सकता है, और कुछ काम ऐसे होते हैं जिनके लिए विशेषज्ञता की बुनियाद ज़रूरी होती है। यह मत सोचिए कि आपका अपना अनुभव ही सब कुछ है। वह भी अहंकार ही है।
जैसा कि पहले कहा गया था, SW engineer के साथ व्यवहार इसलिए नहीं बदला है कि वह काम कठिन और मुश्किल है। वह एक subjective भावना है, और ऐसी चीजें किसी पेशे का मूल्य तय नहीं करतीं। दूसरे comments की तरह, software का महत्व बढ़ गया है और वह बहुत-से infrastructure को संभाल रहा है। हर developer की क्षमता बढ़ने से reward ज़्यादा नहीं हुआ है, बल्कि मुझे लगता है कि काम खुद ही महंगा हो गया है। क्योंकि यह पहले की तुलना में अधिक महत्वपूर्ण हो गया है। यहाँ यह सवाल कि वह काम कठिन है या नहीं, कोई बहुत महत्वपूर्ण मुद्दा नहीं है.
जो काम आपको आसान लगता है, वह किसी और के लिए मुश्किल हो सकता है, और जो किसी दूसरे के लिए आसान है, वह आपके लिए मुश्किल हो सकता है। आप जो कह रहे हैं वह सब subjective है। फिर कहता हूँ, कठिन और मुश्किल होना एक subjective भावना है, और ऐसी चीजें किसी पेशे का मूल्य तय नहीं करतीं। आप कहते हैं कि घमंड मत करो, लेकिन subjective बातों के आधार पर घमंड तो आप ही करते लगते हैं।
यह अच्छी बात होगी कि सिर्फ इसलिए इसे कोई बहुत बड़ा अर्थ न दें कि किस्मत से आपको दूसरों से अलग इस काम से परहेज़ न करने वाली सोच और शिक्षा का अवसर मिला। <-दुनिया में कौन-सी नौकरी ऐसी नहीं है? यह विनम्रता को बढ़ा-चढ़ाकर दिखाने के बहाने नीचा दिखाना है।
अगर कोई व्यक्ति कुछ महीनों तक cooking academy में सीखने के बाद chef की नौकरी पा ले, तो क्या हम उसे expert कहेंगे? वह expert है या नहीं, इसका आकलन तो अनुभव जमा होने के बाद ही करेंगे।
सिर्फ़ कुछ कर पाना और नौकरी पाकर उसके लिए पैसे लेकर काम कर पाना, ये दोनों बिल्कुल अलग बातें हैं। उस क्षेत्र के बारे में पूरी तरह अनभिज्ञ व्यक्ति के लिए थोड़े समय की ट्रेनिंग लेकर ठीक-ठाक नौकरी पाना आसान नहीं होता। (यहाँ अनभिज्ञ से मतलब उन लोगों से नहीं है जिनकी पृष्ठभूमि गणित/industrial engineering/electrical engineering जैसे संबंधित विज्ञान-इंजीनियरिंग क्षेत्रों में है लेकिन SW का ज्ञान नहीं है, बल्कि उन लोगों से है जिनकी engineering base ही नहीं है।) खाना बनाना या चित्रकारी भी कुछ महीनों के शॉर्ट-टर्म प्रशिक्षण से सीखी जा सकती है। लेकिन क्या उससे एक ठीक-ठाक नौकरी पाना आसान होगा?
इंजीनियरिंग/साइंस में ऐसा कौन-सा क्षेत्र है जिसमें कोई व्यक्ति कमरे में बैठकर इंटरनेट पर थोड़ा-बहुत देखकर self-study से (अगर अच्छा करे तो) सिर्फ़ कुछ महीनों में सीधे इंडस्ट्री में लगाया जा सकने वाला विशेषज्ञ बन जाए? <- किसी भी क्षेत्र में ऐसे entry-level job seeker को कोई भी विशेषज्ञ नहीं कहता। इस लेख में इतनी बकवास है कि आपत्ति करने लायक बातें बहुत हैं।
और बेशक, जिन लोगों के पास ऐसा बेहतरीन हुनर है जो दूसरों के पास नहीं होता, वे सम्मान के हकदार हैं। लेकिन क्या यह कुछ घमंड के करीब नहीं है कि थोड़ा-सा कौशल निखार लेने के बाद कोई इस सोच में डूब जाए कि काश युवावस्था में सीखे हुए इसी हुनर से पूरी ज़िंदगी चल जाती; फिर ऐसा क्यों नहीं हो सकता; मेरे पास इतना शानदार हुनर है तो क्या मुझे दूसरों की तरह कठिन मेहनत नहीं करनी चाहिए; क्या मैं कोई ऐसी असाधारण प्रतिभा वाला व्यक्ति नहीं हूँ जो दूसरों के लिए आसानी से संभव नहीं है; वगैरह-वगैरह, और इस तरह अपने ही विशेष होने में खो जाना? <- सैद्धांतिक रूप से यह बात सही है, लेकिन खास तौर पर सिर्फ engineers और scientists पर ही ऐसा पैमाना लगाने वाले लोग काफी दिखते हैं। यह मुझे विनम्रता के नाम पर बढ़ा-चढ़ाकर नीचा दिखाने जैसा लगता है।
इस क्षेत्र में डिग्री वगैरह जैसी credentials पर अपेक्षाकृत कम ज़ोर दिया जाता है, इसका कारण यह नहीं कि यह आसान है, बल्कि open source संस्कृति जैसी चीज़ों का प्रभाव ज़्यादा बड़ा है। यह उद्योग अपनी प्रकृति से ही authority को नापसंद करता है।
क्योंकि वह एक व्यक्तिपरक भावना है, और उसने कभी किसी पेशे के साथ होने वाले व्यवहार को तय नहीं किया है। अगर वही फैसला करने का मानदंड होता, तो दिहाड़ी मज़दूरी करने वाले लोगों को सबसे ज़्यादा सम्मान मिलता।
पता नहीं। किसी चीज़ में ज़्यादा डूब जाना ठीक नहीं, लेकिन मुझे लगता है कि आप उल्टा SW engineering को ही कमतर दिखा रहे हैं। SW engineers के साथ व्यवहार में बदलाव इसलिए नहीं आया कि वह काम मुश्किल और कठिन है। वह एक व्यक्तिपरक भावना है, और ऐसी चीज़ें किसी पेशे की क़ीमत तय नहीं करतीं। दूसरे comments की तरह, software अब ज़्यादा महत्वपूर्ण हो गया है और बहुत-सी infrastructure को संभाले हुए है। मेरा मानना है कि हर developer की क्षमता बढ़ने से compensation ज़्यादा नहीं हुआ, बल्कि काम ख़ुद ही महंगा हो गया है। क्योंकि यह पहले की तुलना में अधिक महत्वपूर्ण हो गया है। यहाँ यह काम कठिन है या नहीं, यह कोई बहुत महत्वपूर्ण मुद्दा नहीं है।
और सिर्फ इतना कि आप कुछ कर सकते हैं, और इतना कि आप किसी हद तक काम करके नतीजा दे सकते हैं—इन दोनों में जमीन-आसमान का फर्क है। कुछ खास मामलों को छोड़ दें, तो बिल्कुल शुरुआती व्यक्ति के लिए कुछ महीनों की शॉर्ट-टर्म ट्रेनिंग के बाद ठीक-ठाक नौकरी पाना क्या आसान है?
यह कोई ऐसा लेख भी नहीं है जो खास तौर पर दूसरे पेशों को नीचा दिखाता हो, इसलिए ऐसा लेख और भी ज़्यादा हास्यास्पद लगता है।
सहमत हूँ। मैंने सुना है कि आर्किटेक्चर में 2~3 साल के प्रोजेक्ट्स के लिए भी लगभग एक हफ्ते के भीतर शेड्यूल का अनुमान लगाया जा सकता है। उस नज़रिए से देखें तो software को अभी बहुत लंबा रास्ता तय करना है।
मैंने कभी नहीं सोचा था कि यह हस्तशिल्प जैसा हो सकता है, लेकिन इससे बहुत सहमति महसूस होती है।
इस नज़रिए से सोचने पर लगता है कि कई घटनाएँ समझ में आ जाती हैं।
मैंने कभी इसे हस्तकला जैसा नहीं सोचा था, लेकिन बात सही लगी।
मुख्य लेख की बात नहीं, नीचे कमेंट लिखने वाले व्यक्ति की चीज़ थोड़ी देखी तो लगा कि सामग्री आपस में मिल गई है।
जो लोग कहते हैं कि software engineer होना बहुत कठिन पेशा है, वे अगर CS विभाग में आधा दिन ही customer support संभाल लें तो उनकी सोच काफ़ी बदल जाएगी.
ऐसा लगता है कि लोगों के मन में यह भ्रम है कि पहले सब कम जटिल था, लेकिन programming में तो आखिरकार इंसानी दिमाग़ की capacity ही सीमा तय करती है, इसलिए तब और अब में कठिनाई के स्तर में बहुत ज़्यादा फ़र्क नहीं है. बस फ़र्क इतना है कि अब हम ज़्यादा abstract tools के साथ कहीं बड़े दायरे को संभाल रहे हैं.
कंप्यूटर वैसे भी उन चीज़ों में आते हैं जिन्हें नियंत्रित करना अपेक्षाकृत आसान है, और सच कहें तो इस तरह का knowledge work दूसरे पेशों की तुलना में औसतन कम कठिन ही होगा. अगर कोई बात इसे थोड़ा अलग तरह से कठिन बनाती है, तो वह यह है कि आधुनिक समाज की प्रकृति के कारण 365/24 लगातार reliability की अपेक्षा की जाती है.
सहमत हूँ। मुख्य लेख ऐसा लगता है जैसे इसे किसी ऐसे व्यक्ति ने लिखा है जिसकी डेवलपमेंट में रुचि या योग्यता नहीं है.
आज जो काम आप अकेले भी कर सकते हैं, वही अगर पहले करने की कोशिश करते तो वह बहुत, बहुत मुश्किल होता.
लेकिन अब abstracted tools की बदौलत, उसी मेहनत से कहीं बड़े दायरे को संभालना संभव हो गया है, इसलिए अब अकेले भी service चला पाना संभव है। सच कहूँ तो यह काफ़ी मज़ेदार है।
पहले की तुलना में अब एक व्यक्ति को संभालने वाले काम का दायरा बहुत बढ़ गया है, और इससे समस्याएँ पैदा होती हैं.
•यह सही है कि पहले की तुलना में अब एक इंजीनियर से अपेक्षाएँ कहीं अधिक व्यापक और बड़ी हो गई हैं। और पहले की तुलना में वास्तविक दुनिया का बहुत बड़ा हिस्सा कंप्यूटर सिस्टम के भीतर आ गया है, इसलिए abstraction और implementation की कठिनाई भी तेज़ी से बढ़ रही है। सिर्फ इसलिए कि हम वास्तविक दुनिया के और भी कठिन कामों की सूची गिना सकते हैं, क्या यह ज़रूरी है कि हम यह दावा करें कि यह काम कठिन नहीं है... ऐसा मुझे नहीं लगता।
मैं इस राय से सहमत हूँ। ऐसी बहुत-सी दूसरी नौकरियाँ हैं जो इससे कहीं ज़्यादा कठिन काम करती हैं, लेकिन उन्हें सॉफ्टवेयर इंजीनियरों जितना प्रतिफल नहीं मिलता।
पता नहीं। मुश्किल काम तो बहुत हैं। लेकिन उससे क्या फ़र्क पड़ता है? कब से हमने मेहनताने का मूल्यांकन इस आधार पर करना शुरू किया कि काम मुश्किल है या नहीं? वह तो व्यक्तिपरक बात है। SW engineer को महत्व इसलिए मिलता है क्योंकि SW की value उतनी बढ़ गई है। वह काम मुश्किल है या नहीं, यह वहाँ कोई बहुत महत्वपूर्ण निर्णय-मानदंड नहीं है।
कौन-सी चीज़ें?
इलेक्ट्रॉनिक्स...
एक ही फ़ंक्शन करने वाले अलग-अलग तरह के circuit elements होते हैं (सिर्फ capacitor ही लें तो उनकी भी कई किस्में होती हैं, और साधारण on/off के लिए भी transistor, triac वगैरह), फिर दर्जनों कंपनियों के सैकड़ों-हज़ारों products में से कीमत और characteristics देखकर चुनना पड़ता है। उसी बीच circuit parts की revision के हिसाब से errata भी देखनी पड़ती है, और software release तो rollback कर दें तो बात खत्म, लेकिन product एक बार production में चला गया तो उसे वापस नहीं मोड़ा जा सकता, इसलिए बहुत सावधानी चाहिए। testing भी PCB बनवाकर, assembly करके, फिर modify करके जैसे एक ज़माना लग जाता है। एक component बहुत दूर मौजूद किसी दूसरे component को प्रभावित कर देता है, और debugging भी software की तरह नहीं कि बस breakpoint लगा दिया और ज़्यादातर हल हो गया; यहाँ सीमित jtag ports निकालने पड़ते हैं, jumpers उड़ाने पड़ते हैं, lab में कोई दिक्कत नहीं होती लेकिन input होने वाला electrical waveform विकृत हो तभी समस्या सामने आती है, ऊपर से EMC certification भी बड़ा सिरदर्द है.
मैं खुद यह काम नहीं करता, बस बगल में किसी को करते देखा है, तो मुझे यह सब ऐसा लगा है.
वो तो बिल्कुल अलग उदाहरण है, है ना? rollback कर देने से सब खत्म हो जाता है? आपका अपना अनुभव ही सब कुछ नहीं होता। क्या आपने कभी बड़े पैमाने का काम नहीं किया है?
बस काम की प्रकृति अलग है, फिर उसकी तुलना इस तरह क्यों करते हैं?
मैं भी सहमत हूँ। इंटरनेट पर software engineer की मुश्किलों के बारे में आसानी से सुनने को मिलता है, शायद इसलिए क्योंकि इंटरनेट बनाने वाले वही लोग हैं।
आप क्या बेतुकी बात कर रहे हैं? क्या सभी SW engineers इंटरनेट इंडस्ट्री में ही काम करते हैं? Semiconductor इंडस्ट्री भी है, और autonomous driving, robotics जैसे क्षेत्र भी हैं। और क्या सिर्फ इंटरनेट इंडस्ट्री में काम करने वाले लोग ही इंटरनेट इस्तेमाल कर सकते हैं?
सोचते हो software engineer बनना आसान है? lol ये काम वही कर सकता है जिसका IQ सबसे टॉप पर हो। कोचिंग में 30 लोग आते हैं और उनमें से सिर्फ 1–2 ही टिक पाते हैं, फिर भी कहते हो कि बनना आसान है?
학원में 3% से ज़्यादा लोगों का बच निकल पाना इस बात का सबूत है कि यह आसान है।parkindani मुझे नहीं लगता। सिर्फ़ कुछ कर पाना और नौकरी पाकर उसके लिए पैसे लेकर काम कर पाना, ये दोनों पूरी तरह अलग बातें हैं। उस क्षेत्र के बारे में बिल्कुल अनजान व्यक्ति के लिए थोड़े समय की ट्रेनिंग लेकर एक ठीक-ठाक job पाना आसान नहीं होता। (यहाँ 'अनजान' से मेरा मतलब गणित/industrial engineering/electrical engineering जैसी संबंधित विज्ञान-इंजीनियरिंग पृष्ठभूमि वाले लेकिन SW ज्ञान न रखने वाले लोगों से नहीं है, बल्कि उन लोगों से है जिनकी engineering base ही नहीं है।) खाना बनाना या चित्र बनाना भी कुछ महीनों के शॉर्ट-टर्म प्रशिक्षण से सीखा जा सकता है। लेकिन क्या उससे एक ठीक-ठाक job पाना आसान होगा?
अकादमियों में ऐसे बहुत से पेशे हैं जिनमें 50% से ज़्यादा लोग टिक जाते हैं। ऐसे भी कई पेशे हैं जिनके लिए अकादमी जाने की भी ज़रूरत नहीं होती। और intelligence की बात क्यों नहीं करते? डेवलपर के तौर पर टिके रहने के लिए top 15% के भीतर की intelligence चाहिए, lol
मुझे नहीं पता कि डेवलपर के रूप में टिके रहने का सही मतलब क्या है, लेकिन कम से कम मेरे मामले में इतना ज़रूर है कि मैं ऐसे प्रतिभाशाली लोगों से घिरा हूँ जिनकी संज्ञानात्मक क्षमता शायद शीर्ष 1 प्रतिशत या उससे भी ऊपर है।
लेकिन बुद्धिमत्ता सिर्फ जन्मजात चीज़ से तय नहीं होती; यह बाद में भी brain plasticity के ज़रिए निश्चित रूप से बेहतर हो सकती है। जन्म के समय कुछ हिस्सा तय होता है, लेकिन वही सब कुछ नहीं है। और software industry में बुद्धिमत्ता इतनी भी पूर्णतः निर्णायक चीज़ है या नहीं, इस पर मुझे यक़ीन नहीं है। सिर्फ development को समझ लेने भर से भी बहुत सारे काम किए जा सकते हैं। मेरे आसपास दूसरे subjects से undergraduate करने वाले, या bachelor’s degree भी न रखने वाले सहकर्मी, चाहे engineer हों या किसी और position में, सब अच्छी तरह काम कर रहे हैं। उनकी 'संबंधित' बुद्धिमत्ता पहले कितनी थी, इसमें मेरी कोई दिलचस्पी नहीं है.
और व्यक्तिगत रूप से, मुझे लगता है कि किसी academy/bootcamp में "टिके रहना" असल में व्यक्ति की अपनी रुचि और उस academy की education system से पूरी तरह प्रभावित होता है। अगर आप typical route लें—यानी mathematics, engineering, या CS में undergraduate पूरा करें, या फिर graduate school तक जाएँ—तो यह कई सौ वर्षों में साबित और बेहतर किया गया education system है, इसलिए स्वाभाविक है कि इसकी quality और quantity, 16 या 32 हफ्ते वाले academy/bootcamp से दबदबे के साथ अलग होगी।
और academy में चाहे कितना भी compressed तरीके से पढ़ाया जाए, अगर आपका अपना मानदंड यह है कि lab में रहकर-खाकर papers लिखने वाले master’s/PhD positions के बराबर न पहुँचना मतलब failure है, तो फिर वह निश्चित रूप से failure ही होगा। अगर आपको वैसी position चाहिए, तो साबित education system यानी graduate school में जाएँ। अगर वह पसंद नहीं, तो फिर जैसा आपने कहा, अपनी बुद्धिमत्ता पर निर्भर कीजिए। उस स्थिति में cognitive ability curve के कितने छोर तक की क्षमता चाहिए होगी, यह मुझे नहीं पता।
थोड़ा बात से हटकर लग रहा है। अचानक मास्टर्स और PhD की बात क्यों आ रही है?
मैंने इसे विस्तार से लिखा है, जिसमें जीवित बचे रहने वाले शब्द की अस्पष्टता की ओर इशारा किया है। अगर यह अपने-आप से बात करने वाली व्याकरण है, तो क्या जवाब की ज़रूरत नहीं होती?
यह बात ज़्यादा असरदार नहीं लगती। आप जवाब न भी दें तो चलेगा।