Hãy tiếp tục loạt bài viết về Software Architect. Trong mọi lĩnh vực hoạt động nghề nghiệp đều có các chuyên ngành khác nhau. Ví dụ, trong y học có phẫu thuật, tim mạch, nhãn khoa, nha khoa, ...
Sự chuyên môn hóa là cần thiết khi lượng kiến thức trong lĩnh vực này vượt quá giới hạn hợp lý. Và vì kiến trúc phần mềm là một lượng lớn kiến thức, điều cần thiết là phải giảm bớt nhiệm vụ của một người để có năng suất tốt hơn. Do đó, các loại kiến trúc sư phần mềm sẽ được thảo luận trong bài viết này.
Hãy xem xét sự phân loại sau:
Tôi thường nghe câu hỏi - liệu một kiến trúc sư có thể tồn tại trong các ứng dụng di động không? Và câu hỏi này gây được tiếng vang lớn đến nỗi thật khó để có được một câu trả lời hợp lý cho nó. Có thể có một kiến trúc sư chỉ biết ngăn xếp công nghệ JavaEE, hoặc chỉ .NET? Những chuyên gia này nên được gọi như thế nào? Công nghệ dẫn đầu hay cái gì khác?
Trong khi suy nghĩ, làm thế nào để trả lời câu hỏi này, tôi đã thay đổi suy nghĩ của mình vài lần, trong sự nghiệp của mình. Trong các cuộc trao đổi của tôi với các chuyên gia giữ chức vụ kiến trúc sư chuyên môn cao, họ đương nhiên cố gắng đưa ra những lý lẽ để biện minh cho quan điểm của mình. Những người khác nói rằng điều đó là vô nghĩa và bạn nên gọi một người như vậy là bất cứ thứ gì, nhưng không phải là kiến trúc sư.
Hãy xem xét một tình huống trong đó một công ty khởi nghiệp ba người có một CEO (giám đốc điều hành), một CTO (giám đốc kỹ thuật) và một CMO (giám đốc tiếp thị). Có thể có một nhân viên kỹ thuật cho một nhà phát triển không? Hay một nhân viên tiếp thị cho một bộ phận của một chuyên gia? Có thể xác định xem một cấp bậc hư cấu là để theo đuổi một danh lợi hay một nhu cầu thực sự?
Chúng ta hãy cố gắng trả lời những câu hỏi này. Có đăng thì phải có mô tả công việc mà chuyên viên làm. Đối với các kiến trúc sư, chúng tôi đã mô tả chúng trong bài viết trước.
Trong các dự án lớn, có những bài viết có hướng dẫn trùng với những gì được mô tả trong bài viết trên. Nếu dự án bao gồm một hoặc nhiều nền tảng, thì mỗi nền tảng yêu cầu một chuyên gia đóng vai trò là kiến trúc sư miền và thực hiện các nhiệm vụ sau:
Một kiến trúc sư miền phải kiểm soát toàn bộ chu trình phát triển sản phẩm. Và là người gần nhất với thành phần kỹ thuật của nền tảng, đồng thời, nhìn nó như một bức tranh toàn cảnh, kiến trúc sư hoàn toàn chịu trách nhiệm về chất lượng của sản phẩm trên một nền tảng cụ thể.
Do đó, có một số lượng lớn các loại kiến trúc sư miền khác nhau:
Bức tranh chỉ cho thấy một phần nhỏ của kiến trúc sư miền. Trên thực tế, có rất nhiều loại kiến trúc sư miền, cũng như các ngăn xếp công nghệ khác nhau.
Mặt khác, chỉ cần bổ sung chức vụ của kiến trúc sư khi đã rõ trách nhiệm tương ứng. Nếu bạn có một dự án từ một nền tảng và hai nhà phát triển, thì việc thêm một vị trí của kiến trúc sư là không cần thiết và một trong các nhà phát triển có thể thực hiện các nhiệm vụ này.
Để xem xét chủ đề này, chúng ta hãy sử dụng khái niệm về mô hình T-Shape. Nó giả định rằng một chuyên gia có thể phát triển theo chiều dọc và chiều ngang. Tăng hàng dọc có nghĩa là cải thiện các kỹ năng trong chuyên môn của bạn, tức là kiến thức sâu. Tăng hàng ngang có nghĩa là có được kỹ năng và kinh nghiệm trong nhiều lĩnh vực miền và nền tảng công nghệ, nghĩa là trải nghiệm rộng. Bằng cách kết hợp hai tính năng này, bạn có thể nhận được thông tin về mức độ kiến thức và kinh nghiệm hiện tại của nhân viên bất kỳ lúc nào.
Ví dụ: mức tăng trưởng cấp nhà phát triển được mô tả bằng thanh dọc. Nhà phát triển học kiến thức mới về các khuôn khổ, ngôn ngữ và công cụ phát triển trong giới hạn của một ngăn xếp kỹ thuật. Tuy nhiên, kiến trúc sư không chỉ phải có kiến thức sâu rộng mà còn phải có hiểu biết rộng về kỹ thuật trên nhiều nền tảng.
Đồng thời, sự phát triển của kiến trúc sư liên quan chặt chẽ đến số lượng nền tảng mà anh ấy / cô ấy có chuyên môn lý thuyết và chủ yếu là thực hành, và cũng với số lượng lĩnh vực mà anh ấy / cô ấy biết. Mục tiêu phát triển nghề nghiệp của kiến trúc sư là hình thành chuyên gia “m” - đa nền tảng & đa lĩnh vực.
Tại thời điểm này, chúng ta hoàn thành việc xem xét các loại kiến trúc sư. Trong phần tiếp theo, chúng ta sẽ xem xét các thuộc tính chất lượng và cách sử dụng chúng trong kiến trúc phần mềm.
Bạn có thể vui lòng tắt trình chặn quảng cáo ❤️ để hỗ trợ chúng tôi duy trì hoạt động của trang web.
Các bên liên quan (Stakeholder) là ai? Họ có ảnh hưởng gì tới dự án? Làm sao để xác định, phân loại và quản lý các bên liên quan của dự án?
Kiến trúc sư phần mềm (software architect) là ai? Vai trò và trách nhiệm của software architect là gì? Làm sao để trở thành một software architect.