모든 함정을 나열 할 수는 없지만, 종종 질문을 공식화하고 자체 포함 된 문제에 복싱하는 것은 종종 충분한 준비를 할 때까지 너무 많은 작업을 필요로하므로 더 많은 질문에 대한 답변을 얻을 수 있습니다. 그렇지 않으면 시간보다.
내가 게시 한 질문의> 75 %에 대해서도 동일하게 경험합니다.
그러나 이것이 그렇게 귀찮게하지 않는 주장은 아닙니다. 이것은 효과적으로 고무 오리 디버깅입니다. 당신은 당신의 질문에 대한 응답으로 잘릴 수 있다고 생각 되는 질문에 대한 답을 찾고 있습니다. 이는 다른 사람들의 관점에서 문제에 대해 생각하고 있음을 의미합니다. 이는 가능한 모든 방향에서 문제에 대해 생각하고 있음을 의미합니다. 결함을 찾는 가장 좋은 방법입니다.
기껏해야 여기에서 대답을 명확하게 생각할 수 없다는 결론을 내 렸습니다. "최악"에서는 자신의 질문에 대답하게됩니다. 전혀 나쁘지 않기 때문에 따옴표를 명심하십시오. 시간이 조금 비효율적이었을 수도 있지만 문제를 해결하지 않기로 결정하는 것보다 천천히 문제를 해결하는 것이 좋습니다 . 결국 문제를 더 빨리 해결할 수 있습니다.
지목 사항:
신생 개발자 였을 때 ASP.Net 오류 페이지를 여러 번 처리했습니다. 무엇이 잘못되었는지 파악하기 위해 Google에 메시지가 필요했습니다. 올바른 솔루션을 얻기까지 몇 시간이 걸릴 수 있습니다. 나는 기본적으로이 책의 모든 실수를 저지르고 그 결과 문제를 디버깅해야하는 결과를 처리해야했습니다.
이제 오류가 표시되면 문제의 원인이 될 수있는 "일반적인 용의자"를 이미 알고 있습니다. "정상 용의자"에 대한 나의 정신 목록은 내가 일하는 동안 가장 많이 겪었던 문제들을 효과적으로 근거로합니다. 시간이 많이 걸리지 않는 구글링 시간의 레그 작업을 먼저 수행하지 않았다면 결코이 정신 목록을 작성하지 않았을 것 입니다. 그러나 이제 그 정신 목록을 얻었으므로 문제 해결에 훨씬 빠릅니다.
또한 손가락을 대지 못하지만 자유로운 대화의 반응은 내가 생각할 수있는 어떤 형태의 텍스트 인터넷 토론과도 일치하지 않습니다.
나는 여기에 다소 동의하지 않는다. 당신은 인터넷 통신이 반응이 좋지 않다는 것이 맞지만, 이것이 당신에게 나쁘다는 잘못된 생각입니다.
고독한 개발자는 고무 오리 디버깅에 의존합니다. RDD 작업을 수행하는 데있어 핵심 요소 는 고무 오리가 가지고있는 질문을 예상 한다는 것입니다. 고무 오리가 실제로 말하는 것에 의존 할 수는 없습니다.
느린 메시징 시스템 (StackOverflow에 게시하거나 편지를 통해 통신)을 처리 할 때, 처음에 올바르게 처리하도록 인센티브가 부여됩니다. 실수를 바로 잡아야하므로 느리고 힘든 과정이 될 것입니다.
이에 비해 빠른 메시징 시스템 (대화, 인스턴트 메시징)을 사용하면 즉시 무언가를 수정할 수 있습니다 . 무언가를 빨리 고칠 수있는 능력은 사람들이 그것이 올바른지 확인하기 위해 인센티브를 줄입니다.
4 가지 경우 :
- 개발자로 개인 분석 / 할 일 목록을 만들 때도 펜과 종이를 사용합니다. 노트를 입력 할 때 "나중에 쉽게 고칠 수있다"고 생각하기 때문에 가정과 허위에 대해 글을 쓰는 것을 알았습니다. 그러나 종이에 쓴 내용을 수정해야하는 것은 성가신 일입니다. 여러 줄을 긋고 선 사이에 글을 써야합니다. 종이 에 글을 쓰려고 노력하기 전에 사실을 확인해야 합니다. 이것은 버그를 생성하는 코드를 작성하기 전에 많은 오해를 일찍 발견합니다.
- 할머니는 비서 (타자기의 나이)였습니다. 공식 문서에 오타를 만들면 전체 페이지를 다시 입력해야했습니다. 내 이모는 비서 (워드 프로세서의 연령)입니다. 그녀는 자동 맞춤법 검사기에 의존 할 수 있으며 최소한의 노력으로 실수를 쉽게 해결할 수 있습니다. 놀랍게도, 할머니는 이모에 비해 타이핑 오류와 철자 오류가 훨씬 적습니다.
- 비디오 게임은 카트리지에 인쇄되었습니다. 출시 후 버그를 수정하는 것은 거의 불가능했습니다. 모든 카트리지를 다시 인쇄하고 모든 공급 업체에 배포해야 하며 공급 업체가 이미 게임을 구매 한 고객과 연락 할 수 있기 를 바랍니다 . 비용이 많이 들며 (실제 생산 비용의 두 배) 여전히 일부 고객에게는 도달하지 못합니다. 이제 인터넷 패치 시대에 게임 개발자는 출시일 버그를 피할 수 있도록 게임 테스트에 상당히 적은 투자 를하는 것으로 나타났습니다 . 모든 고객에게 직접 수정 프로그램을 전달하기가 훨씬 더 쉽기 때문입니다. 실수로 인한 영향은 가능한 모든 테스트를 수행하는 것과 비교하여 사실 이후 몇 가지 문제를 해결하는 것이 더 나은 지점까지 최소화됩니다 발생할 수있는 오류.
- 나는 엘리베이터가없는 3 층짜리 아파트에 살았으며 종종 건물에서 한두 개의 거리를 주차해야했습니다. 나는 내 차에서 무언가를 가져가는 것을 거의 잊었다. 이제 차도 옆에있는 내 차가있는 집에 살고 있습니다. 나는 항상 내 차에서 물건을 가져가는 것을 잊었다 .
여기서 근본적인 아이디어 는 어려운 교환 시스템으로 사람들이 정확하고 사실을 확인한 교환을 장려한다는 것 입니다. 형벌의 심각성 (= 어려운 수정 과정)은 실수하지 않도록 가르쳐줍니다.
또한 세부적인 내용을 숨겨 잘 정의 된 질문을하면 누군가 생각하지 못한 문제를 발견 할 가능성이 없습니다.
MCVE 를 만들 때 단순히 MCVE 를 만들어 질문에 게시해서는 안됩니다. 먼저 그것을해야 자신의 문제를 분리 할 수 있도록. 그리고 나서 더 이상 문제를 줄일 수 없다고 생각할 때 여전히 원인을 알 수 없습니다. 그런 다음 StackOverflow에 대한 유효한 질문이 있습니다.
지목 사항:
항상 샌드 박스라는 간단한 콘솔 앱으로 실행되는 두 번째 Visual Studio가 있습니다. 기술적 인 문제가 생길 때마다 문제가되는 코드를 샌드 박스에 복사하고 그 문제를 해결하기 시작합니다.
- 이 설정을 변경하면 어떻게됩니까?
- 코드를 줄이면 문제를 재현 할 수 있습니까?
- 어떤 설정으로 문제를 재현 할 수 있습니까?
90 %의 경우 샌드 박스가 주변 상황에 방해받지 않고 문제 코드를 보도록 도와 주었기 때문에 문제의 원인을 찾았습니다 (예 : 코드의 다른 부분에 대한 값에 대한 불확실성).
다른 10 %의 경우 문제를 재현하기위한 최소한의 코드가 남았습니다.이 코드는 StackOverflow에 게시하는 완벽한 예제 스 니펫으로 사용됩니다.
마지막으로, 나는 명백한 이유로, 전 세계가 나머지 영원을 바라 볼 수 있도록 프로젝트 전체를 게시하고 싶지 않습니다.
MCVE를 이미 가지고 있다면 개인 정보 (또는 회사 정보)에 많은 정보가 없어야합니다. 그렇게하면 코드가 최소화되므로 이름을보다 기본적인 foo / bar / baz 예제로 쉽게 바꿀 수 있습니다.