일이 잘 안될 때 좌절에 대처하기 [폐쇄]


62

간단한 것을 구현하려고 시도하지만 이상한 이유로 작동하지 않습니다.

따라서 가능한 해결책을 시도했지만 다른 것이 작동하지 않습니다. 다른 해결 방법을 계속 시도하지만 다른 무언가가 작동하지 않을 때마다.

한 걸음 더 가까워 질 때마다이 문제를 해결하는 데 한 걸음 더 멀어지며 10 분이 걸렸을 때 3 시간이 지났습니다. 그리고 여전히 해결되지 않습니다.

귀사에 도움을 줄 수있는 사람이 없으며 주먹을 화면에 대고 있습니다.


이 시점에서 당신은 너무 좌절하여 더 이상 문제를 명확하게 생각할 수 없습니다. 이 시점에서 어떻게해야합니까? 아니면이 시점에 도달하지 않으려면 어떻게해야합니까?


3
나는 당신과 나는 방금 같은 경험을했다고 생각합니다.
AndrewKS

19
SO를 착용하고 현상금을 제공하십시오.
JeffO

4
그렇게 간단했다면. 이러한 종류의 문제 중 일부는 많은 죽은 / 답변하지 않은 / 실패한 질문 중 하나입니다.
Aditya P

2
이 질문은
work.stackexchange.com

내 같은 문제와 같은 질문.
Anwar

답변:


69

이것은 실제 문제이지만 프로그래밍에만 국한된 것은 아닙니다. 그러나 IMHO는이 포럼에서 자리를 차지할만큼 중요합니다.

내 제안 : 휴식을 취하십시오 . 걷기, 명상, 수면, 신체 활동 *- 뇌가 긴장을 풀고 정신적 상식 에서 벗어날 수 있도록 완전히 다른 무언가를 하면서, 잠재 의식이 문제에 대해 평화롭게 진행되도록하십시오. 일반적으로 놀라 울 정도로 빠른 결과를 제공합니다. 결과를 알려 주면됩니다. 그러나 당신의 의식적인 마음이 반복적으로 같은 생각의주기를 반복적으로 반복하고 있지만, 다른 것을들을 수는 없습니다.

이 시점에 도달하지 않으려면 어떻게해야합니까?

이완과 마음 챙김 기술은 스트레스 반응을 극복하고 마음이 명확하게 집중할 수있는 열쇠입니다. 그리고 이것들을 연습하면 정말 대가를 치릅니다. 누군가 이런 경험을했을 때 , 좌절감을 극복하기 전에 스트레스 수준이 상승한 것을 이미 알 수 있습니다 . 그러면 몇 번의 심호흡을하거나 몇 분 동안 이완 연습을함으로써 생각의 순환을 방해 할 수 있습니다. 이것은 그 시점에서 필요한 모든 것일 수 있습니다.

* 당신의 파트너에게 키스하고, 애완 동물을 애무합니다-아내의 제안 :-)


12
+1, 우리의 마음은 항상 문제를 해결하려고 시도합니다. 단지 우리가 의식적으로 문제를 해결하려고하지 않기 때문에 우리의 마음은 여전히 ​​떨리고 있습니다. 그렇기 때문에 당신은 이름을 기억하지 못한 채 한 시간 후에 파란 이름을 기억하는 것 같습니다. 한밤중에 해결 된 문제로 깨어납니다. 이것을 설명하는 훌륭한 책은 실용적 사고와 학습 : 습식 리팩토링
CaffGeek

+1 나 자신을 더 잘 말할 수 없었다. 나는 실제로 입방체에서 나와 사무실을 떠나 마을을 돌아 다니며 아내를 부르고 사무실로 돌아갑니다. 거의 100 % 작동합니다.
Mr. Ant

9
그리고 하루에 8 시간 이상 일하지 마십시오. 피곤할수록 좌절하기 쉬워집니다.
HLGEM

3
오줌을 쉬기 위해 책상으로 돌아갈 때 종종 문제가 해결됩니다. 당신의 잠재 의식이 당신의 의식이 닥 치기를 기다리는 것과 같습니다.
barrycarter

1
@junxiong, 시간 압박을받을 때도 이러한 기술을 사용할 수 있지만 경험이 필요합니다. 예를 들어 몇 년 동안 명상 해 온 사람은 몇 분 또는 몇 초 만에 자신을 통제하고 진정시킬 수 있습니다. 그러나 시간이 지남에 따라 새롭고 특히 마음 챙김을 배우려는 것은 매우 어려운 일입니다. 다른 모든 것이 실패하면, 이것을 중요한 교훈으로 삼아 마감일이 끝나면 행동을 분석하고 여기 또는 다른 답변에서 언급 된 기술을 연습 하여 다음 위기대비 하십시오.
Péter Török

35

10 분이 걸렸을 때는 3 시간이 지났습니다.

마법의 단어가 있어야합니다 . 당신의 어휘에서 그것을 공격하십시오.

누가 10 분이 걸렸다 고 했어요? 누가 구체적으로? 그들의 주장에 대한 실제 근거는 무엇입니까?

전에 3 번이나 해본 적이 있고 10 분에 가까워 졌다면, 당신은 should에 대한 합리적인 근거 있습니다.

당신이 전에 그것을 한 적이 없다면 말을 해야 만 실패 자신을 설정하는 것입니다. 오늘 사용을 중지 해야 합니다.


2
물론 하루에 백만 번이나 일을 그만 두었던 일들이 많이 있습니다. 자동 생성 된 코드에서 손상된 파일은 상당히 실망스럽고 때로는 디버깅하기가 매우 어렵습니다. 실수로 두 가지 이름을 같은 이름으로 지정한 경우 리팩토링 도구를 사용하여 이름이 발생한 모든 인스턴스를 변경하는 경우가 있습니다. 내 ORM 생성 클래스와 충돌하는 클래스로 뼈가 움직입니다. 그런 식으로하면 체크인에 대해 잘 알고 있기를 바랍니다.
Morgan Herlocker

1
@Prof Plum : "뼈 머리를 몇 번 움직였습니다." 훌륭한 지적입니다. 즉, 예상에는 뼈가 움직이는 시간이 포함되어야합니다. 다시 말하지만,이 포함되어야 "한다" 모든 사실을, 아니 사실 "모든 권리를 가면"과 "뼈 머리 움직임"사실을 제외하고.
S.Lott

22

사운드 보드로 사용할 사람 찾기

귀하의 작업 내용에 대해 전문 지식을 갖춘 사람이 없더라도 이러한 내용에 대해 자주 이야기하는 것이 좋습니다. 누군가를 사운 딩 보드로 사용하는 단순한 행동만으로도 마음이 돌아 가기 시작할 수 있습니다. 시도해 볼 새로운 것들을 생각하게 될 것입니다. 또한 약간의 통풍구가 생기고 잠재적으로 새로운 친구를 사 to 수 있도록 스트레스를 완화시킵니다. 또한 이러한 문제를 해결하기 위해 팀 중심의 분위기를 조성하기 위해 팀이 서로에게 편안한 공유와 교류를 느끼는 것이 일반적으로 건강합니다.


7
상대방이 당신이 말한 것에 대한 단서가 없더라도, 대화하는 것만으로도 사물을 명확히하는 데 도움이됩니다.
Michael Brown

2
@Mike, 그 "사람"이 테디 베어 인 경우에도, 그것은 여전히 ​​놀랍게도 많은 사례에서 작동합니다 (Hacker 's Dictionary AFAIR에 이것에 대한 실제 이야기가 있습니다)
Péter Török

3
브라운 @ 마이크 - 참조 "고무 오리 디버깅"
ocodo

1
고무 오리 디버깅? pfft. 이런 이유로 책상 위에 디버깅 붐바를두면 오리가 프로젝트 관리 측면에서 더 좋습니다.
glasnt

그래, 나는 그것을 참조하려고 ... 링크를 끌어 너무 게으른했다 : P
마이클 브라운

9

잠시 걸어 가서 다른 것을하십시오. 숙면을 취하고 아침에 문제로 돌아 오십시오.

또한 자신을 때리지 마십시오. 귀하의 10 분 예상치는 명확하지 않으며 항상 발생합니다.


9

이 시점에 도달하면 몇 단계가 있습니다. 일반적으로 뒤로 물러서서 반영하는 데 시간이 걸리면 해결책을 찾을 수 있습니다.

1 단계 : 문제에서 벗어나 머리를 비 웁니다. 당신이 좌절하지 않고 돌아와서 신선한 마음으로 그것을 볼 수 있습니다.

2 단계 : 코드로 돌아가서 놓친 것이 있는지 확인하십시오. 머리 나 꼬리를 만들 수 없다면 누군가가 와서 두 번째 눈을 갖도록하십시오.

3 단계 : 방정식에서 코드를 제거합니다. 해결하려는 문제는 무엇입니까? 종이나 화이트 보드에 적는다. 문제와 해결책에 대한 의견을 얻기 위해 누군가와 문제를 이야기하십시오.

4 단계 : 커뮤니티에 연락하여 솔루션이 있는지 또는 다른 사람이 같은 벽에 부딪 쳤는지 확인하십시오.

기본적으로 이것들은 '해킹 중지 및 코드에서 멀어짐'으로 요약 될 수 있습니다.


나는 항상 화이트 보드를 사용합니다. 디버깅하는 동안 시각화하는 데 매우 유용합니다.
Michael K

3 단계는 문제의 도메인을 변경하여 병렬 성공을 재사용 할 수 있는지 확인하는 것으로 알려져 있습니다. 은유를 사용하는 것으로도 불립니다.
Kurucu

2

나는 여기에 질문을하고 그것을 해결하기 위해 지역 사회를 도울 것입니다. 그렇게 스트레스가 덜합니다.


6
때때로 질문을 작성하는 것만으로도 해결책이 될 것입니다
JoelFan

1

나는 다른 종류의 해결책을 가지고 있습니다- 수면 !

당신이 문제에 좌절하면 쉽게 벗어날 수 없습니다. 따라서 문제를 해결하려고 노력하면서 너무 피곤해지면 잠이 드는 것이 좋습니다.

깨어날 때 상쾌한 느낌이 들며 다시 문제에 대해 명확하게 생각할 수 있습니다. 가끔 해요


이질적이지는 않지만이 "다른"솔루션은 적어도 두 가지 초기 답변에서 언급되었습니다.
Péter Török

1
내가 의미하는 것-> 휴식을 취하거나 걷거나 잠을 자지 말고 오히려 문제를 해결하고 잠을 자려고 노력하면 피곤해집니다. 문제가 생겼을 때 쉽게 벗어날 수 없을 것입니다.
ruben

1

자신감을 되 찾을 수있는 무언가를 찾으면이 시점에 도달했을 때하는 경향이 있습니다. 이것은 스도쿠 또는 켄켄 퍼즐을 풀거나 내 시간표를 작성하거나 산책을하는 등 간단한 정신없는 관리 작업을 수행 할 수 있습니다. 여기서 중요한 점은이 작은 방해 요소가 말을 타고 야생의 푸른 저쪽으로 날아가서 약간의 은유를 섞을 수 있도록 나를 끌어 올리는 데 도움이된다는 것입니다.

이 나쁜 것을 피하기 위해, 당신은 10 분이 걸릴 것으로 생각하고 갑자기 1 시간 후 많은 진전이 없는데 시간이 걸리는 시간 복싱 전략을 제안 할 것입니다. 내 머리를 벽에 부딪 히려고 노력하기보다는 약간의 휴식.


1

나는 이런 종류의 상황에 대한 특별한 이름을 가지고 있습니다 : 서사시 프로그래밍 전투 .

특정 프로그래밍 언어 또는 도구와 하나 이상의 서사시 프로그래밍 전투 를 겪지 않고 문제를 해결하지 않았다면 그러한 프로그래밍 언어 또는 도구를 사용할 수 있다고 스스로 말할 수는 없습니다.

내 해결책이있다 : 싸움과 용기와 인내의 시험처럼 그것을 정신 화하라 . 문제를 해결할 수 없으면 " 다른 날 싸울 수 있습니다 ".

그것은 (당신이 승리해야 게임의 일종처럼) 당신이 직면해야하기 때문에 대신 모든 방법을 고통의 관점에서 생각하는 것이 더 재미와 만족 될 것입니다, 조금 말도 안되는 소리 수 있지만, 사실당신 모든 것을 모른다 .


0

글쎄 ... 새로운 직업이나 완전히 새로운 기대가 필요하다고 생각합니다. 확실히 자주는 아니지만, 원래 10 분 일이라고 생각했던 것을 수행하는 데 3, 4, 8, 10 또는 40 시간이 걸리는 것은 소프트웨어 비즈니스에서 드문 일이 아닙니다. 중간 정도의 복잡한 작업을 수행하는 대부분의 개발자는 2 일 작업을 한 달 작업으로 전환하여 문제를 이해했다고 확신합니다.

좋은 개발자가 되려면 인내심이 있어야합니다. 그렇지 않으면 컴퓨터가 이기게되고 결국에는 거의 작동하지 않지만 생각하지 못한 것을 깨뜨릴 수있는 일종의 빠른 수정 해킹을 포함하게됩니다. 약간의 지연으로 인해 많은 스트레스가 발생한다면 아마도이 작업 라인에 있지 않아야합니다.


0

두 가지 제안 :

  1. 내가 아는 가장 똑똑한 사람은 두 명의 박사 학위를 가지고 있으며 소규모 개인 회사에서 "연구 연구원"이라는 직함을 가지고 있다고 말합니다.

    15 분 동안 그것에 대해 답변을 얻지 못하면 잘못하고있는 것입니다.

    그것에 대해 생각하지 마십시오.

    낮잠을 자다. (산책로 가거나)

    당신이 깨울 때 대답이있을 것입니다.

  2. David J Agan의 책 "Debugging"을 가져 오십시오 . 작동하지 않을 때 빠르게 디버깅 할 수 있도록 디버깅에 대해 더 많이 가르쳐 줄 것입니다.


0

내가 작동하지 않는 무언가에 직면했을 때 나는 항상이 인용문을 기억합니다.

당신이 지옥에있을 때, 그 시점에서 할 수있는 가장 좋은 일이므로 걷기를 계속하십시오.

휴식을 취하고 자신을 새롭게하고 새로운 수준의 에너지 문제에 집중하십시오.


0

다른 사람의 권고를 반향 :

  • 이 상황은 거의 항상 당신 이 보지 못하는 사소한 것입니다 . 휴식을 취하다
  • 다른 한 쌍의 눈 또는 심지어 문제를 고양이에게 설명하는 것도 도움이 될 수 있습니다

그리고 추가 :

  • 가정, 특히 언급되지 않은 가정을 다시 검토하십시오. 당신은 잘못된 나무를 짖었을 가능성이 있습니다
  • 상황을 역전 시키십시오 : 현재의 행동이 바람직한 결과라고 가정하십시오. 그렇게하려면 코드에 어떤 조치를 취해야합니까?
  • 실행 경로를 따라 가정을 확인하기 위해 테스트 코드 (어설 션 또는 로깅 또는 조건부 중단 점-단순하게 유지)를 작성하십시오.

0

때로는 문제를 극복하는 방법을 시도하지 않는 것이 가장 좋습니다. 시간이 좀 걸리고 의사 코드로 작성해야합니다. 가능한 빨리 작업을 수행해야한다는 압력이 있다는 것을 알고 있습니다. 그러나 제가 본 바에 따르면, 이러한 코딩 스타일은 설명하는 상황 유형으로 이어집니다. 누군가가 작은 조건 세트에서만 작동하고 설정된 세트 만 변경되는 코드를 작성하면 코드가 깨지거나 예기치 않은 작업이 수행됩니다.

또한 (교수님이 옳다는 것을 인정하는 것을 싫어합니다 ...) 문서화 및 단위 테스트가 도움이됩니다. 이를 통해 일련의 입력이 주어진 코드 섹션을 쉽게 알 수 있습니다. 그런 다음 해당 섹션 입력의 변경이 어떤 영향을 미치는지 쉽게 알 수 있습니다.


0

피로 나 수면 부족은 결코 문제가되지 않습니다. 업계 전체의 조직 부족과 전체적으로 우리가 설정 한 낮은 표준에 더 불만이 있습니다. 나를 실망시키는 다섯 가지가 있습니다.

  1. 디자인이 복잡한 API 완전히 새로운 프로그래밍 언어를 배우는 것과 같습니다. 실제로 일부 API는 새로운 프로그래밍 언어를 배우는 것보다 배우기가 훨씬 어렵습니다. 나는 당신의 지능에 감탄하지만 소프트웨어 공학이나 컴퓨터 과학에서 박사 학위가 필요한 문서를 이해함으로써 시간을 절약 할 수있었습니다.

  2. 좋은 문서가 부족합니다. 너무 많은 API 디자이너가 최소한의 문서로 API를 릴리스하기 위해 API를 만드는 데 많은 시간을 소비한다는 사실을 결코 극복 할 수 없습니다. 고마워요,하지만 어떻게 사용하나요? 이 상황에서 어떻게해야합니까? 기타

  3. 독점적 구현. 일부 독점 구현은 괜찮지 만 표준이 존재한다면 인류를 위해 그 표준을 따르십시오. 구현을 발견하는 데 왜 효과가 없는지 궁금해하는 시간을 보내는 것보다 더 실망스러운 것은 없습니다. 표준을 따르지 않습니다.

  4. 샌드 박스 환경 / 제한. 아마도 이것은 나쁜 사람들을 막는 데 도움이 될지 모르지만, 프로그래머가 할 수있는 것에 대한 제한은 창의성과 기술적 진보를 제한합니다. 내가 해왔 던 많은 훌륭한 아이디어들은 내가 무언가를 할 수 없다는 것을 알게 된 후에 엉망이되었습니다. 프로그래밍 산업은 혁신적인 획기적인 소프트웨어가 아닌 일상적인 애플리케이션을 개발하기 위해 만들어졌습니다. 따라서 프로그래머가되기로 결심했다면 외로운 학업을 원치 않는 한, 실제로 현대식 그런 사람이되기를 선택하는 것입니다.

  5. 현대 토론. 오늘날 사람들은 여전히 ​​Lisp 괄호의 추악함, Pythons 청결성의 장점 또는 Cobol 또는 Fortran과 같은 일부 언어가 어떻게 멸종하는 등의 문제에 대해 논쟁하고 있습니까? 이것이 우리가 토론하는 것입니까? 병렬 처리 또는 더 안전한 시스템을 설계하는 더 좋은 방법 또는 논리 프로그래밍이 어떻게 우리의 삶을 향상시킬 수 있는지에 대해 이야기합시다. 코더처럼 생각하지 말고 내일의 디자이너처럼 생각하기 시작합시다.

그래서 나는 이러한 좌절 때문에 개인적으로 더 이상 그렇게 프로그래밍하지 않습니다. 업계가 결정하기 전까지는 다음 Facebook을 만들거나 워드 프로세서를 새로 개발하는 것 이상을 원합니다. 나는 너희들에게 맡길 것이다. 솔직히 아무 의미도 없다, 그것은 좋은 돈이다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.