it-swarm.asia

Nasıl Çekirdek / Sistemler / Aygıt sürücüsü programcısı olunur?

Şu anda Android OS ile çalışan bir yazılım mühendisi olarak profesyonel bir kapasitede çalışıyorum. Platformumuzu projenin diğer yönleri arasında yerli bir arka plan programı olarak entegre etmek için çalışıyoruz. Öncelikle SDK ve Java uygulamalarını geliştiren Android'de çalışıyorum, ancak C/C++ platformunda yardımcı olabilirim.

Her neyse, linux için profesyonel olarak düşük seviye geliştirmeye çalışmak büyük bir ilgim var. Şu anki pozisyonumda mutsuz değilim ve şirket bana izin verdiği sürece (aslına bakarsanız orada çalışmaktan çok hoşlanıyorum!), Ama bu yönde çalışmak istiyorum. Linux Çekirdek Geliştirme (Robert Love) ve Linux Programlama Arayüzü (Michael Kerrisk) (C becerilerimi elde ettiğim her fırsatta güçlendirmenin yanı sıra) ve Monster ve benzeri sitelere göz atarak çalışıyorum.

Gördüğüm problem --- giriş seviyesi pozisyonu yok. Bu alana nasıl girilir? Her zaman "Linux Sistem Programcısı" veya "Linux Aygıt Sürücüsü Programcısı" nı görüyorum - hepsi gerekli en azından 5-7 yıl ilgili deneyim. Halatları bilen birini istiyorlar, küçük bir programcı değil (7 aydır çalışıyorum ...).

Öyleyse, stackoverflow'daki bazılarınızın sadece yapmak istediğim şeyi yaparak profesyonel bir kapasitede çalıştığını varsayıyorum. Oraya nasıl gittin? Oraya gitmek için hangi platformları kullandınız? CSC'de bir bilgisayar mühendisinin aksine lisanslarım olduğu için daha zor bir zaman geçirecek miyim (biraz daha gömülü, asm, vb. Deneyimleyecekleri)?

AÇIKLAMAYI DÜZENLE! Linux çekirdeğinin/sürücülerin vb. Açık kaynak yapısının farkındayım. Günlük işimin nerede olduğuna bakılmaksızın katkıda bulunmayı planlıyorum. Ne tür giriş seviyesi pozisyonlarının alakalı işler yapmamı ve bunu yapmamı sağlayacağımı merak ediyorum! Şimdiye kadarki bütün cevaplar için teşekkürler!

40
accordionfolder

Şirketim için Linux aygıt sürücüleri yazıyorum ve bölümümdeki Linux gelişimi hakkında en çok şey bilerek bu pozisyona girdim ve beni yeni bir role yükselttiler/işe aldılar. Çok küçük bir seviye tarzı giriş, bu yüzden onlar var ve umut kaybetmek yok!

Size derhal tavsiyem, odağınızı daraltıp azaltamayacağınızı görmektir. Çekirdek programlama, sistem programlamasından çok farklıdır, aygıt sürücüsü programlamasından çok farklıdır.

  1. Çekirdek geliştiricileri, işletim sisteminin çekirdeği için arabirimlere, veri yapılarına, algoritmalara ve optimizasyona odaklanır.
  2. Sistem programcıları, yaygın veya zor görevleri otomatikleştirmek için cinler, yardımcı programlar ve diğer araçları yazar.
  3. Aygıt sürücüleri, aygıt denetimi ve IO'yu uygulamak için çekirdek geliştiricileri tarafından yazılan arabirimleri ve veri yapılarını kullanır.

Çok iyi bir çekirdek programcısı kesinti gecikmesi ve donanım determinizmi hakkında çok şey bilmeyebilir, ancak kilitlerin, kuyrukların ve Kobjects'in nasıl çalıştığı hakkında çok şey bilecektir. Bir aygıt sürücüsü programcısı, donanımlarının düzgün ve duyarlı bir şekilde çalışmasını sağlamak için kilitleri, kuyrukları ve diğer çekirdek arabirimlerini nasıl kullanacağını bilecektir, ancak bir sayfa ayırma hatasını düzeltmesi veya yeni bir zamanlayıcı yazması muhtemel olmayacaktır.

Bu nedenle, belki de geliştirme listelerini veya hata izleyicileri inceleyerek sizi en çok ilgilendiren şeyleri seçin ve ne tür bir etki yapmak istediğinizi görün. Ardından, bu projeler ve çabalar üzerinde çalışarak katkıda bulunun ve deneyim oluşturun. Çekirdek ana hattındaki koda adınız/e-postanız eklendiğinde, diğer pozisyonlar için özgeçmiş/kapak mektubunda işaret edebileceğiniz deneyime sahip olacaksınız :-)

36
Joe Friedrichsen

Motorola ve diğer birkaç yüksek teknoloji şirketinde çalışan 15 yıldan fazla deneyime sahip bir yazılım geliştiricisiyim. BSCE derecem var. Yani ben amatör değilim.

Bu soru ... nasıl girileceği ... sadece Linux için değil, hemen hemen her uzmanlık alanı için ortak bir sorudur. Yazılım mühendisliği tıpkı uygulayıcıların uzmanlaşması gerektiği gibi tıp haline geldi. Ancak şirketiniz 10 yıl uzman olduktan sonra küçülüp işten çıkarıldığında, iş piyasasının değiştiğini ve güncel olmadığınızı görüyorsunuz. Şirketler eskiden bu kadar seçici olmuyordu - sık sık istek listesinde tüm becerilere sahip olan tek aday, o şirket veya doğrudan bir rakip için zaten çalışanlar! Oldukça zorlaşıyor.

Ben şimdi bu durumdayım ve zor olsa da, işe almak için kullanabileceğiniz birkaç strateji var. Ama önce, teknolojide yetkin olmanız GEREKİR çünkü işe alınırsa üretmeniz beklenir. Hazır olduğunuzda aşağıdakileri göz önünde bulundurun:

  1. Başlamak için küçük bir şirket arayın. Büyük adamlar gibi kimin işe aldıkları konusunda çok seçici olamazlar. Orada bir iki yıl geçirin ve bundan sonra kalifiye olmak için özgeçmişinizde profesyonel deneyime sahip olacaksınız.

  2. Özellikle tam zamanlı çalışmıyorsanız sözleşmeyi düşünün. Şirketler müteahhit üzerinde tam zamanlı olmaktan çok daha şanslı. Yine, özgeçmişinizi koymak için doğrulanabilir bir deneyime sahip olduğunuzda, kapılar açılır.

  3. Kendi başınıza küçük bir proje yapın ve işverenlerinize sunmak için bir portföy oluşturun. Bu sadece küçük bir şirkete değil, orta ölçekli bir şirkete de giriş yapabilir.

Yukarıdakilere ek olarak, Kforce, Aerotek, vb. Bir şirketten profesyonel bir işe alım uzmanı kullanmayı düşünün. İşveren işe alım ücretini öder ve işe alım uzmanı sizi kendi başınıza yapamayacağınız bir şekilde satmanıza yardımcı olur.

Aslında, sadece 7 aylık deneyime sahip bir "genç programcı" yeni bir şey yapmak için işe alınmaya çalışırken benim gibi bir adam üzerinde büyük bir avantaja sahiptir. Şirketler "taze çıkışlar"/"yeni mezunlar" SEVİYORUM çünkü onlar çok para istemeyeceğinizi ve gerekirse yurtdışında uzun stints de dahil olmak istediklerini yapmaya istekli olacaklarını biliyorlar. Şirketler, daha iyi bir pozisyon için ayrılmak isteyeceğimi bildiklerinden, bir tane için başvursam bile beni genç bir pozisyon için işe almayacaklar. Durumun o kadar da kötü değil.

İyi şanslar!

3
guest