Tại sao không nghĩ về một lỗi đôi khi giúp bạn giải quyết nó? [đóng cửa]


12

Hôm qua tôi đã dành một phần tốt của buổi chiều để cố gắng sửa một lỗi, mà tôi nghĩ là tầm thường. Tôi đã đi vòng vòng, không biết có chuyện gì không ổn. Viết lại phần lớn của mã. Kiểm tra SO. Vẫn không có niềm vui.

Vì vậy, tôi về nhà, dắt chó đi dạo, xem một chiếc TV nhỏ và ngay trước khi tôi đi ngủ, chơi lô tô tôi nhận ra sai lầm rõ ràng mà tôi đang mắc phải. Sáng nay mất khoảng 10 phút để sửa.

Khi tôi ở nhà, tôi đã không chủ động nghĩ về vấn đề này. Tuy nhiên, việc đưa bản thân ra khỏi tình huống cho phép tôi giải quyết nó.

Đây không phải là lần đầu tiên nó xảy ra và tôi biết rằng đó là một cách khá phổ biến để giải quyết vấn đề lập trình. Tôi thậm chí đã nghe nói về những người mơ ước câu trả lời.

Tại sao điều này làm việc?

Có lẽ quan trọng hơn, có một hướng dẫn tốt về việc khi nào bạn nên nghỉ ngơi từ một vấn đề, thời gian nghỉ giải lao là bao lâu và sau bao lâu để một vấn đề ngừng hiệu quả?

Tôi cho rằng tôi đang cố gắng tìm cách tối ưu hóa quá trình xử lý tiềm thức này (hoặc bất cứ điều gì đang xảy ra)


3
Tôi không chắc điều này chỉ liên quan đến lập trình, bạn có thể hỏi cùng một câu hỏi trong nhiều lĩnh vực.
ozz

1
Nếu chỉ trao đổi ngăn xếp khoa học nhận thức là trong bản beta!
Matt Ellen

1
Bởi vì suy nghĩ là một quá trình bí ẩn.
davidk01


4
Câu hỏi này dường như lạc đề vì nó là về quá trình suy nghĩ giải quyết vấn đề chung và không phải là duy nhất cho các lĩnh vực lập trình hoặc công nghệ.

Câu trả lời:


22

Quá tập trung vào một vấn đề ngăn cản bạn lùi lại một bước. Khi bạn gỡ lỗi mã của mình, bạn có xu hướng không cần lặp lại các bài kiểm tra tương tự.

Bạn càng cố gắng, bạn càng thất bại và bạn trở nên rất thất vọng. Căng thẳng gia tăng và thất vọng làm cho mọi thứ tồi tệ hơn.

Đó là lý do tại sao khá thường xuyên, một đồng nghiệp có thể tình cờ, nhìn qua vai bạn và chỉ ra vấn đề (và giải pháp) trong vài giây.

Họ không ở trong trạng thái tinh thần giống như bạn.

Tôi thường cố gắng ngừng tìm kiếm sau một khoảng thời gian nhất định và trở lại với một tâm trí bình tĩnh hơn một vài giờ sau đó.

Nhưng kỹ thuật mạnh nhất chỉ là ... yêu cầu giúp đỡ .


9
+1 khi bạn đang yêu cầu trợ giúp, bạn có xu hướng xác định vấn đề theo thuật ngữ mà người khác có thể hiểu do đó trong quá trình đó bạn sẽ có được sự hiểu biết nhiều hơn. giống như khi bạn đăng một chủ đề trên trang web hỏi đáp hoặc diễn đàn ngay lập tức bạn sẽ có ý tưởng làm thế nào để tiếp tục ..
Aditya P

1
+1 và +1 cho @AdityaGameProgrammer: mô tả vấn đề rất hữu ích đến nỗi thậm chí mô tả nó cho một người tưởng tượng - hoặc một nhân vật hành động hoặc một nhà máy hoặc bất cứ điều gì - thường kích hoạt cùng một suy nghĩ mới (như được mô tả bởi nhiều người) .
Matthew Frederick

6

Nếu bạn đã làm việc với một vấn đề trong một thời gian, tâm trí của bạn sẽ tuân theo các mẫu bạn thiết lập trong quá trình phát triển. Nói cách khác, bạn phát triển các "điểm đen" tạm thời cho những thứ nằm ngoài khung tinh thần mà bạn thiết lập.

Làm cho tâm trí của bạn khỏi vấn đề trong một thời gian sẽ giúp loại bỏ bộ lọc này và cho phép bạn nghiền ngẫm mọi thứ mà không có bộ lọc tại chỗ.

Điều thường giúp tôi trong những trường hợp như thế này là giải thích cho người khác lý do tại sao nó nên hoạt động (khi nó không hoạt động) - thông thường, giữa chừng lời giải thích của bạn, bạn sẽ nhận ra mình đã sai ở đâu hoặc bạn đã bỏ lỡ bước nào.

Ngoài việc phát triển một bộ lọc tinh thần trong quá trình phát triển, bộ não của bạn còn đa luồng và thường xuyên gặp phải một vấn đề như là một phần của quá trình vô thức. Đôi khi tôi sử dụng điều này bằng cách tìm hiểu mọi thứ tôi có thể về một vấn đề vào một buổi chiều, sau đó để vấn đề nằm trong một hoặc 2 ngày trước khi giải quyết một vấn đề.


1
Tôi đọc về một giáo sư nào đó sẽ giữ một con gấu bông trên bàn bên ngoài văn phòng của mình. Trước khi các sinh viên yêu cầu anh ta giúp đỡ, trước tiên họ phải giải thích vấn đề của họ với con gấu.
Michael K

Trông khá giống với những gì Jeff Atwood đã viết trên blog của mình ở đây blog.codinghorror.com/rubber-duck-probols-solve . Tôi thực sự nghĩ rằng điều này rất có thể giúp đỡ. Đã bao nhiêu lần bạn có một nửa câu hỏi viết cho SO và sau đó nhận ra câu trả lời? Tôi đã có điều này khá nhiều lần :)
Rémi

5

Tôi không phải là một nhà tâm lý học, nhưng khi bạn quá tập trung vào một vấn đề duy nhất (tìm ra lỗi), bạn có xu hướng mất tầm nhìn cho hệ thống lớn hơn. Nhưng thường thì câu trả lời không phải là "ở dưới đó" nơi bạn hiện đang tìm kiếm nó mà ở một nơi khác - mà bạn không thể nhìn thấy vào thời điểm đó.

Vì vậy, những gì bạn thực sự cần làm là ra khỏi chiến hào và bắt đầu nhìn vào toàn bộ hệ thống từ quan điểm tổng quát hơn - một lần nữa. Một người có xu hướng phớt lờ suy nghĩ thực tế này "Tôi thực sự biết nó ở ngay đây, tôi chưa tìm thấy nó". Nó xảy ra với tất cả chúng ta, mọi lúc. Tôi thậm chí còn nhận được đến điểm mà tôi biết "Tôi không thể tìm thấy lỗi bằng cách sử dụng gỡ lỗi kỹ thuật tốt vì vậy nó được ở một nơi khác" và vẫn không mất điều đúng đắn và nghỉ ngơi - bộ não con người là một ví dụ điều buồn cười

Tuy nhiên, nó thực sự không ảnh hưởng nhiều đến những gì bạn làm - cho dù đó là đi vệ sinh, nói chuyện với đồng nghiệp hay dắt chó đi dạo. Tôi thường đến một cửa hàng gần đó để mua một ít kẹo khi tôi bị mắc kẹt và ngay khi tôi đặt áo khoác lên dung dịch bật vào đầu - gần như mọi lúc. Nó cũng có thể là một điều tốt để uống nhiều nước trong thời gian bạn lập trình. Nó buộc bạn phải nghỉ ngơi mỗi giờ và sau đó đến thăm phòng tắm và zap, có lý do buộc bạn phải thoát ra khỏi chiến hào.


4

Từ kinh nghiệm cá nhân của tôi và những gì tôi đã chứng kiến ​​ở các nhà phát triển cơ sở mà tôi đào tạo, tất cả chúng ta đều tiếp cận một vấn đề với các giả định và kỳ vọng. Chúng ta giả sử hàm x thực hiện nhiệm vụ y để tạo kết quả z. Nó luôn luôn có, vậy tại sao điều đó phải thay đổi? Khi chúng tôi tập trung nhiều hơn vào một vấn đề, chúng tôi cho rằng chúng tôi đã đề cập đến những điều cơ bản và vấn đề thực sự phải phức tạp hơn nhiều so với khi chúng tôi giải quyết vấn đề ban đầu. Gắn sự mệt mỏi với một danh sách ngày càng tăng những điều chúng tôi cho là đúng nhưng chưa thực sự được xác minh và bạn sẽ thiết lập cho mình một khoảnh khắc "WTF" hoàn chỉnh sau này.

Chỉ sau này khi bạn tự ngắt kết nối với vấn đề rằng các giả định có thể bị loại bỏ và rút lại. Ngoài ra, chúng tôi thường giải quyết một vấn đề ở mặt sau của một vấn đề khác mà chúng tôi vừa giải quyết. Tôi đã sửa A nhưng nó bị hỏng B, bây giờ tôi phải sửa B. Vì vậy, chúng tôi đã có động lực và hướng chúng tôi đang đi (điều này làm cho các giả định của chúng tôi thậm chí khó phân tách hơn). Khi bạn quay lại giải quyết vấn đề B, vấn đề A không còn mới mẻ trong tâm trí bạn ngăn chặn những khả năng tiềm tàng. Bạn có thể giải quyết vấn đề mà không có định kiến ​​và điều này mở ra những lối suy nghĩ mới và góc nhìn mới về vấn đề.

Bây giờ, bất cứ khi nào một thiếu niên nhờ tôi giúp đỡ, họ biết câu hỏi đầu tiên họ phải trả lời là "Giả định của bạn là gì?". Thậm chí cố gắng trả lời vấn đề đó có thể giúp loại bỏ bạn khỏi khối tâm thần của bạn.


3

Tôi đoán bộ não của bạn, giống như cơ bắp, bị mệt mỏi. Nghỉ ngơi cho phép nó nghỉ ngơi, nạp đầy oxy / nhiên liệu vv và bắt đầu hoạt động trở lại.

Đi dạo hoặc tập thể dục thường là một cách tiếp cận tốt khi bạn thực sự bị mắc kẹt với một cái gì đó. Ngay cả khi bạn không có khoảnh khắc "eureka", nó thường có thể cho phép bạn quay lại và thực hiện một phương pháp mới để giải quyết vấn đề.


3

Tôi thích gọi đó là thời gian ủ bệnh về ý tưởng và vấn đề.

Lương tâm phụ của bạn vẫn tiếp tục xử lý vấn đề ra khỏi nhận thức của bạn theo cách tiếp cận phi tuyến tính. Điều này rất giống với những gì xảy ra khi bạn học một cái gì đó mới trước khi bạn chợp mắt. Tâm trí của bạn có thời gian để 'chống phân mảnh' thông tin thành những cách có thể được tiếp cận với tính linh hoạt cao hơn.

Ngoài ra, một mẹo hữu ích khác để khắc phục việc bị mắc kẹt trên một lỗi, được gọi là gỡ lỗi thú nhận . Đây là nơi bạn tiếp cận một người khác không biết vấn đề và bạn bắt đầu giải thích vấn đề. Tôi tìm thấy thường xuyên hơn không, rằng chỉ cần nói to vấn đề, giải pháp đến với tâm trí.

kiểm tra các liên kết tâm lý này: mẹo sáng tạo & ngủ trưa vấn đề


2

"Chúng ta đều được đâm bằng một tăng đôi. Đáng buồn thay khi chúng ta tập trung quá nhiều vào những nỗi đau chúng ta quên về vẻ đẹp của hoa hồng."


2

Tôi đã sửa một số lỗi nghiêm trọng trong sự nghiệp, trong thời gian tắm.

Tôi không phải là một nhà tâm lý học nhưng tôi đoán sự khác biệt là:

  • ngồi trước máy tính, tôi thấy mã nguồn, điểm dừng, printfđầu ra ...

  • Trong phòng tắm, mã chạy trong tâm trí của tôi.


1

Tôi đã trải qua hiện tượng tương tự, và quy cho nó là nhìn vấn đề bằng một góc nhìn khác khi tôi dành thời gian rời xa nó (khoảng thời gian xa hơn bao hàm một viễn cảnh xa hơn, xấp xỉ).

Nhưng có một mẹo khác mà tôi thấy hoàn thành điều tương tự hầu hết thời gian: giải thích mã cho đồng nghiệp. Không phải họ bắt lỗi của bạn, mặc dù họ có thể; đó là buộc bạn phải lùi lại và giải thích logic của mã ở tất cả các cấp có liên quan. Tôi chưa bao giờ (mặc dù cảnh báo công bằng - kích thước mẫu bị hạn chế) có thể giải quyết một cách vô thức một lỗi thoát khỏi sự đối xử mô tả này với đồng nghiệp.


1

Gần đây tôi đã sử dụng kỹ thuật pomodoro nhờ một gợi ý từ ai đó trên trang web này và nghĩ rằng nó cung cấp một câu trả lời tốt cho câu hỏi của bạn về thời gian và thời gian nghỉ. Về cơ bản, bạn đã tập trung vào một vấn đề trong 25 phút, sau đó là nghỉ 3-5 phút ngắn, sau đó nghỉ dài hơn sau mỗi 4 chu kỳ. Họ trích dẫn một số nghiên cứu để sao lưu nó, nhưng giai thoại tôi đã thấy những khoảng thời gian đó rất hiệu quả.

Tôi đã nghĩ rằng các nhịp kéo dài 25 phút sẽ giúp tôi không bị "ở trong khu vực", mà mọi người tuyên bố mất 15 phút hoặc lâu hơn. Ngược lại, với thời gian này, tôi nhận được trong khu vực gần như ngay lập tức. Tôi nghĩ đó là bởi vì nó dễ dàng hơn nhiều để giữ cho bản thân không bị phân tâm khi tôi biết tôi chỉ phải giữ nó trong 25 phút. Nó cũng dễ dàng hơn để hoãn các gián đoạn bên ngoài chỉ trong 25 phút. Điều đó thật khó khăn trước đây khi tôi cố gắng khóa 4 giờ làm việc trước khi ăn trưa.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.