1.0

Xem bằng tiếng Anh

1.0 Giới thiệu Phần 1: Con người

Phần mềm do con người xây dựng, và con người được tổ chức bởi văn hóa, cấu trúc và quy trình. Vì vậy, trước khi nói về mã nguồn, kiến trúc hay công cụ, phần này xem xét hệ thống con người tạo ra tất cả những thứ đó: những giá trị chung mà một đội nhóm sống theo, cách đội nhóm tự chia thành các nhóm nhỏ, cách phát triển sự nghiệp, cách điều phối công việc hằng ngày, và cách đưa ra cũng như ghi nhớ các quyết định. Mọi thứ khác trong cuốn sách đều dựa trên những nền tảng này. Một kiến trúc tuyệt vời do một tổ chức sợ hãi, rời rạc hoặc hay quên xây dựng sẽ không thể tồn tại khi va chạm với thực tế.

Với các đội nhóm lớn, những nền tảng này không còn mang tính trực giác mà trở thành vấn đề cấu trúc. Những thực hành lan truyền một cách tự nhiên giữa tám người trong cùng một phòng sẽ tan rã giữa tám trăm người rải khắp thế giới. Vì vậy, bạn phải làm cho văn hóa trở nên tường minh, thiết kế ranh giới giữa các nhóm một cách có chủ đích, viết ra các kỳ vọng về sự phát triển, chuyển việc điều phối từ những cuộc trò chuyện ngoài hành lang sang các tài liệu bền vững, và ghi lại các quyết định để lý do đằng sau chúng tồn tại lâu hơn những người đã đưa ra chúng.

Các tổ chức doanh nghiệp và chính phủ cảm nhận từng áp lực này ở mức đầy đủ nhất. Họ làm việc ở quy mô lớn, dưới sự kiểm toán và giám sát, trong những khoảng thời gian dài, và với sự pha trộn giữa nhân viên chính thức, nhà thầu và nhà cung cấp. Một hệ thống bạn xây hôm nay có thể vận hành trong một thập kỷ, do những người chưa từng gặp bạn bảo trì. Trong những bối cảnh này, các nền tảng trong phần này không phải là kỹ năng mềm hay thứ “có thì tốt”. Chúng là bộ máy của trí nhớ tổ chức, của trách nhiệm giải trình và của quản lý rủi ro.

Các chương trong phần này

  • 1.1 Giá trị của kỹ thuật phần mềm: Những niềm tin chung và hành vi hằng ngày thực sự chi phối cách phần mềm được xây dựng, tập trung vào an toàn tâm lý, học hỏi không đổ lỗi, quyền sở hữu rõ ràng, văn hóa viết và nhịp độ bền vững.
  • 1.2 Cấu trúc đội nhóm và thiết kế tổ chức: Cách việc chia con người thành các nhóm định hình phần mềm mà họ có thể xây dựng (Định luật Conway: các tổ chức tạo ra những hệ thống phản ánh cấu trúc giao tiếp của chính họ), sử dụng các nhóm bám theo dòng giá trị, nhóm nền tảng, nhóm hỗ trợ và nhóm hệ thống con phức tạp để giảm thiểu tải nhận thức và giảm sự phụ thuộc giữa các nhóm.
  • 1.3 Vai trò, lộ trình nghề nghiệp và phát triển: Xây dựng các khung nghề nghiệp tường minh, được hiệu chuẩn với hai nhánh song song là cá nhân đóng góp và quản lý, để việc xếp bậc, thăng tiến, tuyển dụng và trả lương được công bằng, nhất quán và có thể bảo vệ được ở quy mô lớn.
  • 1.4 Cách thức làm việc: Cách các nhóm điều phối, lập kế hoạch và bàn giao công việc hằng ngày, ưu tiên nguyên tắc hơn nghi thức, và mặc định áp dụng các thực hành bất đồng bộ, lấy tài liệu làm gốc và hướng đến kết quả, có thể mở rộng qua nhiều múi giờ và lực lượng lao động hỗn hợp.
  • 1.5 Ra quyết định và quản trị: Cân bằng giữa quyền tự chủ của nhóm và sự thống nhất của tổ chức thông qua các “con đường trải sẵn”, việc rà soát vừa đủ, tư duy phân biệt quyết định có thể đảo ngược và không thể đảo ngược, và quản lý nợ kỹ thuật như một danh mục.
  • 1.6 Hồ sơ quyết định: Cách viết, lưu trữ và duy trì hồ sơ quyết định, phổ biến nhất là hồ sơ quyết định kiến trúc (ADR), để lý do đằng sau một lựa chọn tồn tại qua các đợt thay đổi nhân sự và đáp ứng yêu cầu kiểm toán, cũng như cách làm cho các quyết định dễ tìm kiếm và thậm chí có thể kiểm thử.
  • 1.7 Tiêu chuẩn kỹ thuật và ngoại lệ: Cách một tổ chức soạn thảo, công bố, thực thi và phát triển các tiêu chuẩn kỹ thuật của mình, và cách xử lý những sai lệch thông qua một quy trình ngoại lệ (miễn trừ) được quản trị và lập tài liệu, để các tiêu chuẩn giữ được uy tín mà không trở nên cứng nhắc.
  • 1.8 Tuyển dụng, phỏng vấn và hội nhập: Xây dựng đội ngũ một cách có chủ đích thông qua việc tìm nguồn ứng viên hòa nhập, các buổi phỏng vấn có cấu trúc và được hiệu chuẩn nhằm giảm thiên kiến, và một kế hoạch hội nhập thực sự giúp kỹ sư mới nhanh chóng làm việc hiệu quả và cảm thấy gắn kết, thay vì phải tự bơi hoặc chìm.
  • 1.9 Làm việc phân tán và từ xa: Vận hành xuyên nhiều địa điểm và múi giờ bằng cách mặc định cộng tác bất đồng bộ, bằng văn bản và lấy tài liệu làm gốc, thiết kế các khoảng giờ chồng lấp và bàn giao có chủ đích, và đánh giá con người dựa trên kết quả chứ không phải số giờ hay mức độ hiện diện.
  • 1.10 Hiệu quả kỹ thuật và năng suất lập trình viên: Đo lường và cải thiện mức độ hiệu quả mà các kỹ sư có thể làm việc tốt nhất của mình bằng các khung đa chiều (SPACE và trải nghiệm lập trình viên) thay vì những con số đơn lẻ dễ bị thao túng, đồng thời loại bỏ ma sát và công việc lặp đi lặp lại làm chậm các nhóm.
  • 1.11 Quản lý kỹ thuật: Nghệ thuật quản lý kỹ sư chứ không phải bản thân lộ trình nghề nghiệp: vòng lặp họp một-kèm-một, phản hồi và huấn luyện, ủy quyền, quản lý hiệu suất nhân văn, và được đánh giá là người nhân bội sức mạnh của nhóm thay vì bằng sản phẩm của riêng mình.
  • 1.12 Đa dạng, công bằng, hòa nhập và gắn kết: Xây dựng một đội nhóm nơi sự khác biệt hiện diện, được đối xử công bằng, được chủ động hòa nhập và khiến mọi người cảm thấy mình thuộc về, bởi vì các đội nhóm hòa nhập xây dựng phần mềm tốt hơn và vì đó là điều đúng đắn, với việc đo lường trung thực và không mang tính hình thức.
  • 1.13 Cố vấn, huấn luyện và chia sẻ kiến thức: Phát triển con người và lan tỏa chuyên môn một cách có chủ đích thông qua cố vấn, huấn luyện và bảo trợ, các cộng đồng thực hành, các buổi nói chuyện nội bộ, lập trình theo cặp, và tài liệu như một công cụ giảng dạy, để kiến thức tồn tại lâu hơn bất kỳ cá nhân nào và rủi ro “hệ số xe buýt” được giữ ở mức thấp.

Các chương này liên hệ với nhau như thế nào

Các chương này tạo thành một mạch xuyên suốt duy nhất. Giá trị xác định điều một tổ chức quan tâm. Cấu trúc và vai trò xác định ai làm việc và họ phát triển như thế nào. Cách thức làm việc chi phối việc con người điều phối với nhau. Quản trị và hồ sơ quyết định lưu giữ lý do đằng sau các lựa chọn của họ. Các sự phụ thuộc chạy theo đúng thứ tự đó. Văn hóa viết và an toàn tâm lý của chương 1.1 là điều kiện tiên quyết cho việc hiệu chuẩn trung thực ở chương 1.3, cho cộng tác lấy tài liệu làm gốc ở chương 1.4, và cho các hồ sơ quyết định bền vững ở chương 1.6. Ranh giới giữa các nhóm được thiết kế ở chương 1.2 là đòn bẩy chính của bạn để mở rộng quy mô điều phối ở chương 1.4, chương này công khai ưu tiên giảm nhu cầu điều phối hơn là thêm vào các khung làm việc nặng nề hơn. Các chương 1.5 và 1.6 là một cặp có chủ đích: chương đầu đặt ra triết lý quản trị, chương sau biến nó thành một thực hành bền vững.

Tầm ảnh hưởng của phần này lan ra toàn bộ cuốn sách. Cấu trúc đội nhóm ở chương 1.2 định hình kỹ thuật nền tảng ở chương 8.4 và quyền sở hữu độ tin cậy ở chương 9.1. Các hồ sơ quyết định được giới thiệu ở đây xuất hiện lại ở bất cứ nơi nào có những lựa chọn quan trọng, từ nền tảng kiến trúc ở chương 3.1 đến việc quyết định tự xây hay mua và mua sắm ở chương 10.3, và việc đảm bảo bằng hàm thích nghi của chúng kết nối với các quy trình phân phối ở chương 8.1. Việc học hỏi không đổ lỗi ở chương 1.1 là nền tảng cho quản lý sự cố ở chương 9.3, và việc ra quyết định có thể bảo vệ được, có tài liệu rõ ràng được thiết lập xuyên suốt phần này chính là điều mà công việc về rủi ro, kiểm toán và đảm bảo ở chương 10.2 phụ thuộc vào. Hãy làm đúng các nền tảng, và phần còn lại của cuốn sách sẽ dễ áp dụng hơn rất nhiều.