Sa it là gì
Software Architect là gì ?Trước khi đi vào cụ thể SA là gì thì chúng ta cùng xem định nghĩa về SA: Show
Có thể hiểu là Software Architect (SA) là một professor X, người chịu trách nhiệm thiết kế bộ khung cho hệ thống, cách phân chia và tương tác giữa các component, viết các tài liệu kiến trúc tổng quan, coding convention, và hướng dẫn các developer phát triển bản thiết kế chi tiết cho từng chức năng. Vì vậy nếu làm việc với 1 SA tốt, khi thêm các tính năng mới, độ phức tạp của phần mềm sẽ không bị tăng nhiều. Công việc của Software Architect là gì ?Để những kỹ năng cần thiết của một SA, trước hết chúng ta phải hiểu được công việc của họ là gì ? Nó bao gồm những công việc sau:
Những kỹ năng cần thiết của Software Architect là gì ?1. Design
Lý thuyết là vậy, còn thực tiễn thì sao ?
2. DecideMột SA cần phải có khả năng đưa ra quyết định và lead project hoặc team đi đúng hướng
(1) Conceptional Integrity: Nếu bạn quyết định làm việc gì theo 1 cách nào đó, hãy tập trung làm theo cách đó mặc dù có thể sẽ tốt hơn nếu làm việc đó theo cách khác. Thường thì điều đó dẫn đến một concept đơn giản, dễ hiểu và dễ bảo trì. (2) Uniformity (tính thống nhất): Nếu bạn định nghĩa và áp dụng một naming conventions, không đơn thuần chỉ là việc chữ hoa chữ thường, nhưng hãy áp dụng cùng cách đó ở bất kỳ đâu.
3. SimplifyHãy luôn nhớ những nguyên lý giải quyết vấn đề Occam’s Razor (đề cao sự đơn giản). Có thể giải thích nguyên lý này như sau: Nếu bạn có quá nhiều giả định về một vấn đề cần giải quyết, để giải quyết vấn đề bạn có thể nghĩ sai hoặc dẫn tới những cách giải quyết phức tạp khác. Những giả định đó nên được tối giản nhất (nghĩ đơn giản) để có thể đưa ra cách giải quyết tốt.
4. CodeLà một SA nên ít nhất bạn cũng cần phải biết dev của mình đang làm gì, có làm đúng không,... Nếu bạn không biết thì có thể dẫn đến 2 tình huống sau:
5. DocumentArchitectural documentation thì đôi khi rất quan trọng ví dụ trong trường hợp như code guidelineds. Những tài liệu ban đầu thường sẽ là bắt buộc trước khi bắt đầu code và cần được điều chỉnh thường xuyên, liên tục. Một vài tài liệu khác được tự động tạo bằng code ví dụ như: UML class diagrams, API doc,...
6. CommunicateTừ sự quan sát của tôi thì đây là một trong số những kỹ năng được đánh giá thấp nhất. Nếu bạn khá là giỏi/xuất sắc trong việc design nhưng lại không thể diễn đạt được ý tưởng đó của bạn, suy nghĩ của bạn dường như sẽ có ít ảnh hưởng hơn hoặc thậm chí có thể fail.
7. Estimate and Evaluate
(1) Design practices: hệ thống architecture này theo pattern nào? Chúng có thường được sử dụng và sử dụng đúng cách không? Design có follow theo 1 red line hoặc có sự phát triển nào không kiểm soát được không ? cấu trúc có rõ ràng và tách biệt không ? (2) Development practices: Việc tuân theo Code guidelines như thế nào? Quản lý các version code như thế nào? Deployment practices? ConclusionNếu bạn có ý định trở thành Software Architect, con đường nghề nghiệp của bạn thường sẽ như thế này: Referencehttps://hackernoon.com/38-actions-and-insights-to-become-a-better-software-architect-f135e2de9a1b |