Sinh viên công nghệ thông tin thường hay thắc mắc ra trường sẽ làm gì, thực ra CNTT rất rộng có đến hàng trăm công việc khác nhau. Nếu xét riêng về công nghệ phần mềm thì cũng đã có rất nhiều công việc liên quan rồi.
Mình xin nêu ra một số công việc liên quan trong ngành Công nghệ Phần Mềm (Software Engineering) cũng như những kỹ năng cần có. Chú ý rằng trong một công ty nhỏ thì một người có thể kiêm nhiều vai trò khác nhau bên dưới, trong công ty lớn thì việc phân biệt rõ ràng hơn.
Mình cũng nói qua về những kỹ năng cần thiết và quan trọng nhất cho mỗi vị trí.
Lập trình viên— Programmer/Developer
Riêng lập trình, các bạn có thể chọn hàng chục ngôn ngữ khác nhau như Java, .Net, PHP, Python, Swift, Kolin, NodeJS, GoLang, JavaScript… Ngoài ra, chúng ta cũng có những vị trí lập trình khác nhau như backend, frond-end, data engineering, database programming…. Ở Việt Nam mọi người thường nghĩ đến việc chỉ làm lập trình đến năm 30 tuổi sau đó thì làm quản lý.
Thực tế trên thế giới nghề lập trình có thể làm đến già, những người làm càng lâu càng biết sâu và trở thành chuyên gia trong lĩnh vực của họ. Thực tế là rất nhiều CTO (Giám đốc Công nghệ) vẫn phải đảm nhận những công việc lập trình khó.
Ví trí này thông thường cần kỹ năng giải quyết vấn đề, ngoài ra khả năng trừu tượng hoá cũng là cái cần có của một Developer.
Thiết kế phần mềm hay thiết kế hệ thống (System Architect)
Thông thường ở Việt Nam thì công việc này thường là được CTO hoặc Tech Lead kiêm nhiệm luôn. Ở vị trí này, bạn sẽ được yêu cầu phải hiểu biết sâu về lập trình, database, server và product development. Song song đó, công việc đòi hỏi hiểu được những vấn đề ngắn hạn và dài hạn có thể gặp phải khi phát triển, cũng phải hiểu tính chất, điểm yếu điểm mạnh của từng thứ ngôn ngữ lập trình, DB, Server…
Nói chung phải là người có trí tưởng tượng tốt để hình dung ra những vấn đề gặp phải sau này. Vừa là kiến trúc sư phần mềm, cũng vừa hiểu những thực tế của việc phát triển phần mềm.
Vị trí này cần nhất kỹ năng strategic & planning.
UX designer
Là vị trí hiểu được những thứ người dùng sử dụng. Họ phải mô tả được cho team việc phần mềm sau khi làm ra thì có những thành phần nào tham gia, họ sẽ tiếp cận sản phẩm như thế nào… (tìm hiểu khái niệm customer Jouney Mapping).
Ngoài ra họ cũng phải mô tả được về những thứ nhìn thấy như giao diện, những màn hình cần có, các thành phần được bố trí thế nào, các luồng màn hình thế nào (click vào cái gì thì đi đâu)…
Cũng giống như system Architect, UX Designer ở Việt Nam thường cũng là vị trí kiêm nhiệm của Product Manager hoặc UI Designer…
Đối với UX Designer thì sự tỷ mỉ chi tiết, và khả năng tưởng tượng là những thứ cần thiết nhất.
Business Analysis (BA), Product Owner
Là người chịu trách nhiệm về yêu cầu công việc. Thông thường sẽ là vị trí trung gian làm cầu nối giữa một bên là những vị trí phi kỹ thuật như Marketing, Sale, CEO… với những vị trí kỹ thuật như bên trên.
Họ có thể nói được cả 2 tiếng nói cả kỹ thuật và phi kỹ thuật. Họ phải làm sao để mô tả những yêu cầu của các team khác dưới ngôn ngữ kỹ thuật, UX Designer, Developer… có thể triển khai được những thứ team khác mong muốn. BA/PO đôi khi cũng phải là người nghĩ ra những hướng đi cho dự án.
Kỹ năng cần thiết nhất của BA/PO là kỹ năng phân tích và đánh giá nhu cầu của các thành phần liên quan.
Quản lý dự án Project Manager / Scrum Master
Là vị trí liên quan nhiều đến quản lý, bố trí ai làm việc gì và là người chịu trách nhiệm làm sao để team đi đúng hướng. Họ phải hiểu điểm mạnh, điểm yếu của từng người để bố trí. Họ là người biến những thứ mong muốn của BA/PO trở thành hiện thực thông qua việc làm việc với những thành viên khác. PM đôi khi đảm nhận cả vai trò của BA/PO (PM truyền thống), thậm chí cả System Architect + UX Designer cũng được PM kiêm luôn.
Tuy nhiên cách làm này thường hay khiến team bị nghẽn việc ở vị trí của PM, khiến cho team bị chậm. Ở Việt Nam thì PM thường được coi là “sếp”, nhưng thực tế PM cũng chỉ là 1 vị trí trong team chứ ko phải là sếp hay gì.
Trong đó, PM thì cần nhất khả năng giao tiếp và trao quyền, kỹ năng lập kế hoạch cũng quan trọng không kém.
Tester/QA/QC
Là vị trí đảm bảo những gì Developer làm ra đúng với yêu cầu của BA/PO. Tester/QA thường là những người Executive, những người kiểm tra trực tiếp sản phẩm, đảm bảo những gì làm dev làm ra là đúng và…hợp lý.
QC là người kiểm soát về quy trình, đảm bảo quy trình được thực thi đúng. Khi quy trình đúng thì gián tiếp đảm bảo chất lượng sản phẩm.
Đối với QA thì quan trọng nhất là sự tỷ mỉ và cẩn thận.
Quản trị hệ thống (System Administrator) / Dev-op
Là những người đảm bảo môi trường phát triển cho team cũng như chịu trách nhiệm thực hiện việc cài cắm server, Backup, thiết lập môi trường, thiết lập môi trường phát triển, vận hành hệ thống…
Đối với những người non-tech thì đây là ông chuyên đi cài Win với Restart modem khi cần.
Quản trị hệ thống thì việc kỹ năng ra quyết định, sự cẩn thận là những thứ quan trọng nhất.
Kỹ sư dữ liệu (Data Engineering) / Data Analysis / Data Scientist
Ở Việt Nam vị trí này tương đối mới mẻ, thực tế có lẽ chưa có trường nào đào tạo. 3 vị trí này có điểm chung là cùng làm việc với dữ liệu, tuy nhiên có sự khác nhau như sau: Data Engineering là người biết lập trình vừa hiểu cách phân tích data, biết viết những chương trình phầm mềm để xử lý data đưa ra báo cáo gì đó.
Data Analysis là người sử dụng công cụ hoặc kết quả làm ra của Data Engineering để đưa ra được hành động hoặc kết luận phục vụ cho những vị trí khác về bussiness. Data Scientist là người ở tấng cao hơn, trừu tượng hơn so với Data Engineering, họ có thể ko biết lập trình, ko hiểu data như DA, tuy nhiên họ hiểu thuật toán xử lý dữ liệu và hướng dẫn Data Engineering xử lý được Data theo thuật toán mà họ hướng dẫn.
Đối với những vị trí trên thì sự hiểu data và khả năng phân tích dữ liệu để đưa ra đánh giá là những thứ cần thiết nhất (Nhất là với DA/DE)
Product Manager
Vị trí này tương đối giống với Project Manager. Tuy nhiên Product Manager thường nói đến vị trí để ý nhiều hơn đến sản phẩm, ít chú ý đến việc quản lý. Vị trí Product Manager yêu cầu kinh nghiệm rất đa dạng.
Thông thường phải có kiến thức của tất cả các phần trên, đặc biệt là phải có kinh nghiệm của một UX Designer, BA, System Architect, Developer và cả về Business nữa. Nói chung để đảm nhận về vị trí Product Manager thường yêu cầu kinh nghiệm khá toàn diện.
Vị trí Product Manager cần rất nhiều kỹ năng, kỹ năng phân tích, tư duy chiến lược cần có nhưng sự tỷ mỉ chi tiết cũng cần luôn. Nói chung đây là vị trí rất khỏ cấn có nhiều kỹ năng để có thể làm được.
Bên trên là những vị trí chính trong ngành công nghệ thông tin. Tất nhiên là vẫn còn có rất nhiều những vị trí khác nữa, tuỳ thuộc vào từng công ty vị trí trên có thể được chia nhỏ hoặc phát sinh những vị trí mới. Trên đây là tóm tắt theo kinh nghiệm bản thân, có thể có những chỗ chưa đúng, mong mọi người góp ý.