Chia sẻ về lộ trình nghề nghiệp của mình.

Trong số các câu hỏi gửi về buổi live stream lần trước thì có khá nhiều bạn thắc mắc về lộ trình và cách mà mình tiếp cận với lĩnh vực Linux kernel như thế nào. Về cơ bản thì cách mình tiếp cận với Linux kernel trong giai đoạn đầu rất không hiệu quả. Bài viết này sẽ phần nào lý giải những thắc mắc của mọi người.

Mình yêu thích tìm hiểu về máy tính từ nhỏ nhưng do gia đình có truyền thống làm về xây dựng. Do vậy hết cấp 3, mình thi vào đại học Thủy Lợi, chuyên ngành Công trình. Sau đó, mình tốt nghiệp ra trường và đi làm về xây dựng. Thực ra ngay từ khi tốt nghiệp mình đã dự định là sẽ vừa đi làm vừa học tiếp về công nghệ thông tin (CNTT). Tuy nhiên, do nhiều yếu tố nên mình không đi học lại luôn mà phải đợi đến 2 năm sau, khi cuộc sống bế tắc nhất thì mình mới quyết định đi học lại. Tại thời điểm đó, mình đặc biệt thích học về hệ điều hành và code các chương trình chạy ẩn dưới hệ thống. Phải chia sẻ thật, khi ấy mình cũng chưa biết là sau này ra trường sẽ làm gì với sở thích đó, vì mình học CNTT nên không biết về embedded. Mình học văn bằng hai tại trường đại học Bách Khoa.

Sau khi trải qua học kỳ 1 ở Bách Khoa, mình xin bảng điểm có dấu của khoa rồi đi xin việc.


Vì chưa có bằng cũng như kinh nghiệm làm việc nên mình rải CV nhiều nơi nhưng đều bị loại từ vòng hồ sơ. Mình thừa nhận rằng đây là một sai lầm của mình. Thay vào đó mình nên nộp hồ sơ xin thực tập thì sẽ dễ hơn nhưng mình lại không biết. Một thời gian khá lâu sau, có 1 công ty làm về embedded và 1 công ty làm về game nhận CV và cho mình cơ hội phỏng vấn.

Tuy nhiên, mình đã trượt phỏng vấn bên embedded vì mình không biết tý gì về lập trình vi điều khiển do mình học ngành CNTT. Thật may, phía công ty lập trình game họ hỏi về giải thuật nên mình đã đỗ phỏng vấn và làm trong vị trí thực tập.

Do bài test lập trình C của mình ở công ty embedded có điểm tương đối cao nên về sau họ gọi lại phỏng vấn ở 1 dự án làm về app. Dự án về app kia dùng ngôn ngữ C/C++, họ hỏi mình khá nhiều về giải thuật và mình trả lời tốt nên lần này may mắn đã mỉm cười với mình, mình qua vòng phỏng vấn. Mặc dù đi làm với mức lương thấp nhưng cảm giác xin được việc làm đúng chuyên ngành trong lúc cuộc sống đang bế tắc công nhận là sướng thật. Mãi cho đến sau này mặc dù trải qua rất nhiều sự kiện khác nhưng chưa bao giờ mình có được cảm giác vui sướng như ngày hôm đó.

Nói tiếp về dự án app, họ làm về 1 driver trên MacOS tương tự như character driver. Có thể tạm hiểu là code driver chạy dưới kernel nhưng không điều khiển gì về hardware cả. Do sở thích tìm hiểu về nhân của hệ điều hành nên mình cảm thấy rất thích công việc trong dự án. Tuy nhiên, do nguyên nhân khách quan lẫn chủ quan nên mình luôn bị đánh giá performance thấp. Mình nhận mức lương của fresher trong suốt 2 năm làm việc. Sau 2 năm do nản vì lương thấp quá nên mình xin nghỉ. MacOS kernel mặc dù có nguyên lý khá giống với Linux vì các phiên bản đầu nó sử dụng 1 phần nhân của Linux. Tuy nhiên, nó là hệ điều hành closed source và hệ thống tài liệu không có sự phong phú nên mình đánh giá 2 năm đó mình cũng không học được gì nhiều. Chủ yếu là kỹ năng lập trình C.

Sau khi nghỉ việc, mình cũng không biết nên làm tiếp công việc gì. Đây thật sự là quãng thời gian khá mông lung trong cuộc đời mình. Mình thích OS kernel nhưng dự án về embedded thì không phỏng vấn được vì không biết về vi điều khiển. Làm về app thì mình không thích lắm.

Một thời gian sau, mình xin vào công ty game. Làm được vài tháng thì thầy giáo mình giới thiệu cho mình vào 1 công ty làm các thiết bị về network sử dụng Linux. Bên này thì do công ty làm sản phẩm chính là các thiết bị embedded Linux, môi trường có nhiều người giỏi và biết về Linux nên mình học hỏi được nhiều. Tối về nhà mình đọc cuốn Understanding the Linux kernel. Mặc dù trên mạng mọi người nói đây là 1 trong số các cuốn sách hay nhất về Linux kernel nhưng thật sự mà nói, đây không phải là cuốn sách dành cho người mới. Quyển này kiến thức rất nâng cao lại hoàn toàn không có bài thực hành nên đọc rất khó hiểu. Mỗi ngày mình đọc tầm 2 – 3 tiếng cũng chỉ hiểu được vài trang. Mất gần 1 năm mới đọc xong. Đọc khoảng nửa năm mà vẫn chưa hiểu gì nhưng khi đọc được khoảng 70% quyển sách thì cảm giác mọi thứ được xâu chuỗi lại với nhau. Từ đấy mình quay lại suy nghĩ để liên kết giữa công việc mình làm hằng ngày với lý thuyết mà mình đã học.

Làm ở công ty về network được hơn 1 năm thì mình lại lần nữa xin nghỉ do mình không thích tìm hiểu về network lắm. Mình chỉ thích làm sâu về kernel. Tuy nhiên, lúc này mình bị mất phương hướng về nghề nghiệp do cảm thấy nếu chỉ làm về Linux kernel thì sẽ không có tương lai do ở Việt Nam có ít công ty làm về mảng này. Cho đến thời điểm hiện tại, ngẫm lại mình thấy đúng thật! Ở Việt Nam chỉ có công việc về embedded Linux. Mình của thời gian đó chỉ biết về Linux kernel mà không biết lập trình MCU thì chẳng phù hợp với công ty nào cả. Sau đó, mình sang 1 công ty về embedded Linux khác với mức lương thấp hơn. Bên này họ làm về Linux BSP. Mình chỉ biết về kernel còn về hardware thì mù tịt, tuy nhiên họ vẫn nhận và tạo điều kiện cho mình học thêm về hardware sau.

Làm ở công ty mới thì vui hơn vì bên đó mọi người đang làm về MCU và có nhiều người muốn học về Linux kernel để chuyển sang làm embedded Linux. Mình thì biết về Linux kernel nhưng lại không tìm hiểu sâu về MCU nên đi làm hay được mọi người giúp đỡ. Có lẽ do từ hồi bắt đầu đi làm toàn làm về lĩnh vực không ai biết nên mình thấy khá cô đơn, thành ra lúc nào cũng muốn chia sẻ kiến thức với người khác. Đồng nghiệp trong công ty lại thích học về Linux. Vậy là mình mở lớp ở nhà để dạy Linux kernel cho mấy bạn trong công ty, tất nhiên là miễn phí. Thời gian ở đây mình đã tìm được hướng đi lâu dài cho mình đó là embedded Linux (Linux BSP). Thấy được embedded Linux có muôn vàn ứng dụng trong cuộc sống nên không sợ thất nghiệp nữa

Mở lớp dạy ở nhà được mấy tuần thì mọi người bảo nên tạo 1 nhóm facebook để trao đổi chém gió cho tiện. Vậy là cộng đồng “Cùng nhau học Linux kernel” được thành lập. Hồi đó định chỉ làm nhóm kín để mấy anh em “chém gió” với nhau nên đặt cái tên cũng không suy nghĩ nhiều thành ra hơi bị sến 1 tý. Sau vài tháng, mấy anh em trong cộng đồng bảo là lĩnh vực này học khó quá mà ở Việt Nam lại chưa có cộng đồng nào chia sẻ kiến thức cho nhau. Vậy là mình chuyển chế độ sang công khai. Nhóm được thành lập vào năm 2018. Từ hồi tạo nhóm, có nhiều bạn biết đến mình hơn và nhắn tin hỏi mình nhiều thứ về Linux kernel. Kiến thức nó là 1 thứ đặc biệt, cho đi tức là nhận lại. Do vậy, nhờ hỗ trợ mọi người cũng làm mình tiến bộ rất nhanh. Kiến thức tích lũy trong khoảng 3 năm gần đây phải gấp nhiều lần những năm trước đó cộng lại. Kinh nghiệm của mình cũng không bị bó hẹp trong phạm vi dự án mình đang làm nữa.

Khoảng 2 năm gần đây thì ngoài công việc chính là lập trình trên công ty thì mình có thêm nghề đi dạy ở ngoài. Mình dạy vào cuối tuần, có khi mình tự mở lớp cũng có khi mình dạy cho 1 dự án ở công ty khác. Nếu vẫn bố trí được thời gian thì mình làm tư vấn cho dự án bên ngoài về embedded Linux.

Hiện tại ngoài tiền bạc thì nghề này còn cho mình cơ hội được giúp đỡ và quen biết nhiều người. Nó cho mình cảm giác được tự do theo đuổi đam mê và làm việc theo sở thích, được trải nghiệm nhiều thứ mới mẻ và hay ho. Nói chung khá là hạnh phúc.

Đến đây các bạn có thể thấy cách mình tiếp cận với Linux kernel là không hiệu quả, nó khiến cho mình phải đi lòng vòng và đổ nhiều công sức vô ích. Mất khoảng hơn 3 năm mình mới tìm ra được hướng đi phù hợp đó là embedded Linux, từ đó mới yên tâm để dồn toàn sức vào nghiên cứu.

Vậy nên, con đường ngắn nhất mà hiện tại mình đang định hướng cho học viên đó là:

  • Học tốt lập trình C và MCU ngay trên giảng đường đại học.
  • Cài đặt hệ điều hành Ubuntu, mua board về và thực hành viết driver đơn giản trên đó.
  • Học về nguyên lý hệ điều hành Linux, Linux kernel, Linux driver.
  • Xin đi thực tập sớm (tầm năm 3 hoặc 4).
  • Học tiếng anh – tất nhiên rồi.

Theo góc độ cá nhân, mình cho rằng 5 bước trên đây có lẽ là con đường dễ đi nhất dành cho người mới. Cảm ơn các bạn đã lắng nghe chia sẻ của mình.

Leave a Comment

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

Scroll to Top