Khám Phá Các Công Việc Trong Ngành Công Nghệ Phần Mềm

Tác giả: Đoàn Văn Tuyển

Ngành Công nghệ Thông tin (CNTT) đang ngày càng phát triển mạnh mẽ, và nhiều sinh viên thường băn khoăn về tương lai nghề nghiệp của mình. Thực tế, lĩnh vực này rất đa dạng với hàng trăm công việc khác nhau. Đặc biệt, trong ngành Công nghệ Phần mềm, có rất nhiều vị trí và kỹ năng cần thiết mà các bạn cần nắm rõ. Dưới đây là một số công việc tiêu biểu trong ngành Công nghệ Phần mềm cùng với những kỹ năng quan trọng mà bạn nên biết.

Cần lưu ý rằng trong các công ty nhỏ, một cá nhân có thể đảm nhận nhiều vai trò khác nhau, trong khi ở các công ty lớn, các vị trí thường được phân chia rõ ràng hơn. Mình sẽ đề cập đến những kỹ năng cần thiết cho từng vị trí, mặc dù không chỉ có những kỹ năng này, nhưng chúng là những yếu tố quan trọng nhất.

Người viết: Tuyền Đoàn

(Đầu tiên, không thể không nhắc đến lập trình viên): Các bạn có thể lựa chọn từ hàng chục ngôn ngữ lập trình khác nhau như Java, .Net, PHP, Python, Swift, Kotlin, NodeJS, GoLang, JavaScript… Bên cạnh đó, còn có nhiều vị trí lập trình khác nhau như lập trình backend, frontend, kỹ sư dữ liệu, lập trình cơ sở dữ liệu… Ở Việt Nam, nhiều người thường nghĩ rằng lập trình viên chỉ làm việc đến năm 30 tuổi và sau đó chuyển sang quản lý. Tuy nhiên, trên thế giới, nghề lập trình có thể theo đuổi lâu dài, và những người có kinh nghiệm thường trở thành chuyên gia trong lĩnh vực của họ. Thực tế, nhiều Giám đốc Công nghệ (CTO) vẫn tham gia vào các công việc lập trình phức tạp. Vị trí này yêu cầu kỹ năng giải quyết vấn đề và khả năng trừu tượng hóa.

Thông thường, ở Việt Nam, công việc này thường được kiêm nhiệm (có thể CTO hoặc Tech Lead cũng đảm nhận vị trí này). Để thành công trong vai trò này, bạn cần có kiến thức sâu về lập trình, cơ sở dữ liệu, máy chủ và phát triển sản phẩm. Bạn cũng cần hiểu rõ những vấn đề ngắn hạn và dài hạn có thể gặp phải trong quá trình phát triển, cũng như nắm vững ưu nhược điểm của từng ngôn ngữ lập trình, cơ sở dữ liệu và máy chủ. Nói chung, bạn cần có khả năng tưởng tượng tốt để hình dung ra những vấn đề có thể xảy ra trong tương lai. Vừa là kiến trúc sư phần mềm, vừa cần hiểu rõ thực tế của việc phát triển phần mềm, vị trí này cần nhất là kỹ năng lập kế hoạch và chiến lược.

Kết quả hình ảnh cho Programmer

Vị trí tiếp theo là người hiểu rõ những gì người dùng cần. Họ phải mô tả cho nhóm về các thành phần của phần mềm sau khi hoàn thành, cách mà người dùng sẽ tiếp cận sản phẩm… (tìm hiểu khái niệm customer journey mapping). Họ cũng cần mô tả các yếu tố như giao diện, các màn hình cần có, cách bố trí các thành phần và các luồng màn hình (như click vào đâu thì đi đâu). Tương tự như kiến trúc sư hệ thống, nhà thiết kế trải nghiệm người dùng (UX Designer) ở Việt Nam thường kiêm nhiệm vai trò của Quản lý sản phẩm (Product Manager) hoặc Nhà thiết kế giao diện người dùng (UI Designer). Đối với UX Designer, sự tỉ mỉ và khả năng tưởng tượng là những yếu tố cần thiết nhất.

Vị trí tiếp theo là người chịu trách nhiệm về yêu cầu công việc. Thông thường, đây là cầu nối giữa các vị trí phi kỹ thuật như Marketing, Bán hàng, Giám đốc điều hành với các vị trí kỹ thuật như lập trình viên và UX Designer. Họ cần có khả năng giao tiếp tốt để mô tả yêu cầu của các nhóm khác bằng ngôn ngữ kỹ thuật, giúp các thành viên trong nhóm có thể triển khai những gì mà các nhóm khác mong muốn. BA/PO đôi khi cũng phải là người đề xuất hướng đi cho dự án. Kỹ năng phân tích và đánh giá nhu cầu của các bên liên quan là rất quan trọng đối với BA/PO.

(Vị trí này có thể không dễ để dịch): Đây là vị trí liên quan đến quản lý, phân công công việc cho từng thành viên trong nhóm, và đảm bảo rằng nhóm đi đúng hướng. Họ cần hiểu rõ điểm mạnh và điểm yếu của từng người để phân công công việc hợp lý. Họ là người biến những mong muốn của BA/PO thành hiện thực thông qua việc làm việc với các thành viên khác. PM đôi khi cũng đảm nhận vai trò của BA/PO (PM truyền thống), thậm chí cả Kiến trúc sư hệ thống và UX Designer cũng có thể được PM kiêm nhiệm. Tuy nhiên, cách làm này có thể dẫn đến tình trạng tắc nghẽn trong nhóm, làm chậm tiến độ. Ở Việt Nam, PM thường được coi là “sếp”, nhưng thực tế PM chỉ là một vị trí trong nhóm, không phải là người lãnh đạo. Kỹ năng giao tiếp và khả năng phân quyền là rất quan trọng đối với PM, bên cạnh kỹ năng lập kế hoạch.

Là người đảm bảo rằng những gì lập trình viên thực hiện đáp ứng yêu cầu của BA/PO. Tester/QA thường là những người kiểm tra trực tiếp sản phẩm, đảm bảo rằng những gì lập trình viên làm ra là chính xác và hợp lý. QC là người kiểm soát quy trình, đảm bảo rằng quy trình được thực hiện đúng cách. Khi quy trình đúng, điều này gián tiếp đảm bảo chất lượng sản phẩm. Đối với QA, sự tỉ mỉ và cẩn thận là rất quan trọng.

Là những người đảm bảo môi trường phát triển cho nhóm. Họ thực hiện việc cài đặt máy chủ, sao lưu, thiết lập môi trường phát triển và vận hành hệ thống. Đối với những người không chuyên về công nghệ, họ có thể được coi là người chuyên cài đặt Windows và khởi động lại modem khi cần thiết. Đối với quản trị hệ thống, kỹ năng ra quyết định và sự cẩn thận là rất quan trọng.

Ở Việt Nam, các vị trí này còn khá mới mẻ, thực tế có thể chưa có trường nào đào tạo. Ba vị trí này có điểm chung là làm việc với dữ liệu, nhưng có sự khác biệt như sau: Kỹ sư dữ liệu (Data Engineer) là người biết lập trình và phân tích dữ liệu, có khả năng viết các chương trình phần mềm để xử lý dữ liệu và tạo báo cáo. Nhà phân tích dữ liệu (Data Analyst) sử dụng công cụ hoặc kết quả từ Kỹ sư dữ liệu để đưa ra hành động hoặc kết luận phục vụ cho các bộ phận khác trong doanh nghiệp. Nhà khoa học dữ liệu (Data Scientist) là người có kiến thức sâu hơn, có thể không biết lập trình như Data Analyst, nhưng họ hiểu thuật toán xử lý dữ liệu và hướng dẫn Kỹ sư dữ liệu cách xử lý dữ liệu theo thuật toán mà họ đề xuất. Đối với các vị trí này, sự hiểu biết về dữ liệu và khả năng phân tích để đưa ra đánh giá là rất quan trọng, đặc biệt là với Data Analyst và Data Engineer.

Vị trí này tương tự như Quản lý Dự án (Project Manager). Tuy nhiên, Quản lý Sản phẩm (Product Manager) thường chú trọng nhiều hơn đến sản phẩm và ít chú ý đến quản lý. Vị trí này yêu cầu kinh nghiệm đa dạng, thường cần có kiến thức về tất cả các phần trên, đặc biệt là kinh nghiệm của một UX Designer, BA, Kiến trúc sư hệ thống, Lập trình viên và cả về kinh doanh. Nói chung, để đảm nhận vị trí Quản lý Sản phẩm, bạn cần có nhiều kỹ năng và kinh nghiệm phong phú. Vị trí này yêu cầu kỹ năng phân tích, tư duy chiến lược và sự tỉ mỉ trong chi tiết.

Bên trên là những vị trí chính trong ngành Công nghệ Phần mềm. Còn rất nhiều vị trí khác nữa, tùy thuộc vào từng công ty mà các vị trí này có thể được chia nhỏ hoặc phát sinh thêm. Đây là tóm tắt dựa trên kinh nghiệm cá nhân, có thể có những điểm chưa chính xác, mong mọi người góp ý.

Viết một bình luận