Software Architect là gì? Cần gì để trở thành software architect?


Software Architect là gì?





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é.





Xem và ứng tuyển các job "architecture"
Xem và ứng tuyển các job “architecture”









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:





  • Solution Architect/Software Architect (Kiến trúc sư giải pháp/Kiến trúc sư phần mềm) — architect sơ cấp, thường hiện tại hoặc trước đó là software engineer có trình độ senior. Họ phụ trách thiết kế kỹ thuật và kiến ​​trúc của một sản phẩm có liên kết với những người kinh doanh. Thường dẫn dắt các developer.
  • Enterprise architect – Architect cao cấp có “Bức tranh tổng thể” về sản phẩm nhưng ít thông tin chi tiết. Vị trí này chủ yếu xuất hiện trong các sản phẩm phần mềm rất phức tạp, đôi khi thậm chí chỉ ngay sau CTO.
  • Domain architect – đây là một dạng software architect thường thấy ở nhiều công ty. Mục đích của vị trí này là trở thành archiect của tình huống sử dụng, tech stack cụ thể. Ví dụ: các kiến ​​trúc sư đám mây (cloud architect) chịu trách nhiệm về một nhà cung cấp đám mây nhất định. Kiến trúc sư dữ liệu (data architect) phụ trách các hoạt động cơ sở dữ liệu, thiết kế, điều phối. Mobile architect phụ trách phiên bản mobile của một sản phẩm phần mềm.
  • Functional architect (Kiến trúc sư chức năng) — loại kiến ​​trúc sư này chủ yếu phụ trách mảng kinh doanh, ít được thông tin về thế giới kỹ thuật. Phần lớn những người này là những nhà phân tích kinh doanh (business analyst) có kinh nghiệm thiết kế và định hướng logic kinh doanh của một sản phẩm phần mềm.




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.





Software architect - Biểu đồ tương quan Kỹ thuật và Kinh doanh
Software architect – Biểu đồ tương quan Kỹ thuật và Kinh doanh. Ảnh: azeynalli1990




Cần gì / học gì trở thành software architect?





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:





1. Cấu trúc dữ liệu và thuật toán





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.





Introduction to Algorithm
Introduction to Algorithm




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.





2. Tech Stack





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.





3. Clean Coding





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à:





  • Tôi có thể làm cho code này hoạt động tốt hơn không?
  • Tôi có thể làm cho code này tốn ít bộ nhớ hơn?
  • Các tiêu chuẩn clean code có được áp dụng đúng chưa?
  • Tôi có thể sử dụng các kỹ thuật OOP (lập trình hướng đối tượng) khác?




Clean Code
Clean Code




4. OOP





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…)





Design Patterns
Design Patterns




5. Các hình mẫu thiết kế phần mềm





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.





Clean Architecture
Clean Architecture




6. Các nguyên tắc S.O.L.I.D.





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.





7. Nguyên tắc liên kết / ghép nối





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.





8. Thiết kế hệ thống





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.





Software Architecture in Practice
Software Architecture in Practice




9. Tài liệu





Đâ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ư:





  • draw.io – công cụ miễn phí và dễ sử dụng
  • plantUml – plugin cho các IDE (Integrated Development Environment) như Eclipse, Intellij.
  • yEd – công cụ tiện dụng, có sẵn dưới dạng ứng dụng dành cho máy tính để bàn.
  • MS Visio – chức năng phong phú, nhưng không miễn phí!




10. Chứng chỉ





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