프로그래밍은 공간 적성에 어떤 영향을 받습니까? [닫은]

배경

프로젝트 작업 시간이 길수록 명확 해지지 않습니다. 나는 더 이상 다양한 클래스 / 객체를 머리에서 분리 할 수없는 것과 같습니다. 모든 것이 섞이기 시작하여 다시 분해하기가 매우 어렵습니다. 나는 실제로 속하지 않는 클래스에 함수를 삽입하기 시작하고 나중에 내가 찾은 코드 작성과 같은 바보 같은 실수를합니다. 더 이상 머릿속에 명확하게 매핑 할 수 없습니다. 몇 시간 (또는 며칠 동안) 뒤로 물러서야 실제로 무슨 일이 일어나고 있는지보고 생산성을 높일 수 있습니다.

나는 보통 이것을 통해 싸우려고 노력한다. 나는 코딩에 대해 너무 열정적이다. 그래서 나는 내가 할 수있는 다른 일을 알지 못한다. 물이 쏟아지는 것과 같은 다양한 행동에서 더 이상 고의적 인 수준에서 일어나지 않는 현실에서 (어느 정도까지) 닿지 않을 정도로 머리가 너무 이상해집니다. 그것은 자동 파일럿에서 발생합니다.이 기간 동안 내 모든 고의적 인 집중 (무엇조차도?)이 무의미한 문제 해결 (코드 요소를 분리하려고 시도)에 전념합니다. 지는 전투처럼 느껴집니다.

그래서 나는 얼마 전에 IQ 테스트를 받았으며 (Wechsler Adult Intelligence Scale 나는 믿습니다), 공간 능력은 상당히 낮았습니다. 나는 아직도 괜찮은있어 나는 생활 막대기로 일을 찌를 필요가 없습니다, 그래서 단지 평균 이상, 점수를,하지만 난 조금 내가 이겼다 쓰기 / 공학 컴퓨터 프로그램 것을 할 때이 같은 핸디캡으로되어 있는지 걱정입니다 진지하게 또는 전문적으로 할 수 없습니다.

질문

나는 다른 사람들이 이것에 대해 어떻게 생각하는지에 매우 관심이 있습니다 …

공간 적성이 적 으면 위에서 설명한 문제의 원인이 될 수 있습니까?

프로그래밍은 공간 적성에 어떤 영향을 받습니까?

17 세 (5 년 전)에 ADD 진단을 받았기 때문에 ADD 나 그와 비슷한 것을 더 살펴보아야 할 수도 있지만,받은 약은 그다지 영향을 미치지 않는 것 같으므로 절대 복용하지 않았습니다. 그 모든 것이 심각합니다.

내가 아는 한, 사람들은 저 / 중 / 고 공간 적성으로 태어 났기 때문에 더 운이 좋은 프로그래머가 출생으로 더 좋은 프로그래머인지 알아내는 것이 흥미 롭다고 생각합니다.



답변

실제로 지난 35 년 동안 수집 된이 연구에 대한 몇 가지 어려운 연구 데이터가 있으며, 정기적으로는 아니지만 몇 가지 비슷한 현상을 경험했습니다. 자세한 내용은 아래를 참조하십시오.

연구 자료

있을 나타납니다 일부 있지만, 사소한의 다음 작품에서 수행하고 요약 된 연구를 기반으로 상관 관계. 그러나 종종 연구에서와 같이 연구 모델은 연구마다 다르며 결과가 왜 결론에 차이가 있는지 이해하기 위해 면밀히 검토해야합니다.

소금 한 덩어리로 섭취하십시오. 일부는 비교적 오래되었습니다 .IQ 테스트는 그 이후로 변경되었을 수 있습니다. 나는 각 기사에 대한 인용을 찾기 위해 심도있는 검색을 수행하지 않았으며 나중에 확인되거나 파기되었는지 확인했습니다.

이러한 온라인 컨텐츠에 액세스 할 수있는 라이브러리에 가입하지 않은 경우 일부 링크 (특히 [PDF] 종류)가 작동하지 않을 수 있습니다.


개인적인 의견

경고 및 공개 : 나는 측도 심리학자 NOR 신경,하지만 난 공부하고 가르치는 모두 작은 어린이 (6 시작) 및 대학 학생들에게 프로그래밍을 (최대 60!).

공간 문제의 영향을받는 일부 학생들 (및 장애가 더 강한 다른 학생들 포함)을 포함하여 학생들을 대학 교사로 연구하고 가르친 후, 나는 그럴 수 있었지만 (장애에 근거한 학생들을 추적하지는 않았지만, 분명히) 일부는 일반 곡선의 낮은 부분에 등록했을 것입니다. 나는 여전히 높은 점수를 기록합니다 (특히 2 년 이상 클래스 전공).

내 요점은 효과가있을 수 있지만 위의 일부 연구에서 볼 수 있듯이 프로그래머처럼 프로그래밍하고 생각하는 법을 배우는 능력의 대부분을 설명하지는 않습니다. 당신이 정말 원한다면 당신이 배울 멈추지 않을 것, 그리고 일반적인 경우에 작업에 방해가되지 않는 점에서 그 (로 할 수 있지만 그것은, 대수롭지의 귀하의 경우 수)이 약간 더 열심히 당신을 위해합니다.

실제로 무엇을, 얼마나 빨리 배울 수 있는지에 는 제한이 없습니다 .

결국, 프로그래머는 좋은 도전을 좋아하지 않습니다. (나는 당신을보고 있습니다, RSI)


개인적인 (아마도 관련이없는) 경험

너무 열정적 일 수 있습니다 . 하루와 일주일에 몇 시간 일하십니까? 정기적으로 쉬는가?

비슷한 경우?

일생 동안 한 해 동안 연중 매일 최소 14 시간 을 일하면서 컴퓨터 화면 앞에서 120 시간 분량 의 작업 을 기록하는 시점까지 일 했습니다 . 그렇습니다. 일주일에 48 시간 밖에 걸리지 않아 먹고, 잠을 자고, 출퇴근 ( 팁 : 운전 피하기 !! ), 샤워 및 기타 중요한 기능을 수행 할 수 있습니다. 이 시점에서, 나는 심장 박동 (대개 수면 문제가 있지만)으로 거의 잠을 잘 수 있었지만나는 거의 항상 코드를 계속 꿈꾸며, 샤워 중이거나 걷기, 달리기 또는 정신적 인 일을 할 때 내 마음이 자동 조종 장치로 돌아갔다는 것을 갑자기 깨닫게됩니다. 불행히도, 나는 잠에서 문제를 마술처럼 해결하지 않을 것이다. 그것은 당신이 묘사하고 경험하는 것에 더 가깝습니다 : 내 머리에서 돌아 다니는 혼란스런 생각의 거대한 소용돌이-더 큰 규모로 이해가되지만 해결책을 명확하게 표현하지 못하고 큰 성공을 거두지 못했습니다. 이러한 생각 중 하나를 잡아서 그것에 초점을 맞추고 명확하게 해부하여 유용한 것으로 바꿉니다. 그리고 이것은 보통 다소 성 가시고 괴로웠습니다.

휴식이 도움이 될 수 있습니다

어쩌면 조금 진정하고 휴식을 취하고 덜 일해야 할 수도 있습니다. 마음을 빼앗을 무언가를 찾으십시오. 그때, 나는 종종이 미친 생각의 기차를 막을 무언가를하기 위해 귀중한 몇 시간의 수면 시간을 포기하게되었습니다. 그것은 비생산적 인 것처럼 보이지만 실제로는 더 많이 자고 쉬지 않는 것보다 실제로 긴장을 푸는 몇 가지 일을 선호했습니다. 신경 배터리에 대한 산만 함과 물리적 배터리에 대한 수면은 어떤 의미에서입니다.

트리거 식별

그것이 당신의 경우가 아니라면, 아마도 당신을 위해이 상태를 유발하는 데 다른 것이있을 수 있습니다. 이러한 상황에 존재하는 요소를 격리하고 다른 환경에서이 조건을 재현 할 수 있는지 확인하고 이러한 요소가 있는지 확인하십시오. 직장이나 집에서 더 많이 발생합니까?

격리

또한, 당신은 이미 이것을 듣고 시도했을 수도 있지만, 약간의 공간 장애가있는 친구가 있습니다. 컴퓨터에서 작업하는 경우 어두운 방에서 복잡한보기와 창을 너무 많이 피하지 않도록 도와줍니다. 개방적이고 (주주의 방해를 피하기 위해) 일반적으로 물건을 최소한으로 유지하기 위해 (디자인과 색상, 내용과 표현 모두).

규칙적인 휴식을 취하고 자신에게 가장 적합한 것을 기준으로 1-2 시간마다 짧은 시간 동안 마음을 자유롭게 해보십시오. 아마도 포모 도로 (Pomodoro) 기술 또는 이와 유사한 것을 채택 할 수도있다.


답변

Ech … 이것은 의견 이상의 가치가 있습니다.

“저는 보통이 문제를 해결하려고 노력합니다”

싸우지 마. 일이 왜곡되고 실수를 저지르고 있습니까? 고유 한 문제가있을 수 있지만 뇌가 반항하는 방식은 문제에 너무 오랫동안 집중 한 사람에게는 정상입니다. 내가 어렸을 때, 하루 중 너무 많은 시간을 그 의식 수준에서 생각하는 데 보냈다. 나는 호의를 베풀지 않았다. 당신의 문제는 당신이 충분히 열심히 노력하고 있지 않다는 것이 아니라 당신이 언제 종료 해야할지 모른다는 것입니다.

합리적인 시간에 잠을 잘 수있는 유일한 방법은 전혀 아무것도 생각하지 않고 10 분 안에 그 사실을 발견하는 데 충격을 받는다는 것을 알았을 때 나는 마침내 버너에 물건을 두는 것의 가치를 이해하는 법을 배웠다. 나는 잠이 들었지만 일반적으로 정신적 피로로 추락하기 전에 적어도 몇 시간 동안 생각하고 생각합니다.

거기에서 나는 너무 많은 의식적인 생각을 문제에 빠뜨릴 때 인식하고 배우는 것이 더 쉽다는 것을 알게되었습니다. 이것이 실제로 문제를 해결하는 데 얼마나 도움이되는지 알게되어 놀랐습니다.

다음을 권장합니다.

  • 무언가가 머리에 뒤틀리고 휴식을 취하거나 걷기 등을 할 수있는 사치가 없다면 기어를 바꾸고 잠시 동안 매우 다른 문제에 집중하십시오.

  • 점심을 건너 뛰지 말고 항상 사무실을 떠나십시오. 문에 닿을 때까지 멈출 때까지 기다리십시오. 당신이 다시 돌아올 때 당신의 머리에 보관할 가치가있는 것은 거기에있을 것이고 당신이 필요로하지 않는 모든 것은 사라질 것입니다. 이것을 더 많이 발견할수록 더 쉽게 얻을 수 있습니다.

  • 하루 종일 아무것도 생각하지 않을 것입니다. 당신이 그 물 한 잔을 얻는 동안 단지 1 분 동안이라도.

  • 덜 생각하기 위해 OOP 또는 문제 영역 중심의 아키텍처 접근 방식을 활용하십시오. 코드에서 가장 높은 수준의 배우는 누구입니까? 그들은 서로 복잡한 관계를 가져서는 안됩니다. 이를 통해 한 번에 한 가지 문제에 더 집중할 수 있습니다.

도움이 될 수있는 일부 코딩 원칙

  • DRY는 “스틸 링이 잘못되었습니다”는 거의 모든 윤리 / 도덕에 적용될 수 있으므로 일반적인 코딩 관행입니다. 매우 드문 예외가 있습니다. 매우 희귀하게 유지하십시오.

  • 미래에 직면하게 될 문제에 대해 과도하게 해결하는 습관을들이는 경우에는 중단하십시오. 필요 이상으로 복잡하지 않은 코드보다 미래에 대비하거나 “확장 가능한”것은 없습니다. “엔터프라이즈”는 거짓말입니다.

  • 복잡한 패턴은 종종 긴 총알 포인트 보상 목록을 약속합니다. 대부분의 시간에 중요한 것은 3 가지뿐입니다. 읽기 쉽습니다. 재사용이 쉽습니다. 수정하기 쉽습니다. 무술가가 할 수있는 최소한의 힘 사용에 대해 생각하고 그 원리를 복잡성에 적용하십시오. 문제를 해결하기에 충분히 이상적입니다.

  • 먼저 인터페이스를 작성하십시오. 그리고 필자는 필요할 때만 사용해야하는 C # / Java 구문을 의미하지 않으며 객체의 API를 의미합니다. 클래스 / 객체는 무엇을해야합니까? 빈 메소드를 작성하고 인수 이름을 지정하십시오. 완전히 끝날 때까지 빈칸을 채우지 마십시오. 나중에 조정할 수는 있지만 할 수있는 일을 정한 후에는 한 번에 하나씩 각 작업을 수행하는 방법에 집중할 수 있습니다. 당신이 자주하는 것처럼 자신의 머릿속에 많은 노력을 기울이는 이유는 주어진 프로세스 단계에 도달하기 오래 전에 해결되어야 할 문제에 대해 구현이 이루어 졌기 때문일 수 있습니다. 많은 방법이 있고 방법이 있습니까? 그것이 내가 말하는 것입니다.

진단?

공간 인식에 대한 우려는 잘 알려져 있다고 생각합니다. 당신이 그 결정에 무엇을 결정하든, 나는 특히 당신이 처음에 꺼려한다면 ADD에 다시 방문 할 것입니다. 이것은 하이퍼 포커스가 극단적으로 진행된 것처럼 들립니다. 궁극적으로 코딩에 대한 사랑이 당신이 이러한 문제를 완화 할 수있는 방법을 찾도록 돕고 당신의 경력이 잘 될 것으로 기대합니다.


답변

이 흐리게 표시하기 시작하기 전에 몇 시간 동안 일하십니까? 내가 아는 일에 대해 평균 4 ~ 5 명의 프로그래머가 커피 나 점심을 먹기 전에 5 시간이 걸릴 수도있다. 내가 읽은 그런 가장 긴 스프린트는 Guy L Steele과 Richard M Stallman이 Emacs를 쓸 때 10 시간 정도의 스프린트를했을 때입니다. 스틸은 계속해서 그런 스프린트를 다시하고 싶지 않다고 말했다.

5000 시간 미만인 경우 (10 년 동안 프로그래밍을 배우는 Peter Norvig의 게시물에서 얻은 숫자, 전문가 프로그래머가되기 위해 권장하는 10000 시간을 절반으로 줄임)) 휴식 시간이 필요하다고 말하는 부분을 제외하고는 정상입니다. 아마도 당신은 그렇게 오래 휴식을 취하기 위해 자신을 태우고 있습니까?


답변

설명 한 내용에서 문제는 여러 가지 원인이있을 수 있습니다.

  • 무경험

  • 집중력 상실 / 피로

  • 낮은 공간 능력

경험은 기본적으로 더 많은 경험을 얻음으로써 해결할 수 있습니다. 그러나 더 많은 연습을함으로써 복잡한 프로그래밍 상황에 처한 경우가 더 많으며 점진적으로 처리하는 법을 배우게 될 것입니다. 지금 당장 당신은 올바른 연결을 만들고, 올바른 결론을 내리고, 이러한 상황을 잠금 해제 할 수있는 정신적 스키마와 반사가 부족할 수 있습니다. 이로 인해 느리고 느낌이 없어진 “사용되지 않는 코드”를 만들 수 있지만 이러한 문제 해결 패턴은 점차적으로 향상 될 것입니다 경험이 많을수록 당신의 머릿속에서 일어나십시오 (여러분은 22 세에 불과합니다).

집중력을 향상시키는 다양한 기술이 있습니다. 포모 도로 (Pomodoro)일을 끝내는 것이 두 가지 예입니다. 프로그래밍 분야에서 Test Driven Development는 한 번에 하나의 작은 달성 가능한 목표 (아기 단계)에 집중해야하기 때문에 실제로 권장하는 것입니다. TDD 접근 방식을 사용하면 테스트를 통해 클래스의 책임을 명확하게 정의한 다음 코드 작성시에만 초점을 맞추기 때문에 “실제로 속해 있지 않은 클래스에 함수를 넣을”가능성이 훨씬 줄어 듭니다. 여러 클래스 사이를 뛰어 넘어 조금씩 무작위로 채우는 것과는 반대로.

빈번한 휴식과 함께 지속 가능한 리듬을 채택하면 피로와 집중력 저하를 피할 수 있습니다. Linda Rising의 두뇌를 존중함으로써 생산성을 높이는 데 관심이있을 것입니다. Born to Cycle .

낮은 공간 능력에 관해서는, 당신이 그것에 대해 할 수있는 일이 많지 않을까 걱정됩니다. 그러나 노력은 그것을 약화시킬 수 있으며 프로그래밍에 필요한 유일한 기술과는 거리가 멀다. 창의성, 열정, 열정, 엄격함, 분석 기술, 선명도, 비즈니스 문제 파악, 협업 기술 등은 코드 기반의 평균 정신 시각화보다 약한 정신적 시각을 보완 할 수 있습니다.

요컨대 IMO가 필요한 것은 다음과 같습니다.

  • 징계

  • 연습

  • 지속 가능한 속도