Hỏi Đáp

Kiến trúc sư phần mềm | TopDev

Được đăng với sự cho phép của Hoàng đế

Là dân IT hẳn mọi người không còn xa lạ với cụm từ Software Architect (SA) – ở đây tôi tạm dịch là kiến trúc sư phần mềm. Tuy nhiên không phải ai cũng hiểu được vai trò, trách nhiệm, công việc thực sự và con đường sự nghiệp của một SA. Đây là những câu hỏi mà tôi đã từng đặt ra khi bước vào những nấc thang đầu tiên của vị trí này. Tôi tự đi tìm lời giải đáp cho mình. Kiến trúc sư phần mềm

Bạn đang xem: Kiến trúc sư phần mềm là gì

Phân loại kiến ​​trúc sư phần mềm

Trên thực tế, có nhiều cách để phân loại kiến ​​trúc sư phần mềm. Tuy nhiên, ở đây tôi sử dụng cách phân loại của Microsoft. Đây cũng là một cách phân chia khá phổ biến trong ngành phần mềm hiện nay.

Ở một số công ty hiện nay ở Việt Nam, có một vị trí trong tổ chức được gọi là Kiến trúc sư kỹ thuật. Vị trí này chịu trách nhiệm phân tích, đánh giá giải pháp và xây dựng kiến ​​trúc hệ thống. Nếu nó tương ứng với phân loại trên, chúng tôi là kiến ​​trúc sư giải pháp.

Các đặc điểm cần thiết của một kiến ​​trúc sư phần mềm giỏi

Bất kể bạn là kiến ​​trúc sư phần mềm nào, bạn phải có những phẩm chất sau để đạt đến đỉnh cao trong nghề:

1. Nhạy bén về kinh tế: Mọi kiến ​​trúc sư đều phải cân nhắc giữa chi phí và lợi ích của doanh nghiệp khi đưa ra giải pháp cho bất kỳ vấn đề nào. Đây là yếu tố then chốt trong việc đánh giá hiệu quả của một giải pháp. 2. Tầm nhìn xa: Khi tham gia vào các dự án, kiến ​​trúc sư phải xem xét các giải pháp và công nghệ mới nổi, xem xét những thay đổi mới nhất trong các ngành đang phát triển … và làm thế nào để tận dụng tối đa các giải pháp hiện tại trong tương lai. 3. Nghiên cứu công nghệ mới: Kiến trúc sư phải luôn nghiên cứu các hướng kỹ thuật mới, từ đó kiến ​​trúc đến các ứng dụng và xu hướng phát triển ứng dụng 4. Hiểu và có khả năng áp dụng các framework, kiến ​​trúc hệ thống, phương pháp luận trong phát triển phần mềm 6. Có thể đối phó với những thông tin không rõ ràng. 7. Khả năng giao tiếp và giao tiếp

Làm cách nào để tôi có thể trở thành kiến ​​trúc sư phần mềm

Các kiến ​​trúc sư phần mềm đang ở trên cùng của nấc thang nghề nghiệp khi bạn chọn đi theo con đường kỹ thuật. Để trở thành một kiến ​​trúc sư phần mềm, bạn nên làm theo các bước sau: 1. Xác định loại kiến ​​trúc sư phần mềm bạn muốn trở thành 2. Xác định và phát triển các kỹ năng cần thiết. Tiếp tục bổ sung kiến ​​thức phù hợp với loại hình kiến ​​trúc sư mà bạn chọn 3. Tiếp tục thực hiện và khẳng định vai trò của kiến ​​trúc sư trong các dự án mà bạn đang tham gia. 4. Cố gắng hành nghề kiến ​​trúc sư kỹ thuật trong một công ty công nghệ lớn (Microsoft hoặc sun) và lấy chứng chỉ quốc tế. microsoft bạn cần lấy mca (kiến trúc sư chứng chỉ microsoft). Đối với sun, bạn cần phải có chứng chỉ: Barba (kiến trúc sư doanh nghiệp chứng chỉ sun)

Con đường trở thành một kiến ​​trúc sư phần mềm chuyên nghiệp hàng đầu vẫn còn một chặng đường dài. Một điều tôi luôn tâm niệm là: Bất kể ngành nghề hay vị trí nào – phấn đấu vươn lên đỉnh cao của nghề nghiệp đều có lợi ích như nhau so với các vị trí, ngành nghề khác.

Chỉ là một số điều tôi mong đợi ở một kiến ​​trúc sư phần mềm (ktspm).

Đầu tiên, ktspm phải vượt ra ngoài tầm nhìn của một kỹ sư bình thường và thực sự hiểu hệ thống. Thật kỳ lạ, các dự án tốt bắt đầu bằng cách ktspm viết một cái gọi là khung công tác cả ngày lẫn đêm (khung công tác đến từ đâu), và sau đó quay trở lại, các kỹ sư trung bình sẽ nhảy vào và viết nhiều chức năng hơn, và chúng ta có một phần mềm. Có thể có một chút trục trặc sau đó, chậm và những kstpm này sẽ quay lại để dọn rác.

Nhưng hãy để tôi kể câu chuyện về dự án mà tôi đang thực hiện. Đầu tiên chúng ta có một ktspm. Anh chàng này đã chuẩn bị mọi thứ, từ xây dựng hệ thống, cơ sở dữ liệu, mùa xuân, ngủ đông cái này cái kia, và cũng viết một chút mô hình. Và nhanh chóng rời khỏi dự án vì đó chỉ là sự trợ giúp. Sau đó, chúng tôi đã dành một thời gian dài để cố gắng giữ lại nền tảng này và muốn phá hủy nó. Khi các yêu cầu phần mềm thay đổi và các vấn đề phát sinh, bối cảnh rõ ràng là không phù hợp. Nhưng nền do kts viết. Sự thiếu chắc chắn khiến mọi thứ trong hệ thống chúng tôi xây dựng vẫn khá rời rạc và không linh hoạt. Giai đoạn này vẫn còn hai người, một người là kts và một người thân với kts. Nhưng họ cũng chỉ mã hóa một vài phần. Có thể là phần khó hơn, nhưng nó chỉ là một phần nhỏ của bức tranh tổng thể. Nó chứa các lỗi tiềm ẩn giống như nhiều phần khác. Nó cũng có thể được thực hiện bởi các kỹ sư khác trong dự án, mặc dù có thể cần một số hướng dẫn. Tóm lại, ktspm đang làm những gì các kỹ sư làm, chỉ (có thể) tốt hơn.

Vì vậy, có gì sai với dự án mà tôi đã xem qua và gặp khó khăn. Tôi có thể liệt kê một số điều rất cơ bản như bỏ qua các bước bảo mật cơ bản (anti-xss, csrf), không xây dựng giao thức (hoặc giao diện) thống nhất cho các yêu cầu, bỏ qua bộ nhớ đệm và các vấn đề về hiệu suất (bộ nhớ đệm phía máy chủ, bộ nhớ đệm phía máy khách), không hệ thống xây dựng tự động, không có cách chung chung nào để xử lý nhiều trình duyệt, v.v. Đây đều là những vấn đề có ảnh hưởng quan trọng đến thiết kế phần mềm và không thể giải quyết trong một sớm một chiều. Tất nhiên, phần mềm là một hệ thống phức tạp và một khi đã hoàn thành, việc thay đổi sẽ rất tốn kém. Vì vậy, không thể nghĩ về vấn đề này ngày hôm nay và đóng khung nó theo một cách, sau đó xem hoặc nghĩ về vấn đề khác vào ngày mai và giải quyết nó theo cách khác.

Tất nhiên, kts vẫn nên là người viết ra các thành phần quan trọng, góp phần tạo ra phần mềm tốt. Nhưng những kỹ sư giỏi cũng có thể viết những phần khó, và họ cũng có thể đọc, học và suy nghĩ. Vậy giá trị đặc biệt của ktspm nằm ở đâu và tại sao họ lại đứng trên một mức và trả nhiều tiền hơn? Tôi nghĩ điều này là do các kỹ sư giỏi chỉ có thể giải quyết các vấn đề riêng lẻ, cục bộ chứ không phải toàn bộ hệ thống. ktspm nên được hướng dẫn. Họ phải có khả năng liệt kê các yêu cầu, vấn đề hoặc thách thức mà dự án sẽ phải đối mặt trong hiện tại và tương lai. Họ phải có những quy tắc chung mà các kỹ sư có thể tuân theo để hạn chế sai sót. Họ phải biết cách phân bổ nhân lực hợp lý cho từng công việc. Họ phải hiểu tình trạng phát triển phần mềm hiện tại để xác định các vấn đề hoặc cải tiến cần được thực hiện một cách thực sự chính xác và rõ ràng.

(Vui lòng giải lao và trả lời câu hỏi này. Nếu bạn bối rối, có lẽ không phải kstpm.)

Không chỉ vượt ra khỏi tầm kỹ sư, ktspm còn cố gắng vượt ra khỏi tầm nhìn của sếp. Đó không phải là về doanh nghiệp, mà là về chức năng của phần mềm. Họ phải có khả năng trừu tượng hóa các yêu cầu cụ thể để có được sự hiểu biết rộng rãi về chức năng, trong đó các yêu cầu của nhà phân tích nghiệp vụ chỉ là một sự lựa chọn, một hướng đi cụ thể của thực tế. Ý định của mọi người thay đổi rất nhanh và các yêu cầu cũng vậy, vì vậy các lập trình viên không có lý do gì để tin rằng những gì họ phải làm bây giờ sẽ không thay đổi mãi mãi. Chuẩn bị sẵn sàng cho những lựa chọn chưa xảy ra sẽ giúp phần mềm thích ứng linh hoạt với nhu cầu và yêu cầu của thị trường. Điều quan trọng là công việc của kstpm là thấy trước những thay đổi của hệ thống, không ai khác phải nói điều đó, và họ không thể đổ lỗi cho các nhà phân tích kinh doanh hoặc người dùng làm không tốt.

Ví dụ: hãy cung cấp hỗ trợ dấu trang cho các ứng dụng web nặng ajax. Nếu trạng thái của một trang web, chẳng hạn như tab nào đang mở, nội dung nào đang hiển thị, không được hiển thị trên địa chỉ, người dùng sẽ không thể nhanh chóng trở lại trạng thái đó thông qua dấu trang. Tuy nhiên, các yêu cầu phần mềm thường quên điều này và việc sửa đổi thiết kế của một ứng dụng để hỗ trợ điều này có thể rất phức tạp nếu không được thiết kế ngay từ đầu. Vì vậy, ktspm phải biết cách dự đoán và đáp ứng chức năng ngay cả khi không có yêu cầu.

Tóm lại, kstpm trước tiên phải có khả năng nhìn xa và trừu tượng, không chỉ để xây dựng khuôn khổ cho dự án mà còn phải có các tiêu chuẩn, quy định và hướng dẫn.

Điều thứ ba, về cách ktspm làm việc với nhân viên (sẽ không được viết ở đây).

Nguồn: fly2universe.wordpress.com

Bài báo gốc được xuất bản trên edwardthienhoang.wordpress.com

Bạn có thể quan tâm:

  • Phát triển ngôn ngữ lập trình
  • Khái niệm cơ bản về kiến ​​trúc phần mềm
  • 10 điều mà mọi nhà phát triển ứng dụng Android nên biết về kiến ​​trúc
  • Xem thêm các công việc thú vị dành cho nhà phát triển trên topdev

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Back to top button