Software Architect: Con đường trở thành một Software Architect

Bạn có bao giờ tự hỏi rằng một developer có những cơ hội nghề nghiệp nào không? Những hướng đi nào, những chân trời nào để phát triển. Và quan trọng nhất, những developer ngoài 45 tuổi đang ở đâu? Có developer nào trong số bạn bè của bạn trên 45 tuổi không?

Tôi biết một số developer ngoài độ tuổi này, và nhiều người trong số họ là những developer hạng nặng, những người thậm chí đã nhìn thấy những đột phá vào thời đó.

Có một số con đường sự nghiệp mà một developer có thể thực hiện:

  • Điều đầu tiên và hiển nhiên là phát triển trong lĩnh vực mà bạn đang làm việc. Nếu bạn là một junior developer, hãy trở thành một developer, sau đó là senior developer và leader.
  • Chuyển đổi sang nền tảng công nghệ khác. Một số lượng đáng kể developer đã chuyển sang lĩnh vực di động khi hệ điều hành iOS và Android giành được vị thế.
  • Phát triển vai trò quản lý. Là một developer, vấn đề lớn nhất về nhân sự mà tôi thấy là sự thiếu hụt các nhà quản lý có năng lực. Các nhà quản lý thông minh rất đắt tiền, do đó chúng trở nên khan hiếm. Nếu người quản lý có nền tảng kỹ thuật, điều đó sẽ cho phép anh ta có cùng bước sóng với các nhà phát triển.
  • Trở thành Software Architect. Hướng này sẽ được đề cập trong loạt bài viết này.
  • Thoát khỏi ngành CNTT. Đôi khi điều này xảy ra. Không bao giờ là quá muộn để làm những gì bạn thích làm.

Loạt bài viết về Software Architect

  1. Con đường trở thành kiến ​​trúc sư phần mềm (bài viết này)
  2. Các bên liên quan (Stakeholder).
  3. Phân loại Software Architect.
  4. Các thuộc tính chất lượng trong Software Architecture.
  5. Tài liệu về Software Architecture.
  6. Chứng chỉ về Software Architecture.
  7. Sách về Software Architecture.
  8. Cheatsheet thiết kế hệ thống.

Ai có thể hưởng lợi từ loạt bài viết này?

Loạt bài viết này sẽ giúp ích cho bạn nếu bạn thuộc một trong các trường hợp sau:

  • Developer hoặc kỹ sư CNTT. Bạn vẫn đang phát triển với tư cách là một developer, nhưng bạn đang nhìn về phía trước và lập kế hoạch cho sự nghiệp của mình. Ngay cả khi các mục tiêu ban đầu rất mơ hồ, một người đặt ra các mục tiêu chiến lược một cách có ý thức sẽ đạt được chúng nhanh hơn nhiều so với một người không lên kế hoạch về mục tiêu họ muốn hướng tới.
  • Trưởng nhóm, kỹ sư phần mềm chính. Bạn đang ở giai đoạn cao nhất của kỷ luật phát triển phần mềm. Để phát triển hơn nữa, bạn có thể lựa chọn học thêm một công nghệ, theo đuổi sự nghiệp bên ngoài kỹ thuật phần mềm hoặc trở thành kiến ​​trúc sư phần mềm.
  • Kiến trúc sư phần mềm. Bạn gần đây đã đảm nhận vị trí này hoặc đã làm việc trong lĩnh vực này trong một thời gian dài. Có lẽ một trong những phẩm chất chính của một chuyên gia như vậy là sự hiểu biết rằng luôn có những lĩnh vực mà một người không biết và quá trình học hỏi diễn ra liên tục.
  • Giám đốc CNTT. Mặc dù bạn là một người quản lý, bạn hoàn toàn hiểu rằng ít nhất bạn nên hiểu những gì cấp dưới hoặc đồng nghiệp của bạn đang làm. Vấn đề cấp bách của quản lý là sự kém cỏi về kỹ thuật của người quản lý trong lĩnh vực mà người đó đang quản lý.

Software Architect là ai?

Trước khi chuyển sang các câu hỏi cụ thể hơn, cần phải xác định kiến ​​trúc sư phần mềm (Software Architect) là ai? Vai trò và trách nhiệm của kiến ​​trúc sư phần mềm là gì?

Kiến trúc sư phần mềm (Software Architect) là một chuyên gia phần mềm, người tạo ra các thiết kế cấp caocố gắng thực thi các tiêu chuẩn kỹ thuật, bao gồm cả tiêu chuẩn viết code, công cụ và nền tảng. Chuyên gia đầu ngành được gọi là kiến ​​trúc sư trưởng. (theo Wikipedia)

Giống như hầu hết các vị trí cấp cao, không có tiêu chí rõ ràng nào xác định vai trò này. Tuy nhiên, có thể xác định một số trách nhiệm và phẩm chất đóng góp vào sự nghiệp của kiến ​​trúc sư phần mềm.

Đầu tiên, hãy xem xét các đặc điểm của kiến ​​trúc sư phần mềm:

  • Khả năng giao tiếp. Đã từng nói chuyện với nhiều kiến ​​trúc sư phần mềm, tôi được biết rằng đây là một trong những đặc điểm rất cần thiết. Trong một ngày làm việc, họ phải nói chuyện với khách hàng bằng ngôn ngữ kinh doanh, nhà quản lý các cấp, nhà phân tích kinh doanh và nhà phát triển. Nếu bạn có một sức hút tự nhiên và bạn biết cách thuyết phục mọi người, thì đây sẽ là một điểm cộng rất lớn, vì điều quan trọng là phải giải thích hành động của bạn một cách chính xác. Kiến trúc sư là những diễn giả giỏi, hùng biện và có năng lực. Các kiến ​​trúc sư phần mềm mà tôi đã nói chuyện có kỹ năng giao tiếp và thuyết phục rất phát triển. Một lý do khác tại sao đặc điểm này lại quan trọng nhất là kiến ​​trúc sư tham gia vào hầu hết các quá trình thảo luận và thường phải đạt được các thỏa hiệp có thể chấp nhận được và có lợi cho tất cả các bên liên quan.
  • Kiến thức kỹ thuật rộng và sâu. Đó là điều hiển nhiên vì một người không thể trở thành một kiến ​​trúc sư phần mềm với nền tảng y tế. Bên cạnh đó, kiến ​​trúc sư thường có chuyên môn về một số công nghệ ở mức khá và nên hiểu biết tốt về một số công nghệ khác. Kiến trúc sư phần mềm cũng nên chuẩn bị để soạn một số lượng lớn tài liệu kỹ thuật, báo cáo và sơ đồ.
  • Trách nhiệm. Bạn nên hiểu rằng các quyết định của kiến ​​trúc sư thường tốn kém nhất. Vì vậy, một người ở vị trí này nên có cách tiếp cận có trách nhiệm nhất đối với công việc của mình và các quyết định được đưa ra. Nếu sai sót của developer tiêu tốn vài ngày làm việc của một người, thì sai lầm của kiến ​​trúc sư có thể khiến người ta phải trả giá hàng năm cho những dự án phức tạp!
  • Chống căng thẳng. Bạn sẽ phải đưa ra quyết định bởi vì trong vai trò này, bạn sẽ được yêu cầu làm như vậy, và bạn sẽ cần phản hồi. Bạn sẽ làm việc với những người khác nhau từ các lĩnh vực khác nhau, và bạn sẽ phải đối phó với những nhu cầu thay đổi nhanh chóng hoặc thậm chí với sự thay đổi của môi trường kinh doanh. Vì vậy, cần phải sẵn sàng với căng thẳng và tìm kiếm một số cách để thoát khỏi cảm xúc tiêu cực. Công việc luôn dễ chịu hơn khi nó mang lại niềm vui. Vì vậy, nếu bạn chọn vai diễn này chỉ vì tiền, thì hãy suy nghĩ lại.
  • Kỹ năng quản lý. Điều này bao gồm cả kỹ năng tổ chức và lãnh đạo. Khả năng lãnh đạo một nhóm, có thể được phân bổ và bao gồm các chuyên gia rất khác nhau, là điều cần thiết.
  • Kỹ năng phân tích. Ngay cả khi một chuyên gia có hiểu biết rộng về công nghệ, anh ta đã thử nhiều việc một mình hoặc tham gia vào các dự án thuộc nhiều loại khác nhau. Nó không đảm bảo rằng anh ta có thể dễ dàng thay đổi phong cách tư duy thành một kiến ​​trúc sư. Một trong những nhiệm vụ có giá trị nhất là khả năng biểu diễn một vấn đề trừu tượng dưới dạng một đối tượng thực hữu hạn nào đó của hệ thống mà các nhà phát triển đã và đang đánh giá, thiết kế và phát triển. Kỹ năng giao tiếp xuất sắc là điều cần thiết để đại diện cho sự trừu tượng dưới dạng hệ thống cuối cùng cho các thành viên trong nhóm và khách hàng. Nó sẽ là cần thiết để giao tiếp với cả những người kinh doanh và các nhà phát triển, điều này vẫn phải được thực hiện.

Nếu chúng ta nói về trách nhiệm của kiến ​​trúc sư, thì đây là ví dụ hoàn hảo từ thế kỷ 19 về việc xây dựng cầu. Vào thời điểm đó, các bài kiểm tra của cây cầu mới được xây dựng như sau: nhóm kỹ sư, kiến ​​trúc sư và công nhân chủ chốt đứng dưới gầm cầu trong khi những chiếc xe đầu tiên đang ở trên đó. Vì vậy, họ đặt cuộc sống của mình vào việc xây dựng và sức mạnh của cấu trúc. Vì vậy, nếu có một câu hỏi - trách nhiệm của kiến ​​trúc sư phần mềm đối với dự án là gì? Câu trả lời là, anh ấy phải chịu trách nhiệm về mọi thứ.

Nếu bạn từ bỏ những cụm từ hoa mỹ, thì công việc của kiến ​​trúc sư bao gồm:

  • Xác định các bên liên quan trong dự án.
  • Xác định các yêu cầu kinh doanh và các yêu cầu của các bên liên quan trong dự án.
  • Thiết kế toàn bộ hệ thống dựa trên các yêu cầu đã nhận.
  • Lựa chọn kiến ​​trúc hệ thống và từng thành phần của hệ thống này ở mức cao.
  • Lựa chọn công nghệ để thực hiện từng bộ phận và kết nối giữa các bộ phận.
  • Đánh giá kiến ​​trúc. Vâng, vâng, nó tồn tại.
  • Đánh giá code.
  • Viết tài liệu dự án và hỗ trợ nó.
  • Tạo ra các tiêu chuẩn phát triển thống nhất trong công ty.
  • Kiểm soát kiến ​​trúc trong lần lặp lại tiếp theo của bản phát hành hệ thống.

Nó chỉ là một tập hợp con các trách nhiệm của kiến ​​trúc sư phần mềm. Trách nhiệm quan trọng nhất là hỗ trợ kỹ thuật đầy đủ cho dự án từ thời điểm bắt đầu, thông qua việc phát triển các cải tiến, đến khi phát hành sản phẩm. Và hỗ trợ các bản phát hành tiếp theo. Sẽ cần phải chuyển đổi rất nhiều giữa các công việc khác nhau trong ngày làm việc.

Làm thế nào để trở thành một Software Architect?

Để bắt đầu, điều cần thiết là phải xác định các mục tiêu quan trọng dẫn đến việc đạt được mục tiêu chiến lược của bạn là trở thành một kiến ​​trúc sư phần mềm. Đối với tôi, những mục tiêu như vậy trong sáu tháng tới là:

  • Hiểu và thử một số công nghệ. Software Architect là một nhà phát triển toàn diện, vì vậy điều cần thiết là phải có kiến ​​thức kỹ thuật sâu rộng.
  • Đọc sách. Cần phải xác định những cuốn sách và bài báo có giá trị nhất sẽ giúp phát triển theo hướng này. Thông thường, cách hiệu quả nhất để tìm tài liệu như vậy là hỏi các chuyên gia khác trong lĩnh vực này để được giới thiệu. Một trong những bài viết trong tương lai, tôi dự định cung cấp cho bạn một danh sách những cuốn sách và bài báo như vậy.
  • Tìm một người cố vấn. Bạn nên tìm một kiến ​​trúc sư phần mềm tại nơi làm việc hiện tại của mình. Lấy kinh nghiệm từ một chuyên gia được đào tạo luôn dễ dàng hơn là bắt đầu xem xét một lĩnh vực cụ thể từ đầu. Điều cần thiết là phải chuẩn bị để hỏi những câu hỏi phù hợp từ người cố vấn của bạn.
  • Học các khóa học / lấy chứng chỉ . Có rất nhiều khóa học và chứng chỉ có sẵn, nhưng chỉ có một số là đáng đồng tiền của chúng, còn các khóa học cấp cao hơn thì tốn rất nhiều tiền. Đối với các chứng chỉ, trước khi bắt đầu, tốt nhất bạn nên hiểu liệu có hệ thống chứng nhận có thẩm quyền cho kiến ​​trúc sư hay không và liệu việc lấy chứng chỉ có đáng giá hay không. Điểm này tôi sẽ thảo luận trong một bài viết trong tương lai của loạt bài này.

Một trong những phần thiết yếu là xem xét kế hoạch rõ ràng và ổn định. Những gì đã được thực hiện, những gì cần được xem xét lại, và nơi nào để tăng tốc hoặc mục tiêu nào để loại bỏ là vô ích.

Kiểm tra mức độ sẵn sàng của bạn

Nếu bạn quan tâm đến bài viết giới thiệu này từ loạt bài về cách trở thành một kiến ​​trúc sư phần mềm, hoặc nếu bạn đột nhiên có ý định thử con đường này, thì bạn nên chắc chắn rằng bạn muốn nó.

Thứ nhất, mọi người sợ mọi thứ mới. Một vị trí mới, một loại căng thẳng mới, trái ngược với hiện trạng thoải mái. Tất nhiên, sự lựa chọn không phải lúc nào cũng rõ ràng và phụ thuộc vào mức độ bạn sẵn sàng thay đổi điều gì đó trong cuộc sống của mình. Đồng thời, nó có thể phụ thuộc không chỉ vào bạn mà còn phụ thuộc vào gia đình, cam kết tài chính của bạn, cha mẹ và các yếu tố khác.

Thứ hai, con đường này mất vài năm. Quá trình trở thành một kiến ​​trúc sư phần mềm không diễn ra trong một sớm một chiều. Là trưởng nhóm, tôi nhận ra mình phải làm gì và làm thế nào để đối phó với căng thẳng chỉ một năm sau khi tôi được bổ nhiệm vào vị trí chính thức. Đồng thời, sáu tháng trước đó, tôi đã biểu diễn nó một cách không chính thức. Một kiến ​​trúc sư phần mềm mà tôi biết nói rằng anh ấy hiểu trách nhiệm của mình là gì 18 tháng sau khi anh ấy được thăng chức vào vai trò này. Khoảng thời gian như vậy là hợp lý và bạn cần biết liệu mình đã sẵn sàng để đi theo hướng này hay chưa. Ngay cả khi bạn không có sẵn một kế hoạch ổn định, tốt hơn là bạn nên bắt đầu thực hiện những bước nhỏ giúp bạn tiến lên phía trước, thay vì giữ nguyên vị trí cũ.

Career Path
Bài Viết Liên Quan:
Software Architect: Phân loại Software Architect
Trung Nguyen 08/01/2021
Software Architect: Phân loại Software Architect

Software Architect - bài viết này sẽ giúp bạn tìm hiểu có những loại kiến trúc sư nào? Vai trò của họ là gì?

Software Architect: Các bên liên quan (Stakeholder)
Trung Nguyen 02/01/2021
Software Architect: Các bên liên quan (Stakeholder)

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?