Software Architect (Kiến trúc sư phần mềm) là các thành viên cấp cao trong nhóm phát triển phần mềm.
Cần có thời gian và kinh nghiệm để trở thành một software architect. Bạn cần tích lũy kỹ năng và kiến thức từ nhiều chức năng khác nhau. Bên cạnh những thách thức đầu tiên về phía kỹ thuật, vị trí này cũng đòi hỏi phải có kỹ năng xã hội tốt.
Dừng lại chút nào, nếu bạn đang #open_to_work, thử nghía qua các công việc đang tuyển trên Gamba nhé. Vào LINK NÀY để xem các job Architecture hoặc scan QR Code ở bên dưới nhé.
Trước khi bắt đầu xem xét kế hoạch tổng thể nhằm trở thành kiến trúc sư phần mềm, hãy cùng chúng tôi xem qua các loại software architect điển hình:
Chúng ta có thể mở rộng danh sách này hơn nữa, vì mỗi công ty có thể có tên khác nhau cho một vị trí cụ thể.
Vai trò và trách nhiệm của một số vị trí software architect ở trên có thể khác nhau giữa các công ty nhưng về bản chất thì giống nhau.
Hãy xem biểu đồ sau để hiểu rõ hơn về mối quan hệ giữa các vai trò kiến trúc sư khác nhau đối với kỹ năng và kiến thức kỹ thuật / kinh doanh.
Cho đến giờ có một điều rõ ràng: Kiến trúc sư phần mềm là những developer cấp cao (thường vậy…) trừ những người xuất thân từ dân kinh doanh.
Đây là các lĩnh vực chủ đề khác nhau, trong đó các kiến trúc sư phần mềm sẽ cảm thấy thoải mái:
Những nguyên tắc rất cơ bản của lập trình không thành vấn đề với software architect. Họ không chỉ quen thuộc với các DT như Array, Queues, Stack, LinkedList, các loại Tree, Graph khác nhau mà còn nhận ra thời điểm nào sẽ cần sử dụng DT nào.
Kiến trúc sư phần mềm có nền tảng tốt nên biết các kỹ thuật thuật toán khác nhau như Tìm kiếm, Sắp xếp, Đệ quy (Recursion), Lập trình động (Dynamic Programming)…
Trên thực tế, không có kiến trúc sư nào viết thuật toán “Merge Sort” từ đầu hoặc phát hiện ra một cấu trúc dữ liệu mới.
Nhưng biết những điều cơ bản sẽ giúp họ đưa ra quyết định kỹ thuật đúng đắn trong các đánh giá yêu cầu.
Cho dù là backend hay frontend, software architect phải biết rất rõ các tech stack được sử dụng. Học cú pháp của một ngôn ngữ lập trình cụ thể là cách dễ dàng nhất, nhưng cần có thời gian để tích lũy kinh nghiệm.
Các thư viện và framework khác nhau mà sản phẩm phần mềm hoạt động trên đó cũng là tài sản quý giá cần biết.
Làm cho một hệ thống phần mềm hoạt động không phải là mục tiêu cuối cùng mà software architect nhắm tới. Mỗi khi Kiến trúc sư phần mềm thực hiện code review, câu hỏi đầu tiên xuất hiện trong đầu họ là:
Lập trình hướng đối tượng (Object Oriented Programming) cung cấp những khả năng tuyệt vời làm cho hệ thống phần mềm linh hoạt, hiệu quả và dễ đọc hơn.
Software architect giàu kinh nghiệm sử dụng các kỹ thuật này thường xuyên. (nếu tech stack phù hợp…)
Nói đến OOP, chúng ta không nên quên tầm quan trọng của các Hình mẫu thiết kế khác nhau mà GoF đã tập hợp và giới thiệu lần đầu tiên.
Biết được các Hình mẫu thiết kế này chắc chắn sẽ giúp bạn sử dụng tốt hơn hệ thống phần mềm của mình với thiết kế hướng đối tượng.
Các nguyên tắc thành phần này là các kỹ thuật cơ bản cần được tính đến trong thiết kế thành phần phần mềm.
Software architect có kinh nghiệm sẽ nhanh chóng nhận ra các vi phạm trong code, nếu họ nắm vững các nguyên tắc này.
Các nguyên tắc như REP, CRP, ADP, v.v. là những nguyên tắc quan trọng đối với Softare architect, đặc biệt là khi xây dựng, kết hợp/tách rời các plugin với nhau.
Vì vậy, những kỹ thuật này phù hợp với thiết kế cấp cao hơn.
Có rất nhiều hình mẫu Kiến trúc phần mềm như: Master-Slave, Client-Server, Microservices, Model-View-Controller, Unidirectional Architecture tùy thuộc vào các dự án frontend hay backend. Tất nhiên là không thể biết tất cả chúng.
Nhưng tùy thuộc vào dự án, software architect phải là bậc thầy về thiết kế cơ bản. Xuất phát điểm rất cơ bản là Domain Driven Design.
Đây là một điểm quan trọng trong công việc hàng ngày của Software architect. Vẽ các Biểu đồ UML (Unified Modeling Language), tài liệu ARC42 khác nhau là một phần không thể tránh khỏi của vị trí này. Có rất nhiều công cụ như:
Không có nhiều loại chứng nhận cho software architect được biết đến toàn cầu. Tuy nhiên, có Hội đồng Chứng nhận Software Architecture Quốc tế (iSAQB®) cung cấp chương trình chứng nhận Chuyên gia được Chứng nhận về Software Architecture (CPSA®). Chứng chỉ CPSA® được công nhận trên toàn cầu.
Trở thành một Kiến trúc sư phần mềm cần nhiều thời gian và nỗ lực, như bạn có thể thấy từ danh sách trên nhưng nó khả thi.
Gambaru tham khảo azeynalli1990