Những công việc trong ngành công nghệ phần mềm

3492

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

Sinh viên CNTT 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). Mình xin nêu ra một số những vị trí và kỹ năng cần có.

Chú ý rằng trông 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 cho mỗi vị trí, nó ko chỉ cần những kỹ năng đó, nhưng đó là kỹ năng quan trọng nhất.

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

– Lập trình — Programmer/Developer (tất nhiên ai cũng nghĩ đến đầu tiên): 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 các bạn cũng có những vị trí lập trình khác nhau như backend, frond-end, data engineering, database programming…. Ở VN mọi người thường nghĩ đến việc chỉ 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ế 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 ở VN thì công việc này thường kiêm nhiệm (có thể CTO hoặc Tech Lead kiêm nhiệm luôn vị trí này). Ở vị trí này yêu cầu hiểu biết sâu về lập trình, database, server và product development. 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.

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

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 ở VN 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 (cái này ko biết dịch sao): là vị trí liên quan nhiều đến quản lý, bố trí ai làm việc gì, 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ị bottleneck ở vị trí của PM, khiến cho team bị chậm. Ở VN 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. Là những người 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: Ở VN 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.

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

Bên trên là những vị trí chính trong ngành CNPM, 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 ý.

Bài viết gốc được đăng tải tại Medium

Báo cáo bài viết vi phạm bản quyền>>