it-swarm-vi.com

Làm thế nào để trở thành lập trình viên trình điều khiển Kernel / Systems / Device?

Tôi hiện đang làm việc với tư cách là một kỹ sư phần mềm làm việc với hệ điều hành Android. Chúng tôi làm 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 giữa 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 SDK và Android, nhưng hãy 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ể 5-7 năm kinh nghiệm có 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. Bạn đến đó bằng cách nào? 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.)?

EDIT FOR CLARIFICATION! 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!

40
accordionfolder

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 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 xác đị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 để phần cứng của chúng hoạt động tốt và phản hồi nhanh, 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 :-)

36
Joe Friedrichsen

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 quá chọn lọc - 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 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 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!

3
guest