28 điểm bởi spilist2 2024-07-22 | 1 bình luận | Chia sẻ qua WhatsApp

Trải nghiệm debug theo cặp gần đây

  • Vấn đề: “Kết quả của một hành động cụ thể được thực hiện với nhiều item trên trang danh sách đôi khi không được phản ánh ở trang của từng item riêng lẻ”. Không xác định được đường tái hiện lỗi
  • Vừa nghe xong, tôi đã đề xuất thử kiểm tra trường hợp “đã vào trang item riêng lẻ trước, rồi quay lại trang danh sách và thực hiện hành động đó”. Đó đúng là đường tái hiện lỗi

Phiên debug theo cặp kết thúc chưa đến 5 phút, nhưng lại nảy ra một băn khoăn

  • Mình đã nhận ra điều này bằng cách nào, và tại sao đồng nghiệp này lại chưa nhận ra?
  • Làm sao có thể kéo năng lực của người này lên một cách hiệu quả hơn?

Khi làm code review và pair work với vai trò senior, chuyện này xảy ra khá thường xuyên

  • Senior nhanh chóng nhận ra những điểm hơi “có mùi” và đưa ra đề xuất cải thiện có vẻ hợp lý.
  • Junior trầm trồ rồi chấp nhận.
  • Lần sau, một vấn đề không hoàn toàn giống nhưng tương tự lại xuất hiện.
  • Senior lại nhận ra và lại đưa ra đề xuất cải thiện.
  • Junior hiểu thêm một chút, số lỗi giảm đi, nhưng không tiến bộ nhanh đến mức tôi mong muốn.

Nguyên nhân là chỉ có lời giải của senior được truyền đạt, còn quá trình nhận thức bên trong đó, tức là “đã có thể đưa ra phán đoán và quyết định ấy bằng cách nào”, thì không được truyền đạt

CDM do Gary Klein phát triển là một phương pháp tốt để phân tích quá trình nhận thức như vậy tương đối nhanh, và thậm chí có thể tự làm

  • Cues : Bạn đã thấy, nghe, ngửi... điều gì?
  • Knowledge, Source : Bạn đã dùng thông tin nào để đưa ra quyết định này, và lấy nó bằng cách nào?
  • Analogues : Bạn có được gợi nhớ đến trải nghiệm nào trước đây không?
  • Goals : Mục tiêu cụ thể của bạn ở thời điểm đó là gì?
  • Options : Bạn đã cân nhắc những hướng hành động nào khác, hoặc có những lựa chọn nào khả dụng?
  • Basis : Vì sao phương án này được chọn / các phương án khác bị loại? Bạn đã đang theo quy tắc nào?
  • Experience : Việc đưa ra quyết định này cần hoặc được hỗ trợ bởi đào tạo hay kinh nghiệm cụ thể nào?
  • Aiding : Nếu quyết định đó chưa phải tốt nhất, thì kiến thức, đào tạo hoặc thông tin nào có thể đã giúp ích?
  • Tools : Khi đưa ra quyết định này, có công cụ nào đã hỗ trợ chính quyết định đó không?
  • Time Pressure : Đã có mức áp lực thời gian như thế nào khi đưa ra quyết định này?
  • Situation Assessment : Hãy tưởng tượng tại thời điểm này bạn được yêu cầu mô tả tình huống cho một người giỏi hơn bạn (ví dụ về mặt chuyên môn), bạn sẽ tóm tắt tình huống đó như thế nào?
  • Hypothesis : Nếu một đặc điểm quan trọng của tình huống khác đi, thì điều đó sẽ tạo ra khác biệt gì trong quyết định của bạn?

Kết luận

  • Trong review PR GitHub, vốn đa phần diễn ra bất đồng bộ, tri thức ngầm của reviewer càng ít bộc lộ hơn
  • Lúc này, nếu chủ động tự đặt các câu hỏi CDM để đưa cả phần “mình đã nghĩ ra comment này bằng cách nào” vào cùng, thì năng lực của cả reviewer lẫn người viết PR đều sẽ tăng nhanh hơn rất nhiều
  • Đương nhiên, không chỉ trong phát triển phần mềm, mà ở bất kỳ lĩnh vực nào cần lao động nhận thức, CDM đều có thể được tận dụng rất tốt, dù tôi là người dạy hay là người được dạy.

1 bình luận

 
inthelife 2024-07-22

Bản dịch một phần CDM (DeepL):

  • Dấu hiệu: Bạn đã nhìn thấy, nghe thấy, ngửi thấy điều gì...?
  • Kiến thức, nguồn gốc: Bạn đã օգտագործել thông tin nào để đưa ra quyết định này và đã có được chúng bằng cách nào?
  • Tương tự: Bạn có nhớ ra kinh nghiệm trước đây nào không?
  • Mục tiêu: Mục tiêu cụ thể của bạn vào thời điểm đó là gì?
  • Phương án: Có những hướng hành động nào khác đã được cân nhắc hoặc có thể lựa chọn không?
  • Căn cứ: Phương án này đã được chọn như thế nào và các phương án khác đã bị loại bỏ ra sao? Bạn đã tuân theo quy tắc nào?
  • Kinh nghiệm: Việc đào tạo hoặc kinh nghiệm cụ thể nào là cần thiết hoặc hữu ích để đưa ra quyết định này?
  • Hỗ trợ: Nếu đó không phải là quyết định tốt nhất, thì loại đào tạo, kiến thức hoặc thông tin nào sẽ hữu ích?
  • Công cụ: Khi đưa ra quyết định này, có công cụ nào cụ thể đã giúp ích cho quyết định đó không?
  • Áp lực thời gian: Có bao nhiêu áp lực về thời gian khi đưa ra quyết định này?
  • Đánh giá tình huống: Giả sử vào thời điểm này bạn được yêu cầu giải thích tình huống cho một người cấp trên hơn mình (ví dụ: về mặt chuyên môn), thì bạn sẽ tóm tắt tình huống như thế nào?
  • Giả thuyết: Nếu các đặc điểm chính của tình huống khác đi, thì quyết định của bạn sẽ khác như thế nào?