Làm thế nào để trở thành lập trình viên trình điều khiển Kernel / Systems / Device? [đóng cửa]


40

Tôi hiện đang làm việc trong một năng lực chuyên nghiệp như một kỹ sư phần mềm làm việc với HĐH Android. Chúng tôi làm việc trong việc tích hợp nền tảng của chúng tôi như một trình nền riêng trong số các khía cạnh khác của dự án. Tôi chủ yếu làm việc trong Java để phát triển các ứng dụng SDK và Android, nhưng phải giúp đỡ với nền tảng trong C / C ++.

Dù sao, tôi rất thích làm việc chuyên nghiệp để phát triển trình độ thấp cho linux. Tôi không hài lòng ở vị trí hiện tại của mình và sẽ quanh quẩn miễn là công ty cho phép tôi (vì thực tế tôi khá thích làm việc ở đó!), Nhưng tôi muốn làm việc theo hướng đó. Tôi đã làm việc thông qua Linux Kernel Development (Robert Love) và Giao diện lập trình Linux (Michael Kerrisk) (Ngoài việc củng cố các kỹ năng C của tôi ở mọi cơ hội tôi có được) và tình cờ duyệt Monster và các trang web tương tự.

Vấn đề tôi thấy là, không có vị trí cấp nhập cảnh. Làm thế nào để một người đột nhập vào lĩnh vực này? Bất cứ khi nào tôi thấy "Lập trình viên hệ thống Linux" hoặc "Lập trình viên trình điều khiển thiết bị Linux", tất cả họ đều yêu cầu tối thiểu 5 - 7 năm kinh nghiệm liên quan. Họ muốn ai đó biết dây thừng, không phải lập trình viên cấp cơ sở (Tôi đã làm việc được 7 tháng rồi ...).

Vì vậy, tôi giả sử rằng một số bạn trong stackoverflow hoạt động trong khả năng chuyên nghiệp làm đúng những gì tôi muốn làm. Làm sao bạn đến đó được? Những nền tảng nào bạn đã sử dụng để làm việc theo cách của bạn ở đó? Tôi sẽ có một thời gian khó khăn hơn bởi vì tôi có bằng cử nhân trong CSC trái ngược với một kỹ sư máy tính (nơi họ sẽ trải nghiệm thêm một chút nhúng, asm, v.v.)?

CHỈNH SỬA ĐỂ XÁC NHẬN! Tôi nhận thức được bản chất mã nguồn mở của kernel / trình điều khiển linux, v.v. Tôi dự định đóng góp bất kể công việc hàng ngày của tôi ở đâu. Tôi tò mò hơn về những loại vị trí cấp nhập cảnh sẽ cho phép tôi làm công việc liên quan và được trả tiền khi làm việc đó! Cảm ơn tất cả các câu trả lời cho đến nay!


6
Rất đơn giản. Linux là nguồn mở. Chỉ cần theo dõi danh sách phát triển, sửa một số lỗi, sau khi bạn biết nội dung của mình, bắt đầu có thể viết nội dung lớn hơn như tính năng mới, tối ưu hóa, có thể một số trình điều khiển ...
Let_Me_Be

2
Nhưng trước khi chọn bất kỳ lĩnh vực nào trong Linux, bạn nên có sự hiểu biết về hoạt động của Linux và một số công việc. Hãy nói rằng bạn phải có kiến ​​thức về hệ thống tệp Linux, v.v.
user29973

Câu trả lời:


36

Tôi viết trình điều khiển thiết bị Linux cho công ty của mình và tôi đã vào vị trí này bằng cách biết nhiều nhất về sự phát triển của Linux trong bộ phận của tôi và họ đã thúc đẩy / thuê tôi vào một vai trò mới. Đó là rất nhiều một phong cách cấp cơ sở, vì vậy họ tồn tại và không mất hy vọng!

Lời khuyên ngay lập tức của tôi dành cho bạn là hãy xem liệu bạn có thể thu hẹp sự tập trung của mình không. Lập trình kernel rất khác với lập trình hệ thống rất khác với lập trình trình điều khiển thiết bị.

  1. Các nhà phát triển hạt nhân tập trung vào giao diện, cấu trúc dữ liệu, thuật toán và tối ưu hóa cho lõi của hệ điều hành.
  2. Các lập trình viên hệ thống viết trình nền, tiện ích và các công cụ khác để tự động hóa các tác vụ phổ biến hoặc khó khăn.
  3. Trình điều khiển thiết bị sử dụng các giao diện và cấu trúc dữ liệu được viết bởi các nhà phát triển kernel để thực hiện điều khiển thiết bị và IO.

Một lập trình viên hạt nhân rất giỏi có thể không biết nhiều về độ trễ ngắt và tính quyết định phần cứng, nhưng cô ấy sẽ biết rất nhiều về cách khóa, hàng đợi và Kobjects hoạt động. Một lập trình viên trình điều khiển thiết bị sẽ biết cách sử dụng các khóa, hàng đợi và các giao diện kernel khác để làm cho phần cứng của họ hoạt động đúng và đáp ứng, nhưng anh ta sẽ không có khả năng sửa lỗi phân bổ trang hoặc viết lịch trình mới.

Vì vậy, hãy chọn những gì bạn quan tâm nhất, có lẽ bằng cách khảo sát danh sách phát triển hoặc trình theo dõi lỗi và xem loại tác động nào bạn muốn thực hiện. Sau đó, đóng góp và xây dựng kinh nghiệm bằng cách làm việc trên các dự án và nỗ lực đó. Khi tên / email của bạn được gắn vào mã trong dòng chính kernel, thì bạn sẽ có kinh nghiệm bạn có thể chỉ ra trong sơ yếu lý lịch / thư xin việc của mình cho các vị trí khác :-)


3
Thú vị, nhưng có lẽ không phải là một viên đạn ma thuật.
Matt Joiner

7
Đạn ma thuật hiếm khi tồn tại.
Ed S.

Cảm ơn về thông tin bạn vừa nhập! Tôi sẽ làm việc để thu hẹp sự tập trung của mình (cuối cùng tôi muốn có một sự hiểu biết về tất cả các khía cạnh) cho đến bây giờ. Trong khả năng nào (nếu bạn đang rảnh để tiết lộ) bạn đã làm việc trước khi trở thành "người đi" cho các tài xế?
accordionfolder

4
Dù bạn có tin hay không, nhưng tôi đã hỗ trợ kỹ thuật cho khách hàng sử dụng phần cứng và bán hàng đang cố gắng hiểu nó: Tôi đã trả lời email và các cuộc gọi điện thoại. Nhưng kinh nghiệm phụ của tôi về phát triển kernel và đất người dùng cho Linux đã giúp tôi nhiều hơn.
Joe Friedrichsen

3

Tôi là một nhà phát triển phần mềm với hơn 15 năm kinh nghiệm làm việc tại Motorola và một vài công ty công nghệ cao khác. Tôi có bằng BSCE. Vì vậy, tôi không phải là một người nghiệp dư.

Câu hỏi này ... làm thế nào để xâm nhập ... là một câu hỏi phổ biến không chỉ đối với Linux mà còn đối với hầu hết mọi lĩnh vực chuyên môn. Kỹ thuật phần mềm đã trở nên giống như y học trong đó các học viên phải chuyên môn hóa. Nhưng khi công ty của bạn thu hẹp và cho bạn nghỉ việc sau 10 năm làm chuyên gia, bạn thấy thị trường việc làm đã thay đổi và bạn không hiện tại. Các công ty trước đây không được chọn lọc như vậy - thường thì ứng viên duy nhất có tất cả các kỹ năng trong danh sách mong muốn là những người đã làm việc cho công ty đó hoặc một đối thủ cạnh tranh trực tiếp! Nó trở nên khá khó khăn.

Bây giờ tôi đang ở trong tình huống này và trong khi khó khăn, có một vài chiến lược bạn có thể sử dụng để được tuyển dụng. Nhưng trước tiên, bạn PHẢI thành thạo công nghệ vì nếu được thuê, bạn sẽ được sản xuất. Một khi bạn cảm thấy sẵn sàng, hãy xem xét những điều sau đây:

  1. Hãy tìm một công ty nhỏ để bắt đầu. Họ không thể quá kén chọn về những người họ thuê như những ông lớn. Dành một hoặc hai năm ở đó và sau đó, bạn sẽ có kinh nghiệm chuyên môn về sơ yếu lý lịch để đủ điều kiện.

  2. Cân nhắc ký hợp đồng, đặc biệt nếu bạn không làm việc toàn thời gian. Các công ty sẵn sàng nắm lấy cơ hội của một nhà thầu hơn là toàn thời gian. Một lần nữa, một khi bạn có kinh nghiệm kiểm chứng để đưa vào sơ yếu lý lịch của bạn, nó sẽ mở ra cánh cửa.

  3. Tự làm một hoặc hai dự án và tạo một danh mục đầu tư để trình bày cho các nhà tuyển dụng tiềm năng. Điều này có thể mở ra cánh cửa để vào không chỉ một công ty nhỏ mà cả một công ty vừa.

Ngoài những điều trên, hãy cân nhắc sử dụng một nhà tuyển dụng chuyên nghiệp từ một công ty như Kforce, Aerotek, v.v ... Nhà tuyển dụng trả phí tuyển dụng và nhà tuyển dụng sẽ giúp bạn bán hàng theo cách mà bạn không thể tự làm.

Thật ra, một "lập trình viên cơ sở" chỉ với 7 tháng kinh nghiệm có lợi thế rất lớn so với một người như tôi khi cố gắng được thuê để làm điều gì đó mới. Các công ty YÊU "người mới ra trường" / "học sinh mới" vì họ biết rằng bạn sẽ không đòi hỏi nhiều tiền và sẽ sẵn sàng làm BẤT K AS NHƯ THẾ NÀO, kể cả những công việc dài ở nước ngoài nếu được yêu cầu. Các công ty sẽ không thuê tôi cho một vị trí cấp dưới ngay cả khi tôi đã ứng tuyển vào một vị trí vì họ biết rằng tôi sẽ tìm cách để có một vị trí tốt hơn. Tình hình của bạn không tệ đến thế.

Chúc may mắn!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.