Phát triển
- Bắt đầu nhỏ rồi mở rộng: Khi xây dựng một hệ thống mới hoặc thêm tính năng vào hệ thống hiện có, hãy bắt đầu với một phiên bản rất đơn giản, gần như không có tính năng cần thiết, rồi mở rộng dần
- Chỉ thay đổi từng thứ một: Khi kiểm thử thất bại hoặc tính năng không hoạt động trong quá trình phát triển, nếu bạn chỉ thực hiện một thay đổi tại một thời điểm thì việc tìm ra vấn đề sẽ dễ hơn rất nhiều
- Thêm logging và xử lý lỗi từ sớm: Khi phát triển một hệ thống mới, việc thêm logging và xử lý lỗi ngay từ đầu sẽ rất hữu ích
- Mỗi dòng mã mới nên được chạy ít nhất một lần: Cần kiểm thử trước khi tính năng hoàn thiện
- Kiểm thử từng phần trước khi kiểm thử toàn bộ: Những phần đã được kiểm thử kỹ sẽ giúp tiết kiệm thời gian
- Mọi việc đều mất nhiều thời gian hơn bạn nghĩ: Đặc biệt trong lập trình, mọi thứ thường kéo dài hơn dự kiến
- Hiểu mã hiện có trước: Trước khi thêm tính năng mới, bạn cần hiểu giải pháp hiện tại. Đọc mã là một kỹ năng cần thiết không kém gì viết mã
- Đọc và chạy: Có hai cách bổ trợ cho nhau để hiểu mã: đọc mã và chạy mã
Giải quyết vấn đề
- Bug luôn tồn tại: Cách tiếp cận "làm đúng ngay từ đầu" không phải là cách hay
- Xử lý báo cáo sự cố: Lập trình viên nên dành thời gian xử lý các báo cáo sự cố từ khách hàng và sửa bug. Điều này giúp hiểu rõ hơn nhiều về việc khách hàng đang cố làm gì, hệ thống được sử dụng như thế nào, việc giải quyết sự cố dễ hay khó ra sao, và hệ thống được thiết kế tốt đến mức nào
- Tái hiện vấn đề: Bước đầu tiên để sửa bug là tái hiện được vấn đề. Sau đó, khi đã thêm bản sửa, hãy xác nhận rằng vấn đề đã biến mất
- Sau khi sửa các lỗi đã biết, kiểm tra xem còn lại gì: Khi có nhiều vấn đề, hãy sửa tất cả các vấn đề đã biết rồi xem những triệu chứng nào còn lại
- Đừng giả định đó chỉ là trùng hợp: Khi kiểm thử và xử lý sự cố, đừng tin vào sự trùng hợp mà hãy điều tra. "Bạn thay đổi giá trị timer và giờ hệ thống khởi động lại thường xuyên hơn? Đó không phải trùng hợp. Thêm tính năng mới mà một tính năng không liên quan lại chậm đi? Cũng không phải trùng hợp. Hãy điều tra thêm"
- Liên hệ bằng timestamp: Khi xử lý sự cố, hãy tận dụng timestamp của các sự kiện
Hợp tác
- Trao đổi trực tiếp có băng thông cao nhất: Khi thảo luận cách giải quyết vấn đề, trao đổi trực tiếp tốt hơn mọi phương thức khác (video, điện thoại, chat, email)
- Rubber duck debugging: Khi bị mắc kẹt với một vấn đề, việc giải thích nó cho đồng nghiệp nghe có thể khiến bạn tự nhận ra lời giải. Ngay cả khi đồng nghiệp không nói gì, chỉ cần trò chuyện thôi cũng thường giúp bạn nhận ra vấn đề nằm ở đâu. Nghe có vẻ như phép màu, nhưng nó hoạt động đáng ngạc nhiên là rất thường xuyên
- Hãy hỏi: Khi tìm hiểu mã, đọc và chạy thường là cách tốt. Nhưng nếu có thể hỏi người biết rõ về nó (có lẽ là tác giả ban đầu), hãy kết hợp cả việc hỏi
- Chia sẻ công lao: Hãy ghi nhận đúng người xứng đáng. Thay vì nói "Chúng tôi đã thử ...", hãy nói "Marcus đã nghĩ ra ý tưởng để thử" (nếu đúng là vậy). Hãy chủ động nhắc đến những người đã giúp đỡ hoặc đóng góp
Khác
- Cứ thử đi: Nếu không chắc một tính năng của ngôn ngữ hoạt động thế nào, hãy viết một chương trình nhỏ để kiểm thử
- Ngủ một giấc: Khi đối mặt với một vấn đề khó, nên ngủ qua một đêm trước khi đưa ra quyết định
- Thay đổi: Đừng ngại thỉnh thoảng thay đổi vai trò hoặc công việc. Làm việc với những người khác, trên sản phẩm khác hoặc ở công ty khác sẽ mang lại nhiều kích thích mới
- Tiếp tục học hỏi: Một trong những điểm tuyệt vời nhất của phát triển phần mềm là luôn còn rất nhiều điều để học và tìm hiểu thêm. Hãy thử nhiều ngôn ngữ lập trình và công cụ khác nhau, đọc sách về phát triển phần mềm, và tham gia các khóa MOOC. Những cải thiện nhỏ tích lũy lại sẽ tạo ra khác biệt thực sự cho kiến thức và năng lực của bạn
7 bình luận
Trao đổi trực tiếp có băng thông cao nhất - một cách diễn đạt rất hay.
+1.
Debugging kiểu vịt cao su. Ngay cả khi nói chuyện với người thật ra không biết lập trình, bạn cũng nhận ra vấn đề là gì.
+1.
Đúng là kim chỉ nam.
+1
Wow, toàn là những lời hay thật. Hơi tiếc là giao tiếp trực tiếp vẫn có băng thông cao nhất; mong công nghệ sẽ phát triển hơn nữa.