Nếu bạn đã quen viết C và đang tò mò về công nghệ automotive và AUTOSAR, thì nên biết trước một điều: đây là ngành rất đáng thử, nhưng cách làm việc hoàn toàn khác với web hay mobile. Chúng tôi đã tham gia không ít dự án embedded cho xe, và bài này gom lại 10 kinh nghiệm rút ra từ chính những lần vấp ngã lẫn những lần làm được việc. Với mỗi điều, chúng tôi sẽ nói rõ lý do, cách áp dụng và cả hạn chế có thật.
Vì sao dev phần mềm đang nhìn về ngành ô tô
Một chiếc xe đời mới về bản chất là một hệ thống máy tính đặt trên bánh xe. Bên trong có hàng chục đến hàng trăm ECU, tức bộ điều khiển điện tử. Mỗi ECU chạy một phần phần mềm riêng, phụ trách phanh, động cơ, đèn, cửa hay hỗ trợ lái. Xe càng thông minh thì nhu cầu về người viết phần mềm càng lớn.
Ở Việt Nam, nhu cầu nhân lực embedded và automotive đang tăng dần. Tuy vậy, rào cản đầu vào không thấp. Bạn không chỉ cần giỏi C, mà còn phải làm quen với các chuẩn, quy trình và cách nghĩ rất khác về an toàn. Bài này dành cho những ai đã có nền lập trình và muốn hiểu thực tế ngành trước khi quyết định bước vào.
Chúng tôi chọn 10 kinh nghiệm này như thế nào
Chúng tôi không muốn đưa ra lý thuyết chung chung. Mỗi điều trong danh sách đều là thứ lặp đi lặp lại trong quy trình dự án thực tế. Với từng kinh nghiệm, chúng tôi ghi rõ nó phù hợp với ai và có những giới hạn gì.
Những điểm chưa đủ dữ liệu để khẳng định sẽ được ghi chú là cần kiểm chứng thêm. Chúng tôi không muốn tô hồng ngành này, vì người đọc cần một bức tranh đúng hơn là một lời mời chào.
Kinh nghiệm 1 đến 3: nền tảng kiến trúc phần mềm ô tô
Điều đầu tiên bạn cần nắm là AUTOSAR, tiêu chuẩn kiến trúc phần mềm cho ô tô. Tiêu chuẩn này có hai nhánh chính. Classic dành cho các ECU chạy thời gian thực với tài nguyên hạn chế. Adaptive dành cho bộ xử lý mạnh hơn, xử lý khối lượng dữ liệu lớn như hỗ trợ lái nâng cao. Hiểu được khác biệt này giúp bạn biết mình sẽ làm việc với loại ECU nào.
Kinh nghiệm thứ hai là tách biệt lớp Basic Software (BSW) và RTE khỏi phần ứng dụng. Phần logic bạn viết không được gọi thẳng xuống phần cứng. Mọi tương tác phải đi qua một lớp trung gian. Nhờ vậy, cùng một ứng dụng có thể chạy trên nhiều dòng vi điều khiển khác nhau. Lúc mới làm, nhiều người thấy điều này khá phiền. Nhưng về sau, chính nó là lý do dự án sống được lâu và dễ bảo trì.
Kinh nghiệm thứ ba hơi khó chịu một chút: tài liệu chính thức của AUTOSAR rất dày. Đội ngũ chúng tôi từng chứng kiến nhiều bạn mới đọc lần đầu và bị ngợp ngay. Đây là hạn chế có thật. Cách tiếp cận hợp lý là đọc tổng quan trước, sau đó mới đi sâu vào từng module khi có nhu cầu thực tế.
Kinh nghiệm 4 đến 6: quy trình phát triển và tuân thủ chuẩn
Trong dự án ô tô, quy trình gần như quan trọng ngang với chính đoạn code. Mô hình V-model là khung phổ biến nhất. Nhánh bên trái là đặc tả, đi từ yêu cầu xuống thiết kế. Nhánh bên phải là kiểm thử đối ứng, đi từ đơn vị lên tích hợp rồi đến hệ thống. Mỗi bước bên trái đều có một bước kiểm thử tương ứng bên phải.
ASPICE là bộ tiêu chuẩn đánh giá năng lực quy trình mà nhiều đối tác lớn yêu cầu. Khi đi làm, bạn sẽ thấy phần lớn công việc giấy tờ và truy vết yêu cầu nằm ở đây. Nếu coi nhẹ, dự án có thể trượt đánh giá dù code chạy rất ổn.
Lập trình theo MISRA C là bộ quy tắc viết C an toàn. Người mới thường vi phạm nhiều nhất ở các quy tắc liên quan đến con trỏ, ép kiểu ngầm và phạm vi biến. Công cụ kiểm tra tĩnh sẽ đưa ra rất nhiều cảnh báo, và một số trong đó khó hiểu lúc đầu. Đây là phần tốn công, nhưng nó bắt được những lỗi mà mắt người khó phát hiện. Đội ngũ chúng tôi đã nhiều lần nhờ công cụ này phát hiện lỗi trước khi lên bản build chính thức.
Kinh nghiệm 7 và 8: công cụ và môi trường kiểm thử
Không phải lúc nào cũng có xe thật để thử nghiệm. HIL (Hardware-in-the-Loop) cho phép chạy ECU thật cùng một mô phỏng môi trường điện. SIL (Software-in-the-Loop) thì chạy hoàn toàn trên máy tính. Hai kỹ thuật này giúp bạn kiểm thử sớm, trước khi phần cứng sẵn sàng. Theo kinh nghiệm của chúng tôi, phát hiện lỗi ở giai đoạn SIL tốn ít chi phí hơn rất nhiều so với phát hiện khi đã lắp lên xe.
Kinh nghiệm thứ tám là debug ECU bằng công cụ nạp và trace. Bạn cần hiểu cơ bản về CAN và LIN, hai giao thức truyền dữ liệu giữa các ECU. Có thể hình dung CAN như một đường truyền chung mà nhiều ECU cùng nói chuyện. Không hiểu CAN thì rất khó biết vì sao tín hiệu bị trễ hoặc mất gói.
Hạn chế ở đây là chi phí. Công cụ bản quyền cho HIL và trace không rẻ, và giá cụ thể thay đổi theo nhà cung cấp cùng cấu hình. Bạn nên tự kiểm chứng giá trước khi đầu tư, đừng tin những con số chung chung.
Kinh nghiệm 9 và 10: làm việc và phát triển nghề nghiệp
Môi trường automotive khác phần mềm thuần khá nhiều. Bạn sẽ phối hợp với nhóm cơ khí, nhóm điện và các đối tác Tier-1, tức những nhà cung cấp linh kiện lớn cho hãng xe. Cách họp, cách ghi chép và cách chấp nhận thay đổi đều chậm và cẩn thận hơn. Nếu bạn quen tốc độ ra sản phẩm của web, lúc đầu sẽ thấy sốt ruột. Nhưng đây chính là cách ngành này giữ được an toàn.
Về lộ trình học, thực tế thường đi theo thứ tự sau: nắm vững C và hệ thống nhúng, học CAN cùng một vi điều khiển thật, rồi mới đến AUTOSAR và các chứng chỉ phổ biến. Chúng tôi khuyên đừng nhảy thẳng vào chứng chỉ khi tay nghề thực hành còn yếu.
Một hạn chế cần ghi nhớ là chu kỳ dự án rất dài. Một tính năng có thể mất vài năm từ lúc đặc tả đến khi lên xe. Phản hồi cũng chậm hơn web hay mobile, nên bạn cần đủ kiên nhẫn.
Dev web hay mobile khác gì so với dev automotive
Khác biệt lớn nhất nằm ở chu kỳ phát hành và chi phí của sai sót. Lỗi trên web có thể sửa trong vài giờ. Lỗi trên xe có thể dẫn đến triệu hồi, một khoản chi phí rất lớn cho hãng. Vì thế, các yêu cầu an toàn theo ISO 26262 nghiêm ngặt hơn nhiều.
Về ngôn ngữ, web thường dùng JavaScript, Kotlin hay Swift, còn automotive chủ yếu dùng C và C++. Về yêu cầu an toàn, web ở mức thấp, còn automotive ở mức rất cao. Chu kỳ phát hành của web tính bằng tuần, còn automotive có thể kéo dài nhiều năm tùy dự án.
Lộ trình thực tế nếu bạn muốn chuyển sang automotive
Bước đầu tiên là làm chắc C và kiến thức nhúng cơ bản. Đừng vội học AUTOSAR nếu bạn vẫn còn lúng túng với con trỏ và quản lý bộ nhớ. Bạn có thể bắt đầu từ các khóa lập trình embedded cơ bản trên những nền tảng quen thuộc.
Bước tiếp theo là làm quen với CAN bus và một vi điều khiển thật. Một bo mạch nhỏ kèm vài module CAN là đủ để bạn thấy dữ liệu chạy trên dây như thế nào. Thực hành như vậy giúp kiến thức ở lại lâu hơn nhiều so với chỉ đọc.
Cuối cùng là đọc tài liệu AUTOSAR ở mức tổng quan trước khi đi sâu. Mục tiêu ban đầu chỉ là hiểu các khối chính và mối quan hệ giữa chúng. Khi đã quen, việc học các module chi tiết sẽ nhẹ nhàng hơn.
Những lưu ý trước khi quyết định chuyển ngành
Về mức thu nhập khởi điểm và cơ hội việc làm tại Việt Nam, chúng tôi không đưa ra con số cụ thể vì chúng thay đổi theo thời điểm và từng công ty. Bạn nên tự kiểm tra trên các kênh tuyển dụng hiện tại trước khi quyết định.
Đây là lĩnh vực đòi hỏi kỷ luật quy trình và sự kiên nhẫn. Không phải ai cũng hợp, và điều đó hoàn toàn bình thường. Nếu bạn thích làm nhanh và thấy kết quả ngay, web hoặc mobile có thể phù hợp hơn. Trước khi chốt hướng đi, bạn cũng nên đọc thêm những lưu ý quan trọng về công nghệ automotive và AUTOSAR để có cái nhìn rõ hơn.
Câu hỏi thường gặp
AUTOSAR có cần biết trước về cơ khí ô tô không?
Không bắt buộc. Tuy vậy, hiểu cơ bản về động cơ, hệ thống phanh và cảm biến sẽ giúp bạn nắm được yêu cầu từ nhóm cơ khí. Bạn hoàn toàn có thể học dần trong quá trình làm việc.
Dev web có chuyển sang automotive được không?
Được, nhưng bạn cần học thêm C, kiến thức nhúng và tư duy về an toàn. Kinh nghiệm lập trình và quy trình làm việc từ web vẫn có ích, đặc biệt là kỹ năng kiểm thử tự động. Bạn có thể tìm hiểu thêm về automation test trong automotive khác gì so với web và app để thấy rõ phần giống và khác nhau.
Cần học chứng chỉ nào để được nhận vào vị trí automotive?
Chứng chỉ không phải lúc nào cũng quyết định. Nhiều nhà tuyển dụng quan tâm đến kiến thức thực hành về C, CAN và kiểm thử hơn. Nếu học chứng chỉ, hãy chọn sau khi đã có nền tảng vững.
Nên bắt đầu thực hành với phần cứng nào?
Một vi điều khiển phổ biến kèm module CAN là điểm khởi đầu hợp lý. Hãy chọn loại có nhiều tài liệu và cộng đồng hỗ trợ để tránh mắc kẹt lâu khi gặp lỗi.

