Mặc dù tôi không thể liệt kê tất cả các cạm bẫy, thông thường, việc đặt ra một câu hỏi và giải quyết nó thành một vấn đề khép kín thường tốn rất nhiều công sức đến mức khi bạn chuẩn bị đầy đủ, bạn đã trả lời câu hỏi của mình nhiều hơn thời gian hơn nó sẽ mất.
Tôi trải nghiệm tương tự cho> 75% câu hỏi tôi đăng.
Tuy nhiên, đó không phải là một lập luận cho việc không bận tâm để làm như vậy. Đây là gỡ lỗi vịt cao su hiệu quả. Bạn đang tìm câu trả lời cho các câu hỏi mà bạn nghĩ có thể mọc lên để trả lời câu hỏi của bạn; có nghĩa là bạn đang nghĩ về vấn đề theo quan điểm của mọi người; có nghĩa là bạn đang suy nghĩ về vấn đề từ tất cả các hướng có thể; đó là cách tốt nhất để tìm ra lỗ hổng
Tốt nhất, bạn đã chứng minh một cách thuyết phục rằng bạn rõ ràng không thể nghĩ ra câu trả lời ở đây. Tại "tệ nhất", bạn kết thúc việc trả lời câu hỏi của riêng bạn. Hãy nhớ các trích dẫn, bởi vì điều này không phải là xấu cả. Nó có thể là một chút thời gian không hiệu quả, nhưng giải quyết vấn đề chậm hơn là quyết định nhanh chóng để không giải quyết vấn đề . Cuối cùng, bạn sẽ nhanh chóng giải quyết vấn đề hơn.
Trường hợp tại điểm:
Khi tôi là một nhà phát triển non trẻ, tôi đã xử lý trang eror ASP.Net rất nhiều lần. Tôi cần gửi cho Google tin nhắn để tìm ra những gì sai. có thể mất vài giờ trước khi tôi có giải pháp đúng. Về cơ bản, tôi đã phạm mọi sai lầm trong cuốn sách và sau đó phải giải quyết hậu quả của việc phải gỡ lỗi các vấn đề.
Bây giờ, khi một lỗi xuất hiện, tôi đã biết "nghi phạm thông thường" về những gì có thể gây ra sự cố. Danh sách tinh thần "nghi phạm thông thường" của tôi có hiệu quả dựa trên những vấn đề tôi gặp phải nhiều vấn đề nhất trong sự nghiệp. Nếu không lần đầu tiên thực hiện công việc chân không hiệu quả trong nhiều giờ của Google, tôi sẽ không bao giờ có được danh sách tinh thần này . Nhưng bây giờ tôi có danh sách tinh thần đó, tôi nhanh hơn đáng kể trong việc khắc phục sự cố.
Ngoài ra, trong khi tôi không thể đặt ngón tay của mình lên nó, thì khả năng phản hồi của cuộc trò chuyện miễn phí không thể phù hợp với bất kỳ hình thức thảo luận internet văn bản nào mà tôi có thể nghĩ ra.
Tôi hơi không đồng ý ở đây. Bạn đúng rằng giao tiếp internet ít phản hồi hơn, nhưng bạn (theo tôi) sai rằng điều này không tốt cho bạn.
Là một nhà phát triển đơn độc, bạn sẽ phụ thuộc vào việc gỡ lỗi vịt cao su. Thành phần quan trọng để làm cho RDD hoạt động là bạn dự đoán các câu hỏi mà con vịt cao su có thể có cho bạn. Bạn rõ ràng không thể dựa vào những gì con vịt cao su thực sự nói.
Khi làm việc với các hệ thống nhắn tin chậm (đăng trên StackOverflow hoặc liên lạc bằng cách viết thư), bạn vốn được khuyến khích để đảm bảo rằng bạn làm đúng ngay từ lần đầu tiên. Bởi vì cần sửa chữa một sai lầm sẽ là một quá trình chậm chạp và gian khổ.
Bằng cách so sánh, hãy xem xét rằng các hệ thống nhắn tin nhanh (hội thoại, nhắn tin tức thời), bạn có thể ngay lập tức sửa một cái gì đó. Khả năng nhanh chóng sửa một cái gì đó khiến mọi người ít được khuyến khích để đảm bảo rằng nó là chính xác.
Bốn trường hợp tại điểm:
- Khi tôi lập danh sách phân tích / việc cần làm của riêng mình với tư cách là nhà phát triển, tôi vẫn sử dụng bút và giấy. Tôi đã nhận thấy rằng tôi che đậy những giả định và sự giả dối khi tôi gõ ghi chú của mình, bởi vì tâm trí tôi nghĩ rằng "Tôi có thể dễ dàng sửa lỗi này sau". Tuy nhiên, việc phải sửa một cái gì đó bạn viết trên giấy thật khó chịu, bạn cần gạch bỏ mọi thứ và viết giữa các dòng và tài liệu trông tệ hơn nhiều khi nó có những nét vẽ nguệch ngoạc trên đó. Viết trên giấy làm cho tôi kiểm tra thực tế bản thân trước khi tôi cam kết viết nó. Điều này bắt gặp rất nhiều hiểu lầm sớm, trước khi tôi thậm chí viết mã sẽ tạo ra lỗi.
- Bà tôi là một thư ký (tuổi của máy đánh chữ). Làm một lỗi đánh máy trong một tài liệu chính thức có nghĩa là phải gõ lại toàn bộ trang. Dì tôi là một thư ký (tuổi của trình xử lý văn bản). Cô ấy có thể dựa vào trình kiểm tra chính tả tự động, và các lỗi có thể được sửa chữa dễ dàng và với nỗ lực tối thiểu. Không có gì đáng ngạc nhiên, bà tôi mắc lỗi đánh máy và lỗi chính tả ít hơn đáng kể so với dì tôi.
- Trò chơi video được sử dụng để in trên hộp mực. Sửa một lỗi sau khi phát hành là không thể. Bạn cần in lại tất cả các hộp mực, phân phối chúng cho tất cả các nhà cung cấp và hy vọng rằng các nhà cung cấp bằng cách nào đó có thể liên lạc với các khách hàng đã mua trò chơi. Nó sẽ tốn hàng tấn tiền (gấp đôi chi phí sản xuất vật chất) và vẫn không đến được với một số khách hàng. Giờ đây, trong thời đại của các bản vá internet, các nhà phát triển trò chơi đã cho thấy được đầu tư ít hơn đáng kể vào việc thử nghiệm trò chơi của họ để họ có thể tránh được các lỗi phát hành trong ngày, bởi vì đơn giản là rất dễ dàng để khắc phục trực tiếp mọi khách hàng. Tác động của việc phạm sai lầm được giảm thiểu đến mức tốt hơn là khắc phục một số vấn đề sau khi thực tế, so với việc phải kiểm tra tất cả các khả năng có thể lỗi có thể xảy ra.
- Tôi từng sống trong một căn hộ tầng ba, không có thang máy và thường phải đỗ một hoặc hai con đường từ tòa nhà của tôi. Tôi hầu như không bao giờ quên lấy một cái gì đó từ xe của tôi. Bây giờ, tôi sống trong một ngôi nhà với chiếc xe của tôi ngay cạnh tôi trên đường. Tôi quên mất mọi thứ từ xe của tôi mọi lúc .
Ý tưởng cơ bản ở đây là một hệ thống trao đổi khó khăn khuyến khích mọi người thực hiện các trao đổi chính xác và được kiểm tra thực tế . Mức độ nghiêm trọng của hình phạt (= quá trình sửa lỗi khó khăn) dạy bạn không phạm sai lầm.
Ngoài ra, ẩn chi tiết để hỏi một câu hỏi được xác định rõ sẽ loại bỏ khả năng ai đó phát hiện ra vấn đề mà bạn chưa từng nghĩ đến.
Khi bạn thực hiện MCVE , bạn không nên tạo nó và đăng nó trong câu hỏi. Trước tiên bạn nên làm cho chính mình , để bạn có thể cô lập vấn đề. Và sau đó, khi bạn nghĩ rằng vấn đề không thể giảm được nữa, và bạn vẫn không thấy nguyên nhân; sau đó bạn có một câu hỏi hợp lệ cho StackOverflow.
Trường hợp tại điểm:
Tôi luôn có một Visual Studio thứ hai chạy với một ứng dụng bảng điều khiển đơn giản có tên Sandbox. Bất cứ khi nào tôi gặp phải một vấn đề kỹ thuật, tôi sao chép mã vi phạm vào hộp cát và bắt đầu chơi xung quanh nó.
- Điều gì xảy ra khi tôi thay đổi cài đặt này?
- Tôi có thể tái tạo vấn đề nếu tôi rút ngắn mã không?
- Những cài đặt nào làm cho có thể / không thể tái tạo vấn đề?
Trong 90% trường hợp, tôi tìm thấy nguyên nhân của vấn đề vì hộp cát giúp tôi xem mã vi phạm mà không bị phân tâm bởi bối cảnh xung quanh (hoặc, ví dụ, bất kỳ sự không chắc chắn nào về các giá trị xuất hiện cho các phần khác nhau của mã.
Trong 10% trường hợp khác, tôi chỉ còn lại mã tối thiểu để tái tạo vấn đề, đây là một đoạn ví dụ hoàn hảo để đăng trên StackOverflow.
Cuối cùng nhưng không kém phần quan trọng, tôi không muốn đăng toàn bộ dự án của mình cho thế giới nhìn vào phần còn lại của sự vĩnh hằng, vì những lý do rõ ràng.
Khi bạn đã có MCVE, bạn không nên có nhiều thông tin cá nhân (hoặc công ty) trong đó. Nếu bạn làm như vậy, vì mã là tối thiểu, thật dễ dàng để đổi tên mọi thứ thành một ví dụ foo / bar / baz cơ bản hơn.