कर्नेल / सिस्टम / डिवाइस ड्राइवर प्रोग्रामर कैसे बनें? [बन्द है]


40

मैं वर्तमान में एंड्रॉइड ओएस के साथ काम करने वाले सॉफ़्टवेयर इंजीनियर के रूप में एक पेशेवर क्षमता में काम करता हूं। हम परियोजना के अन्य पहलुओं के बीच एक देशी डेमॉन के रूप में हमारे मंच को एकीकृत करने पर काम करते हैं। मैं मुख्य रूप से एसडीके और एंड्रॉइड एप्लिकेशन विकसित करने वाले जावा में काम करता हूं, लेकिन सी / सी ++ में प्लेटफॉर्म के साथ मदद करने के लिए मिलता हूं।

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

मेरे द्वारा देखी जा रही समस्या, प्रवेश स्तर की कोई स्थिति नहीं है। इस क्षेत्र में कोई कैसे टूटता है? जब भी मैं "लिनक्स सिस्टम प्रोग्रामर" या "लिनक्स डिवाइस ड्राइवर प्रोग्रामर" देखता हूं, तो उन सभी को न्यूनतम 5-7 साल के प्रासंगिक अनुभव की आवश्यकता होती है। वे किसी ऐसे व्यक्ति को चाहते हैं जो रस्सियों को जानता है, न कि एक जूनियर स्तर के प्रोग्रामर (मैं अब 7 महीने से काम कर रहा हूं ...)।

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

वर्गीकरण के लिए संपादित करें! मैं लिनक्स कर्नेल / ड्राइवरों आदि के ओपनसोर्स प्रकृति से अवगत हूं, जहां मेरा दिन का काम है, मैं इसकी परवाह किए बिना योगदान करने की योजना बना रहा हूं। मैं अधिक उत्सुक हूं कि किस प्रकार के प्रवेश स्तर के पद मुझे प्रासंगिक कार्य करने और भुगतान करने की अनुमति देंगे! अब तक के सभी जवाबों का धन्यवाद!


6
बहुत आसान। लिनक्स ओपन सोर्स है। बस विकास सूची का पालन करें, कुछ कीड़े को ठीक करें, अपना सामान पता करने के बाद, शायद नई सुविधाओं, अनुकूलन, जैसे कुछ ड्राइवरों को बड़ा सामान लिखना शुरू करें ...
Let_Me_Be

2
लेकिन लिनक्स में किसी भी क्षेत्र को चुनने से पहले आपके पास लिनक्स और कुछ हाथों के काम करने की समझ होनी चाहिए। कहते हैं कि आपको लिनक्स फाइल सिस्टम आदि का ज्ञान होना चाहिए
user29973

जवाबों:


36

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

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

  1. कर्नेल डेवलपर्स ऑपरेटिंग सिस्टम के कोर के लिए इंटरफेस, डेटा संरचनाओं, एल्गोरिदम और अनुकूलन पर ध्यान केंद्रित करते हैं।
  2. सिस्टम प्रोग्रामर सामान्य या कठिन कार्यों को स्वचालित करने के लिए डेमॉन, यूटिलिटीज और अन्य उपकरण लिखते हैं।
  3. डिवाइस ड्राइवर डिवाइस नियंत्रण और IO को लागू करने के लिए कर्नेल डेवलपर्स द्वारा लिखे गए इंटरफेस और डेटा संरचनाओं का उपयोग करते हैं।

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

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


3
दिलचस्प है, लेकिन शायद जादू की गोली नहीं।
मैट जॉइनर

7
जादू की गोलियां शायद ही कभी मौजूद हों।
एड एस।

आपके इनपुट के लिए धन्यवाद! मैं अपने फोकस को कम करने पर काम करूंगा (आखिरकार मैं अब सभी पहलुओं की समझ रखना चाहता हूं)। किस क्षमता में (यदि आप खुलासा करने के लिए अवकाश पर हैं) तो क्या आपने ड्राइवरों के लिए "गो टू गो" बनने से पहले काम किया था?
accordionfolder

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

3

मैं 15 साल के अनुभव के साथ मोटोरोला और कुछ अन्य हाई टेक कंपनियों में काम करने वाला एक सॉफ्टवेयर डेवलपर हूं। मेरे पास BSCE की डिग्री है। इसलिए मैं शौकिया नहीं हूं।

यह सवाल ... कैसे टूटना है ... यह लिनक्स के लिए ही नहीं बल्कि वस्तुतः विशेषज्ञता के किसी भी क्षेत्र के लिए एक आम बात है। सॉफ्टवेयर इंजीनियरिंग दवा की तरह हो गया है कि चिकित्सकों को विशेषज्ञ होना चाहिए। लेकिन जब आपकी कंपनी एक विशेषज्ञ होने के 10 वर्षों के बाद आपको छोड़ देती है और आपको बंद कर देती है, तो आप पाते हैं कि नौकरी बाजार बदल गया है और आप चालू नहीं हैं। कंपनियाँ इतनी चयनात्मक नहीं हुआ करती थीं - अक्सर अब एकमात्र उम्मीदवार जिनके पास इच्छा सूची में सभी कौशल हैं, वे पहले से ही उस कंपनी या प्रत्यक्ष प्रतियोगी के लिए काम कर रहे हैं! यह काफी कठिन हो जाता है।

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

  1. शुरू करने के लिए एक छोटी कंपनी की तलाश करें। वे इतने योग्य नहीं हो सकते कि वे बड़े लोगों के रूप में किसे किराए पर दें। एक या दो साल वहाँ बिताएँ और उसके बाद, आपको अर्हता प्राप्त करने के लिए फिर से शुरू करने पर पेशेवर अनुभव होगा।

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

  3. अपने दम पर एक छोटी परियोजना या दो करें और भावी नियोक्ताओं को प्रस्तुत करने के लिए एक पोर्टफोलियो बनाएं। यह न केवल एक छोटी कंपनी में प्रवेश करने का द्वार खोल सकता है, बल्कि एक midsized भी हो सकता है।

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

वास्तव में, केवल 7 महीने के अनुभव के साथ एक "जूनियर प्रोग्रामर" को मेरे जैसे लड़के पर बहुत बड़ा फायदा होता है जब कुछ नया करने की कोशिश की जाती है। कंपनियां प्यार करती हैं "ताजा-बाहरी" / "नई कब्रें", क्योंकि वे जानते हैं कि आप बहुत पैसा नहीं मांगेंगे और आवश्यकता होने पर विदेशों में लंबे समय के स्टेक सहित वे भी करने के लिए तैयार रहेंगे। कंपनियां मुझे एक जूनियर पद के लिए नहीं लेगी, भले ही मैंने एक के लिए आवेदन किया हो क्योंकि उन्हें पता है कि मैं एक बेहतर एक के लिए छोड़ना चाहूंगा। आपकी स्थिति उतनी बुरी नहीं है।

सौभाग्य!

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