Linux embedded khác gì với Linux kernel? Lộ trình phát triển cho 1 Linux kernel developer ở Việt Nam.

Linux embedded và Linux kernel là hai lĩnh vực khác nhau trong lĩnh vực phần mềm hệ thống. Để làm được về embedded Linux, chúng ta bắt buộc phải học một chút về Linux kernel vì các driver sẽ chạy ở dưới tầng này. Tuy nhiên, Linux embedded development và Linux kernel development là 2 lĩnh vực hoàn toàn khác nhau. Chúng có hệ thống kiến thức, cách phát triển riêng biệt. Và những đặc điểm đó sẽ được làm rõ qua bài viết này

Vậy những điểm khác nhau đó cụ thể là gì?

  • Linux kernel được cấu thành từ nhiều module nhỏ hơn, gọi là các subsystem. Đâu đó sẽ có khoảng 10 – 15 module, device driver là 1 trong số đó. Nhiệm vụ chính của module device driver là giao tiếp với hardware, trong khi những module còn lại sẽ có chức năng khác. Kernel có rất nhiều chức năng, quản lý vào giao tiếp với hardware chỉ là 1 trong số đó, chứ không phải là nhiệm vụ duy nhất của nó.
  • Khi học về Linux embedded, chúng ta thường chỉ học về subsystem là device driver, các subsystem khác gần như không cần phải học nhiều. Kể cả khi đi làm cũng như vậy. Ngược lại, khi làm về Linux kernel development, chúng ta sẽ phải học về tất cả các module còn lại, chứ không phải dành hết sự ưu tiên đối với phần device driver. Kernel developer không nhất thiết phải có kiến thức về hardware giống như làm về embedded.
  • Làm về Linux embedded sẽ dựa trên 2 nền tảng cơ bản là kiến thức về lập trình hardware và device driver. Còn làm về Linux kernel sẽ dựa trên 2 nền tảng là lập trình software và các subsystem của Linux kernel.

Nhìn vào những đặc điểm khác nhau của 2 ngành đã được liệt kê phía trên, có thể khẳng định đây là 2 hướng đi khác nhau về mặt kiến thức nền tảng cũng như sự phát triển về sau.

Làm thế nào để có thể trở thành một 1 Linux kernel developer ở Việt Nam?

Về mặt cơ hội việc làm thì ở Việt Nam, các công việc về Linux embedded có tương đối nhiều, tuy nhiên các công việc liên quan đến Linux kernel thì rất ít, đúng nghĩa chỉ “đếm được trên đầu ngón tay”. Bên cạnh đó, những công việc này thường yêu cầu cao về chuyên môn vì khá khó làm vì vậy khả năng apply được cho người mới còn nhiều hạn chế.
Chính vì lý do trên nên nếu muốn theo Linux kernel, những người mới bắt đầu nên làm về Linux embedded trước. Thông qua các công việc trong dự án embedded, chúng ta sẽ tích lũy được kinh nghiệm, kiến thức về hệ điều hành Linux, nhất là phần device driver. Ngoài ra, kiến thức về các phần khác vẫn có thể trau dồi dần dần thông qua công việc, miễn là luôn giữ được mong muốn học hỏi.
Mặt khác, khoảng cách công nghệ trong mảng Linux kernel giữa Việt Nam và thế giới là vô cùng xa. Nếu chỉ làm cho các công ty Việt Nam thì về lâu dài sẽ hạn chế cơ hội phát triển. Do vậy bắt buộc phải học tiếng Anh và tìm kiếm cơ hội làm việc cho các công ty nước ngoài, các công ty đa quốc gia, thường sẽ là làm việc online từ xa hoặc sống và làm việc trực tiếp tại nước ngoài.

Đặc biệt, cần phải xác định rằng lộ trình của 1 Linux kernel developer ở Việt Nam về cơ bản sẽ gian nan hơn nhiều so với các nước phát triển. Do đặc thù về môi trường, cơ hội nghề nghiệp. Vậy nên trước khi quyết định theo nghề này, các bạn cần phải tự trả lời 1 số câu hỏi như sau:

  • Khoảng thời gian từ lúc bắt đầu “gieo hạt” đến khi “hái được quả ngọt” có thể rất dài, ít nhất cũng phải 7 – 10 năm. Liệu niềm đam mê của bản thân có đủ để khiến bạn có kiên trì được đến lúc đó hay không?
  • Nếu sử dụng nguyên tắc P/P (Price-Performance) để so sánh việc theo Linux kernel với các lĩnh vực khác của lập trình thì chắc chắn nếu ở Việt Nam, cái giá phải trả so với những gì thu được sẽ lớn hơn đáng kể các lĩnh vực lập trình phổ biến khác. Vậy nên lĩnh vực này không phải là một món gì đó “hời”. Bạn sẽ vẫn lựa chọn nó khi đã hiểu rõ vấn đề này chứ?
  • Tại sao bạn lại muốn làm về Linux kernel, nó có điểm gì khiến bạn cảm thấy thu hút?

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top