Kiến trúc sư phần mềm là gì ?
Kiến trúc sư phần mềm là người thiết kế kiến trúc hệ thống và các tiêu chuẩn kỹ thuật. Kiến trúc sư phần mềm không chỉ phân tích yêu cầu của khách hàng (trong hay ngoài công ty) rồi đưa ra thiết kế hệ thống mà phải giám sát chặt chẽ đội ngũ Developer khi xây dựng hệ thống, vận hành hệ thống cũng như khi bảo trì, mở rộng hệ thống để đảm bảo họ thực hiện theo thiết kế một cách chính xác. Công việc của Kiến trúc sư phần mềm đi cùng với dự án từ đầu đến cuối. Để có hiệu quả, một kiến trúc sư phần mềm cần có kiến thức kỹ thuật rộng (và sâu) để đưa ra các quyết định đúng đắn. Tuy nhiên, kiến thức kỹ thuật là không đủ. Họ cũng phải có các kỹ năng mềm để quản lý dự án và con người
Công việc chính của Kiến trúc sư phần mềm
- Làm việc với khách hàng để làm rõ và ghi lại các yêu cầu/thông số kỹ thuật của nền tảng (chức năng và phi chức năng).
- Chịu trách nhiệm xác định và tạo mô hình kiến trúc nền tảng bằng cách sử dụng kiến trúc phần mềm hiện đại, các mẫu thiết kế và giải pháp để có hiệu suất cao, khả năng mở rộng cao, tính sẵn sàng cao, bảo mật, khả năng tích hợp và khả năng bảo trì.
- Làm việc với nhóm phát triển để triển khai các dịch vụ cốt lõi của nền tảng/khung cơ sở. Cung cấp và cố vấn tài liệu thiết kế kiến trúc nền tảng, quy chuẩn mã nguồn, hướng dẫn triển khai, đảm bảo chất lượng triển khai/mã chất lượng cao cho nhóm phát triển.
- Đảm bảo rằng tất cả các nhóm dự án có liên quan đều tuân theo một bộ nguyên tắc và mẫu chung, đồng thời sử dụng một bộ khung công nghệ và thư viện tiêu chuẩn.
Kỹ năng và kiến thức cần có
-
Bằng cử nhân về Kỹ thuật phần mềm, Data Science, Khoa học máy tính, Công nghệ thông tin. Bằng thạc sĩ là một lợi thế.
-
Cần có kiến thức về ngôn ngữ mô hình thống nhất UML.
-
Có kiến thức chuyên sâu với một trong các ngôn ngữ lập trình: PHP, Python, JavaScript, Nodejs, C#, Java…, viết mã trong RDBMS, NoSQL (MySql/MariaDB, PostgreSql, SQL Server, Redis, MongoDB, Cassandra, ES.
- Quản lý các hoạt động phát triển phần mềm theo cách hợp tác và mau lẹ. Điều này đòi hỏi các kỹ năng cứng, chẳng hạn như tạo môi trường DevOps hiệu quả và các kỹ năng mềm, để giữ cho các nhóm phát triển và vận hành được liên kết với nhau.
Kỹ năng mềm cần có
- Lãnh đạo.
- Xử lý vấn đề và giải quyết xung đột.
- Giao tiếp.
- Huấn luyện và truyền cảm hứng.
- Tổ chức.
- Ưu tiên.
- Suy nghĩ chi tiết.
- Tư duy sáng tạo.
Ngoại ngữ:
Giỏi tiếng Anh được ưu tiên.