[Định hướng nghề nghiệp IT] Lập trình nhúng - embedded engineer

Share:

Bạn là sinh viên IT hay sinh viên điện tử, bạn yêu thích các dòng code, và đặc biệt, bạn có đam mê với phần cứng, các loại chip, board mạch. Thậm chí bạn muốn tự thiết kế cho mình các sản phẩm nhúng để thoải mãn đam mê. Thì nhúng (embedded) sẽ là từ khóa dành cho bạn.

Trong bài viết này, chúng tôi sẽ không giải thích lập trình nhúng là gì, nhưng chúng tôi sẽ đi vào một vài điểm đặc biệt quan trọng và cực kì cần thiết cho sinh viên muốn đi theo hướng này.

Hiện trạng ngành lập trình nhúng tại Việt Nam

Việt Nam là một đất nước đang phát triển, và là thế giới của outsourcing, và phần lớn các công ty IT hiện tại ở Việt Nam đều theo hướng outsourcing.

Và ngành lập trình nhúng tại thời điểm hiện tại (2018) đang dần hot lên, nghĩa là số lượng cộng việc sẽ không nhiều (như lập trình web), nhưng không phải là không có chổ đứng dành cho bạn. Bạn có thể lên ITviec và tìm kiếm để biết thêm. Có rất nhiều job về embedded nhưng họ vẫn mãi không tìm được người.

Tuy nhiên, lượng sinh viên đi theo ngành này không nhiều, bạn vẫn sẽ có cơ hội việc làm khi ra trường.

Trong tương lại, nhất là chúng ta đang ở trong nền công nghiệp 4.0, nơi IoT (Internet of Thing) sẽ lên ngôi, cơ hội làm việc trong ngành lập trình nhúng này sẽ ngày càng mở rộng.

Lời khuyên cho bạn là luôn luôn cố gắng để cải thiện trình độ bản thân để có một sự nghiệp vững chắc.

Xác định đúng hướng đi đúng cho sự nghiệp

Nếu bạn đã thực sự biết rằng, con đường đi thực sự trong sự nghiệp của bạn chính là lập trình nhúng thì bài viết này dành cho bạn. 
Nhưng nếu bạn vẫn còn lưỡng lự, có nên đi theo hướng nhúng hay không, thì hãy đọc bài viết này, khi kết thúc bài viết, chúng tôi nghĩ bạn sẽ có câu trả lời chính xác nhất.

Có bao giờ bạn tự hỏi rằng, khi ra trường, mình sẽ làm gì nếu đi theo hướng nhúng, và bạn sẽ phải chuẩn bị những kĩ năng gì, skill gì nếu muốn đi theo hướng nhúng này.

Bạn nên ghi nhớ một điều rằng: Sự nghiệp của bạn, hướng đi của bạn là do chính bạn quyết định. Một khi bạn đi sai, con quái vật thật sự trong con người bạn sẽ không thể nào xuất hiện.

Câu hỏi đúng ở đây là, liệu rằng khi bạn ra trường, bạn cảm thấy mình thật sự phù hợp với hướng đi nào hơn. Đây là câu hỏi dành cho bạn, có nhiều bạn khi còn ngồi trên ghế nhà trường đã xác định được chính xác mình sẽ làm gì, có bạn thì sau khi đi làm 1 2 năm là xác định được.

Công việc thực sự bạn sẽ làm khi ra trường?

Hướng lập trình nhúng thực sự rất lớn, một trường hợp xảy ra thường xuyên như sau:
Bạn vừa ra trường, bạn lên ITviec hay VietNamWork tìm một vài công ty tuyển lập trình nhúng và bạn nhìn yêu cầu công việc của họ, bạn sẽ ngơ ngác tới choáng ngợp với những yêu cầu họ đặt ra, bạn nghĩ rằng sao mà phỏng vấn pass được khi mình không biết gì hết.

Thực trạng chung của sinh viên là thế, học xong và không biết mình sẽ làm gì, mặc dù họ vẫn đang theo học ngành "IT".
Nhưng có một sự thật là, nhà tuyển dụng sẽ cực kì thông cảm cho bạn, và bạn vẫn sẽ được tuyển nếu bạn là người có khả năng đào tạo được.

Quay lại hướng nhúng, chúng tôi xin mạn phép chia hướng này ra thành 2 hướng nhỏ: embedded software (theo hướng phần mềm) và embedded hardware (theo hướng phần cứng).

Embedded software

Bạn sẽ là một developer (lập trình viên) đúng nghĩa, bạn sẽ cùng với đội nhóm của mình, phát triển các sản phẩm phần mềm cho các sản phẩm nhúng, có thể là application (web, desktop hay mobile app), firmware, OS (hệ điều hành), driver, vv.
Công việc của bạn là viết code, test code, viết requirement, document cho sản phẩm.

Embedded hardware

Bạn sẽ là một người chuyên thiết kế board mạch hay còn gọi là thiết kế PCB, test board mạch. Công việc này đòi hỏi bạn phải rất giỏi về phần cứng và điện tử.

Mỗi project mà bạn tham gia trong công ty sẽ có một process nhất định mà buộc bạn phải làm quen trước khi nhận task và hoàn thành nó. Nhưng bạn hãy yên tâm, bạn chắc chắn sẽ làm được việc.

Ở trên đây là 2 hướng để bạn có thể đi sau khi ra trường, chúng tôi không giới thiệu chi tiết hơn về 2 hướng này. Nếu bạn thắc mắc hay góp ý gì thì có thể để lại comment bên dưới bài viết.

Những kiến thức bạn cần trang bị để có thể làm việc

Nhà tuyển dụng tuyển sinh viên mới ra trường, họ không đòi hỏi cao về mặt kĩ thuật, họ chỉ cần bạn là một người có khả năng học hỏi và bạn phải là một người có thể đào tạo được, làm quen với công việc nhanh. Tóm lại nó nằm ở thái độ của bạn. Chúng ta hãy cùng đến với những kĩ năng cần thiết ngoài thái độ để có thể trở thành một dev giỏi.

Không giống như các ngành khác: Ví dụ như Android, Web Deverloper,… ban đầu bạn sẽ cảm thấy rất dễ, nhưng con đường phía sau bạn sẽ vô cùng gian nan nếu muốn trở thành chuyên gia (expert). Còn đối với lập trình nhúng, những thứ bạn phải học ban đầu là vô cùng gian nan, vô cùng khó khăn, vô cùng nhiều, khi bạn đạt được rồi, tương lai bạn sẽ dễ dàng hơn.

Những điều bạn cần học sẽ được liệt kê bên dưới:
  • Lập trình C/C++: bạn cần học C/++ thật giỏi, đây là ngôn ngữ quan trọng bật nhất trong lập trình nhúng.
  • Tiếng anh: ít nhất bạn phải đọc được tài liệu chuyên ngành kĩ thuật, nhất là datasheet, document.
  • Kiến thức về điện tử: các kiến thức về logic, vi điều khiển, vi xử lý (software thì cần một chút mảng này), ADC, TIMER, INTERRUPT, vv.
  • Các loại giao tiếp (protocol): UART, I2C, SPI, RS232, JTAG,… (nâng cao: SATA, PCIE, USB, CAN, MOST).
  • Hệ điều hành: kiến trúc hệ điều hành, kiến trúc máy tính, nhất là hệ điều hành linux.
  • Cấu trúc dữ liệu và giải thuật: nghe cái tên thôi bạn đủ hiểu, là chuyên gia phần cứng, bạn cũng phải code, đã code thì phải có giải thuật!
  • Memory: NOR, NAND, SRAM, DRAM, vv.
  • Hệ điều hành thời gian thực (Real time OS).
Trên đây là những kiến thức chung bắt buộc một kĩ sự lập trình nhúng phải có. Chúng ta sẽ đi sâu hơn về các kiến thức phải có của Embedded software và Embedded hardware.

Embedded software
Ngoài những kiến thức trên, bạn cần phải có:
  • Lập trình ứng dụng (application): web, desktop app hay mobile app.
  • Lập trình device driver.
  • Script: Perl, Python, đặt biệt là Shell script trên linux.
  • Cấu trúc dữ liệu và giải thuật cực tốt.
  • Xây dựng môi trường (build environments): Makefile, Cmake.

Embedded hardware
  • Thiết kế PCB: Allegro hay Antium.
  • Design schematic: bạn cần có kiến thức điện tử thật tốt để làm việc này.
  • Test board: sau khi đã thiết kế xong, bạn cần phải biết test board.
  • Review, đánh giá và lựa chọn linh kiện cho dự án sao cho tối ưu.
  • Sử dụng các loại dụng cụ máy đo.
  • Kĩ năng hàn mạch, sửa mạch (nếu bạn là Freelancer).
Trên đây là những kiến thức đã được tổng hợp, chắc chắn sẽ còn những thiếu sót, bạn đọc hãy bổ sung.
Mặc dù chúng tôi phân ra những kiến thức của 2 hướng như trên, nhưng trong thực tế, khi bạn là Embedded hardware thì không có nghĩa bạn không biết gì về Embedded software hay ngược lại. Bạn cần phải kiển trì rèn luyện tích lụy kiến thức từng ngày, nhất là đang ở trên giảng đường đại học. Bạn không được có suy nghĩ về việc ra trường sẽ được đào tạo những thứ này. Không đâu, họ sẽ cho bạn tự học tự tìm hiểu là chính, vì vậy không có lý do gì mà ngay từ bây giờ bạn không học.

Bạn nên chọn lựa công ty như thế nào?

Nếu bạn muốn được học hỏi nhiều về kĩ thuật, giống như làm full-stack, từ thiết kế phần cứng tới phần mềm, thì bạn hãy tìm những công ty nhỏ, start-up bạn sẽ học hỏi được rất nhiều.

Nếu bạn muốn học được những process chặt chẽ, những quy trình phát triển sản phẩm nghiêm ngặt thì hãy vào những công ty lớn, danh tiếng.

Trên đây là những chia sẻ về kinh nghiệm làm việc trong lĩnh vực nhúng chúng tôi, và mục đích của bài viết chỉ mang tính chất tham khảo, chia sẻ. Mọi thắc mắc bạn vui lòng để lại comment bên dưới.

17 nhận xét:

  1. Tks ad, bài viết rất hay và bổ ích

    Trả lờiXóa
  2. Cho hỏi học ngành gì để sau này thành lập trình viên nhúng

    Trả lờiXóa
    Trả lời
    1. Học ngành kĩ thuật máy tính, chọn hướng lập trình nhúng nha bạn. Hoặc học điện tử viễn thông, chọn lập trình nhúng.

      Xóa
  3. ad cho em hỏi hiện tại e đang là sinh viên năm 2 ngành công nghệ thông tin của 1 trường đại học ở hà nội, em rất muốn theo nhúng nhưng thấy trong lộ trình học của trường không hộ trợ nhiều cho lập trình nhúng, em có dự định sẽ đi học ở trung tâm để có thể học sau hơn về nhúng nhưng ko biết các khóa học hoặc trung tâm nào uy tín, mong ad giải đáp thắc mắc của em, em cảm ơn.

    Trả lờiXóa
    Trả lời
    1. Sorry em anh trả lời trễ.
      Ở ngoài Hà nội thì anh không rõ là có trung tâm này hợp lý không. Vì anh ở TPHCM. Anh nghĩ em nên tự học trên youtube ấy. Học từ lập trình cho tới hiểu cơ bản cấu trúc phần cứng, lập trình thì C/C++ trước. Phần cứng thì cứ học từ 8051, STM32, ARM, dễ thì kiếm con arduino để học.

      Xóa
    2. Có một vài khóa trên Udemy em có thể học

      Xóa
  4. anh cho e hỏi , e đang là sinh viên năm 2 ngành điện tử viễn thông, e muốn học c anh có thể cho e biết 1 số web nào dạy đc không ạ . e tìm trên youtube nhưng chung chung quá . Cảm ơn anh!

    Trả lờiXóa
  5. E đang là sv kt ô tô, trong quá trình học cũng đã tiếp xúc với nhúng qua arduino ạ, a cho e hỏi giờ e muốn chuyển hướng sang nhúng thì cần bổ sung những kiến thức nào ạ. E cảm ơn ạ

    Trả lờiXóa
    Trả lời
    1. Chào bạn, bạn là sv ô tô thì mình recommend cho bạn 1 hướng đi liên quan tới nhúng là automotive nha.

      Xóa
  6. Cảm ơn ad! Bài viết rất bổ ích ạ!

    Trả lờiXóa
  7. anh ơi , em nghe người nói bây giờ sinh viên lập trình nhúng học ra làm không có việc ạ , hoặc là phải chuyển ngành luôn ạ ,mấy anh chị khóa trên của em cũng chuyển nghành ạ . Đấy là do trình độ của họ chưa đủ tốt để làm nhúng hay là nghề nhúng khó kiếm được job và làm được nhiều tiền ạ ?

    Trả lờiXóa