Làm sao mình có thể đưa ra phán đoán đó?
(stdy.blog)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
Bản dịch một phần CDM (DeepL):