Bạn biết Software Architect là gì chưa?
Software Architect (SA) là người chịu trách nhiệm thiết kế bộ khung cho hệ thống, thực hiện cách phân chia và chi tác giữa các component. Ngoài ra, họ còn có nhiệm vụ viết các tài liệu kiến trúc tổng quan, coding convention cũng như hướng dẫn các developer phát triển các bản thiết kế chức năng chi tiết.
Chính vì thế, nếu như là việc với 1 SA tốt và khi thêm các tính năng mới thì độ phức tạp của các phần mềm sẽ không bị gia tăng nhiều.
Một vài khái niệm khác liên quan đến Architect
Định nghĩa Solution Architect
Solution Architect sở hữu vai trò bao quát tương đối rộng như: Họ có nhiệm vụ tham gia trực tiếp vào đội ngũ kinh doanh, nắm rõ các vấn đề liên quan đến kinh doanh với khách hàng rồi đưa ra đề xuất các giải pháp thiết kế hệ thống theo dạng tối ưu hóa hoạt động.
Và cụ thể những công việc mà một Solution Architect cần phải đảm nhận sẽ bao gồm:
- Mặc dù không trực tiếp thiết kế phần mềm nhưng họ có nhiệm vụ thiết kế tính năng lớn, kết hợp các giải pháp công nghệ. Từ đó, đề ra những giải pháp thiết kế dựa trên sự hiểu biết về giải pháp kinh doanh của doanh nghiệp cũng như khách hàng.
- Nắm rõ các xu hướng công nghệ mới để hiểu rõ hơn về các giới hạn của giải pháp, cho khả năng mở rộng cũng như kéo dài khả năng bảo trì trong tương lai.
- Solution Architect có nhiệm vụ đưa ra độ ưu tiên cho các giải pháp các cần được triển khai.
Khái niệm Technical Architect
Technical Architect được dịch sang tiếng việt là kiến trúc sư kỹ thuật, họ không phải là người thực hiện công trình đó nhưng họ là người trung gian thực hiện công trình. Từ đó, đảm bảo cho công trình giúp mọi người có thể sử dụng và có thể phát huy được mọi đặc tính thẩm mỹ cho công trình.
Những người kiến trúc sư kỹ thuật họ thường xuyên phải làm việc trên máy tính cũng như thiết kế các phần mềm ứng dụng máy tính dành cho con người.
Công việc của một Technical Architect rất đơn giản họ đảm nhiệm công việc thiết kế cho các công trình cũng như quy hoạch cho các dự án.
Tuy nhiên, một kiến trúc sư kỹ thuật không làm việc độc lập mà làm việc với rất nhiều kiến trúc sư và chuyên gia khác để mang lại giá trị lớn nhất cho chính dự án mà họ đảm nhận.
Công việc của một Software Architect
- Công việc quyết định công nghệ và platform phát triển
- Tạo các tài liệu dạng kiến trúc tổng quan (coding standards, tools, review processes,…)
- Hiểu được business requirements
- Thiết kế base hệ thống dựa trên requirements
- Check/review code và hệ thống dựa trên việc theo sát dev
Kỹ năng cần thiết của một Software Architect
Kỹ năng Design
- Là người có hiểu biết nhất định và kiến thức design cơ bản: design pattern có vai trò không nhỏ để maintain một hệ thống và làm SA phát triển
- Đi sâu vào anti-pattern và pattern: bạn nên mở rộng kiến thức thêm về software design pattern khi đã biết một vài pattern cơ bản. Có thể tham khảo qua cuốn sách Enterprise Integration Patterns: Designing, Building ,and Deploying Messaging Solutions.
- Trải nghiệm cũng như hiểu rõ các stack công nghệ khác nhau, đây là một trong những hành động quan trọng mà một SA cần phải biết đến. Khi thử nghiệm về công nghệ mới sẽ giúp bạn nắm rõ hơn về các khía cạnh design nhau. Từ đó, đưa ra được những ý tưởng dựa trên phân tích và hiểu được pattern sao cho phù hợp nhất.
Kỹ năng về Decide
Một SA giỏi sẽ biết cách đưa ra quyết định để lead project hoặc team đi theo hướng đúng.
- Một Software Architect không nên lãng phí thời gian vào những việc không quan trọng mà cần phải biết phân loại để giải quyết các công việc trọng tâm trước. Chính vì vậy, nếu như bạn quyết định làm việc theo một cách nào đó thì nên tập trung theo cách đó nếu như đó là cách làm việc đơn giản nhất và có thể dẫn đến một concept dễ hiểu, đơn giản và dễ bảo trì.
- Nên áp dụng một naming conventions ở bất cứ đâu bởi vì nó không chỉ là chữ hoa hay chữ thường.
- Nên biết cách đưa ra quyết định như thế nào là đúng và như thế nào là sớm. Đôi khi việc đưa ra quyết định sớm sẽ mang lại rất nhiều lợi ích cho dự án của bạn.
Biết cách Simplify
- Chú trọng định hình cách giải quyết theo hướng top-down hoặc bottom-up để đưa ra cách giải quyết vấn đề đơn giản nhất. Nếu như bạn đang có data flow hoặc một quy trình thì chỉ cần nghĩ theo hướng từ trái sang phải hoặc ngược lại là được.
- Nên chia nhỏ vấn đề để có thể giải quyết một cách dễ dàng hơn. Để có cái nhìn tổng quát hơn thì sau khi validate chúng ta nên match chúng lại.
- Khi hiện tại chưa tìm ra giải pháp tốt hơn,hãy chấp nhận giải quyết theo hướng phức tạp hơn. Hãy đảm bảo rằng bạn có một automated tests để đảm bảo rằng các function trong hệ thống hoạt động một cách chính xác nhất và nhận được sự đồng ý từ stakeholders
Kỹ năng Code
- Trải nghiệm công nghệ là mục đích của side project, chứ không chỉ đơn thuần là đọc những kiến thức trong sách vở
- Việc biết tất cả mọi thứ(mọi công nghệ mới) rất tốn thời gian và vì nó dường như vô kể nên điều đó là không cần thiết. Bạn có thể ghé đọc các trang về công nghệ để nắm bắt được xu hướng hiện nay và có cái nhìn một cách tổng quan
Biết rõ về Document
- Có thể nói Code là tài liệu tốt nhất nhưng với điều kiện nó được viết đúng cách. Bạn phải biết review và có thể phân biệt được good code và bad code khi bạn là một SA
- Vì hệ thống liên tục thay đổi nên để update doc liên tục là một việc rất khó. Vậy nên các tool như Swagger hay RAML rất có ích trong việc này
Có kỹ năng Communicate
Nếu như bạn là người xuất sắc trong việc design nhưng lại không diễn đạt được các ý tưởng của mình thì suy nghĩ và ý tưởng có thể sẽ bị ảnh hưởng ít nhiều. Với kỹ năng Communicate thì bạn cần phải chú trọng thực hiện:
- Là một SA giúp bạn có thể tham gia dễ dàng các cuộc họp mà bạn thường xuyên phải điều hành và moderate về nó. Chính vì vậy, cần biết cách để diễn đạt suy nghĩ cũng như ý tưởng của mình.
- Bạn cần biết cách diễn đạt các ý tưởng trong một nhóm team nhỏ hoặc một group sẽ giúp bạn có thể trau dồi điều này. Điều này sẽ hơi khó nên bạn cần biết cách diễn đạt để đưa ra ý tưởng để trau dồi kỹ năng cho chính mình.
- Một SA phải biết cách giải quyết các vấn đề của từng cá nhân nhỏ và cần chú trọng nhìn về nhiều vấn đề khác nhau.
- Bạn cần thường xuyên tạo ra các slide tổng hợp lại từ các Q và A mà bạn sẽ show được cũng như giải thích cho những người có liên quan hiểu rõ hơn về nó.
Tổng kết
Nếu như bạn có ý định trở thành một Software Architect thì việc trau dồi kiến thức liệt kê ở phía trên là vô cùng quan trọng. Hy vọng rằng, với kiến thức mà chúng tôi đã cung cấp sẽ giúp ích được cho bạn khi nhìn về vị trí SA. Nên nhớ rằng không có công việc nào là nhàn hạ nếu như có ý định đi theo ngành nghề này thì đừng quên nỗ lực học tập cũng như trau dồi kiến thức nhé!
Theo blog.inavi.com
Japan IT Works