it-swarm-id.com

Bagaimana cara menjadi programmer driver Kernel / Sistem / Perangkat?

Saat ini saya bekerja dalam kapasitas profesional sebagai insinyur perangkat lunak yang bekerja dengan OS Android. Kami bekerja mengintegrasikan platform kami sebagai daemon asli di antara aspek-aspek lain dari proyek ini. Saya terutama bekerja di Java mengembangkan SDK dan Android aplikasi, tetapi dapatkan bantuan dengan platform di C/C++).

Bagaimanapun, saya memiliki minat yang besar untuk bekerja secara profesional mengembangkan tingkat rendah untuk linux. Saya tidak bahagia dengan posisi saya saat ini dan akan bertahan selama perusahaan mengizinkan saya (sebenarnya saya cukup menikmati bekerja di sana!), Tetapi saya ingin bekerja dengan cara itu ke arah saya. Saya telah bekerja melalui Pengembangan Kernel Linux (Robert Love) dan Antarmuka Pemrograman Linux (Michael Kerrisk) (Selain memperkuat keterampilan C saya di setiap kesempatan yang saya dapatkan) dan dengan santai menelusuri Monster dan situs sejenis.

Masalah yang saya lihat adalah, tidak ada posisi level entri. Bagaimana cara seseorang masuk ke bidang ini? Setiap kali saya melihat "Linux Systems Programmer" atau "Linux Device Driver Programmer" mereka semua membutuhkan minimal 5-7 tahun pengalaman yang relevan. Mereka menginginkan seseorang yang tahu seluk beluk, bukan programmer tingkat junior (saya sudah bekerja selama 7 bulan sekarang ...).

Jadi, saya berasumsi, bahwa beberapa dari Anda di stackoverflow bekerja dalam kapasitas profesional melakukan apa yang ingin saya lakukan. Bagaimana Anda sampai di sana? Platform apa yang Anda gunakan untuk bekerja di sana? Apakah saya akan memiliki waktu yang lebih sulit karena saya memiliki bujangan di CSC sebagai lawan dari insinyur komputer (di mana mereka akan mengalami sedikit lebih tertanam, asm, dll)?

EDIT UNTUK KLARIFIKASI! Saya mengetahui sifat opensource dari kernel/driver linux dll. Saya berencana untuk berkontribusi di mana pun pekerjaan saya. Saya lebih ingin tahu jenis posisi entry level apa yang memungkinkan saya melakukan pekerjaan yang relevan dan mendapatkan bayaran dengan melakukannya! Terima kasih untuk semua balasan sejauh ini!

40
accordionfolder

Saya menulis driver perangkat Linux untuk perusahaan saya, dan saya masuk ke posisi ini dengan mengetahui paling banyak tentang pengembangan Linux di departemen saya dan mereka mempromosikan/merekrut saya ke peran baru. Itu sangat entri gaya tingkat junior, sehingga mereka ada dan tidak kehilangan harapan!

Nasihat langsung saya untuk Anda adalah untuk melihat apakah Anda dapat mempersempit fokus Anda. Pemrograman kernel sangat berbeda dari pemrograman sistem sangat berbeda dari pemrograman driver perangkat.

  1. Pengembang kernel fokus pada antarmuka, struktur data, algoritma, dan optimisasi untuk inti sistem operasi.
  2. Pemrogram sistem menulis daemon, utilitas, dan alat-alat lain untuk mengotomatisasi tugas-tugas umum atau sulit.
  3. Driver perangkat menggunakan antarmuka dan struktur data yang ditulis oleh pengembang kernel untuk mengimplementasikan kontrol perangkat dan IO.

Seorang programmer kernel yang sangat baik mungkin tidak tahu banyak tentang interupsi latensi dan determinisme perangkat keras, tetapi dia akan tahu banyak tentang cara kerja kunci, antrian, dan Kobjects. Seorang programmer driver perangkat akan tahu cara menggunakan kunci, antrian, dan antarmuka kernel lainnya untuk membuat perangkat keras mereka bekerja dengan baik dan responsif, tetapi ia tidak akan mungkin memperbaiki bug alokasi halaman atau menulis penjadwal baru.

Jadi, pilih minat apa yang paling Anda minati, mungkin dengan mensurvei daftar pengembangan atau pelacak bug, dan lihat dampak apa yang ingin Anda buat. Kemudian, berkontribusi dan bangun pengalaman dengan mengerjakan proyek dan upaya tersebut. Ketika nama/email Anda dilampirkan ke kode di kernel utama, maka Anda akan memiliki pengalaman yang bisa Anda tunjukkan dalam resume/surat pengantar Anda untuk posisi lain :-)

36
Joe Friedrichsen

Saya seorang pengembang perangkat lunak dengan 15+ tahun pengalaman bekerja di Motorola dan beberapa perusahaan teknologi tinggi lainnya. Saya memiliki gelar BSCE. Jadi saya bukan amatir.

Pertanyaan ini ... bagaimana menerobos ... adalah yang umum tidak hanya untuk Linux tetapi untuk hampir semua bidang spesialisasi. Rekayasa perangkat lunak telah menjadi seperti obat di mana praktisi harus berspesialisasi. Tetapi ketika perusahaan Anda menurunkan dan memulangkan Anda setelah 10 tahun menjadi spesialis, Anda menemukan pasar kerja telah berubah dan Anda tidak mutakhir. Perusahaan yang dulunya tidak begitu selektif - seringkali sekarang satu-satunya kandidat yang memiliki semua keterampilan dalam daftar harapan adalah mereka yang sudah bekerja untuk perusahaan itu atau pesaing langsung! Ini menjadi sangat sulit.

Saya berada dalam situasi ini sekarang dan walaupun ini sulit, ada beberapa strategi yang dapat Anda gunakan untuk diterima. Tapi pertama-tama, Anda HARUS menjadi ahli dalam teknologi karena jika disewa, Anda akan diharapkan untuk menghasilkan. Setelah Anda merasa siap, pertimbangkan hal berikut:

  1. Carilah perusahaan kecil untuk memulai. Mereka tidak bisa pilih-pilih tentang siapa yang mereka pekerjakan seperti halnya orang-orang besar. Luangkan satu atau dua tahun di sana dan setelah itu, Anda akan memiliki pengalaman profesional di resume untuk memenuhi syarat.

  2. Pertimbangkan kontrak, terutama jika Anda tidak bekerja penuh waktu. Perusahaan jauh lebih bersedia untuk mengambil kesempatan pada kontraktor daripada purna waktu. Sekali lagi, setelah Anda memiliki pengalaman yang dapat diverifikasi untuk memasukkan resume Anda, itu membuka pintu.

  3. Lakukan satu atau dua proyek sendiri dan buat portofolio untuk dipresentasikan kepada calon pemberi kerja. Ini dapat membuka pintu untuk memasuki tidak hanya perusahaan kecil tetapi juga perusahaan menengah.

Selain hal di atas, pertimbangkan untuk menggunakan perekrut profesional dari perusahaan seperti Kforce, Aerotek, dll. Majikan membayar biaya perekrutan dan perekrut akan membantu menjual Anda dengan cara yang tidak dapat Anda lakukan sendiri.

Sebenarnya, seorang "programmer junior" dengan pengalaman hanya 7 bulan memiliki keuntungan besar dibandingkan dengan orang seperti saya ketika mencoba untuk dipekerjakan untuk melakukan sesuatu yang baru. Perusahaan CINTA "fresh-out"/"lulusan baru" karena mereka tahu Anda tidak akan meminta banyak uang dan akan bersedia melakukan APA PUN MEREKA MEMINTA termasuk tugas panjang di luar negeri jika diperlukan. Perusahaan tidak akan mempekerjakan saya untuk posisi junior bahkan jika saya melamar untuk posisi itu karena mereka tahu saya akan segera mencari yang lebih baik. Situasi Anda tidak seburuk itu.

Semoga berhasil!

3
guest