면책 조항#
많은 프로젝트 웹사이트들이 도움을 받는 방법을 안내하는 섹션에서 이 문서를 링크하고 있습니다. 그것은 괜찮습니다. 우리가 의도한 용도니까요. 하지만 프로젝트 페이지에 이 링크를 거는 웹마스터라면, 링크 근처에 우리는 당신의 프로젝트를 위한 기술 지원 센터가 아닙니다라는 안내를 눈에 잘 띄게 표시해 주세요!
우리는 그런 안내 없이는 이 문서를 발행한 것이 전 세계의 모든 기술적 문제를 해결하는 것이 우리의 일이라고 생각하는 사람들에게 끊임없이 시달리게 된다는 것을 뼈저리게 배웠습니다.
만약 당신이 도움이 필요해서 이 문서를 읽고 있으면서, 이 문서의 저자들에게 직접 도움을 받을 수 있다는 인상을 가지고 떠난다면, 당신이 바로 우리가 말하는 그런 사람입니다. 우리에게 질문하지 마세요. 우리는 그냥 무시할 것입니다. 우리는 당신이 실제로 다루고 있는 소프트웨어나 하드웨어에 대해 잘 아는 사람들로부터 도움을 받는 방법을 알려주기 위해 여기 있는 것이지, 99.9%의 경우 그 사람은 우리가 아닙니다. 저자 중 한 명이 당신이 다루는 분야의 전문가라고 확실히 알지 않는 한, 우리를 내버려 두세요. 그러면 모두가 더 행복해질 것입니다.
서론#
해커(hacker)의 세계에서, 당신이 기술적 질문에 대해 받는 답변의 질은 질문의 난이도만큼이나 질문하는 방식에 달려 있습니다. 이 가이드는 만족스러운 답변을 얻을 가능성이 더 높은 방식으로 질문하는 법을 알려줄 것입니다.
오픈 소스(open source)의 사용이 널리 퍼진 지금, 해커뿐만 아니라 경험이 더 많은 다른 사용자들로부터도 좋은 답변을 얻을 수 있는 경우가 많습니다. 이것은 좋은 일입니다. 일반 사용자들은 초보자들이 흔히 겪는 실수에 대해 조금 더 관대한 편이니까요. 그렇더라도, 우리가 여기서 권장하는 방식으로 경험 많은 사용자들을 해커처럼 대하는 것이 그들로부터 유용한 답변을 이끌어내는 가장 효과적인 방법일 것입니다.
먼저 이해해야 할 것은, 해커들은 실제로 어려운 문제와 그에 대한 좋은, 생각을 자극하는 질문을 좋아한다는 것입니다. 그렇지 않았다면 우리는 여기 있지 않았을 것입니다. 흥미로운 질문을 던져주면 우리는 감사할 것입니다. 좋은 질문은 자극이자 선물입니다. 좋은 질문은 우리의 이해를 발전시키는 데 도움이 되고, 종종 우리가 미처 알아차리지 못했거나 생각하지 못했던 문제를 드러내기도 합니다. 해커들 사이에서 "좋은 질문이네요!"는 강하고 진심 어린 칭찬입니다.
그럼에도 불구하고, 해커들은 단순한 질문에 적대적이거나 거만하게 보이는 반응을 보인다는 평판을 가지고 있습니다. 때로는 초보자와 무지한 사람들에게 반사적으로 무례하게 구는 것처럼 보이기도 합니다. 하지만 이것은 사실이 아닙니다.
우리가 당당하게 적대적인 대상은, 질문하기 전에 스스로 생각하거나 숙제를 하려 하지 않는 것처럼 보이는 사람들입니다. 그런 사람들은 시간 낭비의 원인입니다 — 받기만 하고 돌려주지 않으며, 더 흥미로운 다른 질문이나 답변을 받을 자격이 더 있는 다른 사람에게 쓸 수 있었을 시간을 낭비합니다. 우리는 그런 사람들을 "루저(loser)"라고 부릅니다 (역사적인 이유로 때때로 "luser"라고 쓰기도 합니다).
우리는 많은 사람들이 우리가 작성한 소프트웨어를 그저 사용하고 싶어 할 뿐이며, 기술적 세부 사항을 배우는 데 관심이 없다는 것을 알고 있습니다. 대부분의 사람들에게 컴퓨터는 단지 도구일 뿐이고, 목적을 위한 수단일 뿐입니다. 그들에게는 더 중요한 일과 삶이 있습니다. 우리는 그것을 인정하며, 모든 사람이 우리를 매료시키는 기술적 문제에 관심을 가지기를 기대하지 않습니다. 그럼에도 불구하고, 우리의 답변 방식은 그런 관심을 가지고 문제 해결에 적극적으로 참여하려는 사람들에게 맞춰져 있습니다. 그것은 바뀌지 않을 것입니다. 바뀌어서도 안 됩니다. 만약 바뀐다면, 우리가 가장 잘하는 일에서 덜 효과적이 될 것이기 때문입니다.
우리는 (대부분) 자원봉사자입니다. 바쁜 삶에서 시간을 내어 질문에 답하고 있으며, 때로는 질문에 압도당하기도 합니다. 그래서 우리는 가차 없이 걸러냅니다. 특히, 루저로 보이는 사람들의 질문은 버리고, 질문 답변 시간을 더 효율적으로 위너(winner)들에게 사용합니다.
이런 태도가 불쾌하거나, 거만하거나, 오만하게 느껴진다면, 당신의 가정을 점검해 보세요. 우리는 당신에게 굽실거리라고 요구하는 것이 아닙니다. 사실, 우리 대부분은 당신을 동등한 존재로 대하고 우리 문화에 환영하고 싶어 합니다 — 만약 당신이 그것을 가능하게 하는 데 필요한 노력을 기울인다면요. 하지만 스스로를 도우려 하지 않는 사람들을 돕는 것은 단순히 비효율적입니다. 무지한 것은 괜찮습니다. 바보인 척하는 것은 괜찮지 않습니다.
따라서, 우리의 관심을 끌기 위해 이미 기술적으로 유능할 필요는 없지만, 유능함으로 이어지는 태도를 보여줄 필요는 있습니다 — 기민하고, 사려 깊고, 관찰력 있고, 해결책을 개발하는 데 적극적인 파트너가 되려는 의지를 보여주세요. 이런 종류의 차별을 받아들일 수 없다면, 해커들에게 개인적으로 도움을 기부해 달라고 요청하는 대신 상업적 기술 지원 계약에 비용을 지불하는 것을 권합니다.
우리에게 도움을 요청하기로 결정했다면, 루저가 되고 싶지 않을 것입니다. 루저처럼 보이고 싶지도 않을 것입니다. 빠르고 반응적인 답변을 얻는 가장 좋은 방법은, 똑똑하고, 자신감 있고, 단서를 가진 사람이 단지 하나의 특정 문제에 대해 도움이 필요한 것처럼 질문하는 것입니다.
(이 가이드의 개선은 환영합니다. esr@thyrsus.com 또는 respond-auto@linuxmafia.com으로 제안을 보내주세요. 단, 이 문서는 일반적인 네티켓(netiquette) 가이드가 아니며, 기술 포럼에서 유용한 답변을 이끌어내는 것과 구체적으로 관련되지 않은 제안은 일반적으로 거절할 것입니다.)
핵심 포인트
좋은 질문은 자극이자 선물입니다. 똑똑하고, 자신감 있고, 단서를 가진 사람이 단지 하나의 특정 문제에 대해 도움이 필요한 것처럼 질문하세요.
질문하기 전에#
이메일, 뉴스그룹, 또는 웹사이트 게시판에서 기술적 질문을 하기 전에 다음을 수행하세요:
- 질문하려는 포럼이나 메일링 리스트의 아카이브를 검색하여 답을 찾아보세요.
- 웹 검색을 통해 답을 찾아보세요.
- 매뉴얼을 읽어서 답을 찾아보세요.
- FAQ를 읽어서 답을 찾아보세요.
- 직접 살펴보거나 실험해서 답을 찾아보세요.
- 숙련된 친구에게 물어서 답을 찾아보세요.
- 프로그래머라면, 소스 코드를 읽어서 답을 찾아보세요.
주의
질문하기 전에 위의 단계들을 반드시 수행하세요. 이를 건너뛰면 무시당하거나 "루저"로 낙인찍힐 수 있습니다.
질문할 때, 이러한 것들을 먼저 했다는 사실을 보여주세요. 이것은 당신이 게으른 스펀지가 아니며 사람들의 시간을 낭비하지 않는다는 것을 확립하는 데 도움이 될 것입니다. 더 좋은 것은, 이러한 것들을 하면서 배운 것을 보여주는 것입니다. 우리는 답변에서 배울 수 있다는 것을 보여준 사람들의 질문에 답하는 것을 좋아합니다.
발생한 오류 메시지의 텍스트를 구글(Google)에서 검색하는 것과 같은 전략을 사용하세요 (웹 페이지뿐만 아니라 Google 그룹스도 검색하세요). 이것은 수정 문서나 당신의 질문에 답하는 메일링 리스트 스레드로 바로 연결될 수도 있습니다. 그렇지 않더라도, 도움을 요청하는 이메일이나 뉴스 게시물에서 "다음 문구로 구글 검색을 했지만 유망해 보이는 결과를 얻지 못했습니다"라고 말하는 것은 좋은 일입니다. 최소한 어떤 검색이 도움이 되지 않았는지 기록하는 역할을 하기 때문입니다. 또한 비슷한 문제를 가진 다른 사람들이 검색어를 통해 당신의 문제와 해결 스레드를 찾을 수 있도록 도와줄 것입니다.
시간을 들이세요. 몇 초간의 구글 검색으로 복잡한 문제를 해결할 수 있을 것이라고 기대하지 마세요. FAQ를 읽고 이해하고, 편안히 앉아서 문제에 대해 생각한 후에 전문가에게 접근하세요. 그들은 당신의 질문에서 당신이 얼마나 읽고 생각했는지 알 수 있을 것이며, 준비된 상태로 오면 더 기꺼이 도와줄 것입니다. 첫 번째 검색에서 답을 찾지 못했다고 (또는 너무 많은 결과가 나왔다고) 해서 즉시 모든 질문을 한꺼번에 쏟아내지 마세요.
질문을 준비하세요. 충분히 생각하세요. 성급하게 들리는 질문은 성급한 답변을 받거나, 아예 답변을 받지 못합니다. 도움을 구하기 전에 문제를 해결하기 위해 생각과 노력을 기울였다는 것을 보여줄수록, 실제로 도움을 받을 가능성이 높아집니다.
잘못된 질문을 하지 않도록 주의하세요. 잘못된 가정에 기반한 질문을 하면, 아무개 해커(J. Random Hacker)는 "멍청한 질문..."이라고 생각하면서 쓸모없이 문자 그대로의 답변을 할 가능성이 높습니다. 당신이 필요한 것이 아니라 요청한 것을 받는 경험이 교훈이 되기를 바라면서요.
답변을 받을 자격이 있다고 절대 가정하지 마세요. 당신에게 그런 자격은 없습니다. 결국 서비스에 대한 비용을 지불하는 것이 아니니까요. 답변을 얻으려면, 실질적이고, 흥미롭고, 생각을 자극하는 질문을 함으로써 답변을 얻어내야 합니다 — 다른 사람들로부터 수동적으로 지식을 요구하는 것이 아니라, 커뮤니티의 경험에 암묵적으로 기여하는 질문을 해야 합니다.
반면에, 해결책을 개발하는 과정에서 도울 수 있고 기꺼이 돕겠다는 것을 분명히 하는 것은 매우 좋은 시작입니다. "누가 힌트를 줄 수 있나요?", "제 예제에서 빠진 것이 무엇인가요?", "어떤 사이트를 확인했어야 했나요?"는 "제가 사용해야 할 정확한 절차를 올려주세요."보다 답변을 받을 가능성이 높습니다. 왜냐하면 누군가가 올바른 방향만 가리켜주면 당신이 과정을 완료할 의지가 있다는 것을 분명히 하고 있기 때문입니다.
질문할 때#
포럼을 신중하게 선택하세요#
질문하는 장소를 신중하게 선택하세요. 다음과 같은 행동을 하면 무시당하거나 루저로 낙인찍힐 가능성이 높습니다:
해커들은 자신의 소통 채널이 무관한 내용으로 넘쳐나는 것을 막기 위해 부적절하게 보내진 질문을 무시합니다. 이런 일이 당신에게 일어나는 것을 원하지 않을 것입니다.
따라서 첫 번째 단계는 적절한 포럼을 찾는 것입니다. 구글과 다른 웹 검색 방법이 당신의 친구입니다. 문제를 일으키는 하드웨어나 소프트웨어와 가장 밀접하게 관련된 프로젝트 웹페이지를 찾는 데 사용하세요. 보통 FAQ(자주 묻는 질문) 목록과 프로젝트 메일링 리스트 및 아카이브 링크가 있을 것입니다. 이 메일링 리스트는 당신의 자체적인 노력(찾은 FAQ를 읽는 것 포함)으로 해결책을 찾지 못했을 때 도움을 구할 마지막 장소입니다.
- 주제에 맞지 않는 포럼에 질문을 올리는 것
- 고급 기술 질문이 기대되는 포럼에 매우 초보적인 질문을 올리거나, 그 반대의 경우
- 너무 많은 뉴스그룹에 동시에 게시하는 것
- 면식도 없고 개인적으로 문제 해결 책임도 없는 사람에게 개인 이메일을 보내는 것
Stack Overflow#
검색한 다음, Stack Exchange에서 질문하세요.
최근 몇 년간 Stack Exchange 커뮤니티 사이트들이 기술적 질문과 기타 질문에 답하는 주요 자원으로 부상했으며, 많은 오픈 소스 프로젝트의 선호 포럼이기도 합니다.
Stack Exchange를 보기 전에 구글 검색부터 시작하세요. 구글은 실시간으로 색인합니다. 누군가 이미 비슷한 질문을 했을 가능성이 매우 높으며, Stack Exchange 사이트는 종종 검색 결과 상위에 나타납니다. 구글에서 아무것도 찾지 못했다면, 질문과 가장 관련 있는 특정 사이트에서 다시 검색하세요. 태그로 검색하면 결과를 좁히는 데 도움이 됩니다.
그래도 아무것도 찾지 못했다면, 가장 주제에 맞는 하나의 사이트에 질문을 올리세요. 서식 도구를 사용하고, 특히 코드에는 서식을 적용하며, 질문의 내용과 관련된 태그를 추가하세요 (특히 문제가 되는 프로그래밍 언어, 운영 체제, 또는 라이브러리의 이름). 댓글 작성자가 추가 정보를 요청하면, 원래 게시물을 편집하여 포함시키세요. 답변이 도움이 되면 위쪽 화살표를 클릭하여 추천하고, 답변이 문제를 해결했다면 투표 화살표 아래의 체크 표시를 클릭하여 정답으로 수락하세요.
웹 포럼과 IRC#
지역 사용자 그룹이나 리눅스 배포판에서 초보자가 도움을 받을 수 있는 웹 포럼이나 IRC 채널을 안내할 수 있습니다. 이곳은 특히 비교적 단순하거나 흔한 문제에 부딪혔다고 생각될 때 질문하기 좋은 첫 번째 장소입니다.
웹 포럼에 게시하기 전에, 검색 기능이 있는지 확인하세요. 있다면, 당신의 문제와 비슷한 키워드로 몇 번 검색해 보세요. 도움이 될 수 있습니다.
IRC에서는 채널에 처음 들어가자마자 긴 문제 설명을 쏟아내지 않는 것이 좋습니다. 일부 사람들은 이것을 채널 도배로 해석합니다. 채널에서 대화를 시작할 수 있도록 한 줄짜리 문제 설명을 말하는 것이 가장 좋습니다.
두 번째 단계로, 프로젝트 메일링 리스트를 사용하세요#
프로젝트에 개발 메일링 리스트가 있다면, 누가 가장 잘 답할 수 있는지 안다고 생각하더라도 개별 개발자가 아닌 메일링 리스트에 글을 쓰세요. 프로젝트의 문서와 홈페이지에서 프로젝트 메일링 리스트의 주소를 확인하고 사용하세요.
프로젝트에 "사용자" 메일링 리스트와 "개발자" (또는 "해커") 메일링 리스트가 모두 있고, 당신이 코드를 해킹하는 것이 아니라면, "사용자" 리스트에서 질문하세요. 개발자 리스트에서는 당신의 질문이 개발 트래픽을 방해하는 소음으로 경험될 가능성이 높습니다.
의미 있고 구체적인 제목을 사용하세요#
메일링 리스트, 뉴스그룹, 또는 웹 포럼에서 제목은 약 50자 이내로 자격 있는 전문가의 관심을 끌 수 있는 황금 같은 기회입니다. "도와주세요"와 같은 헛소리로 낭비하지 마세요 ("도와주세요!!!!"는 더더욱 안 됩니다. 이런 제목의 메시지는 반사적으로 삭제됩니다). 고통의 깊이로 우리를 감동시키려 하지 마세요. 대신 그 공간을 초간결한 문제 설명에 사용하세요.
좋은 제목 규칙 중 하나는 많은 기술 지원 조직에서 사용하는 "대상 - 이상 현상" 형식입니다. "대상" 부분은 문제가 있는 것이 무엇인지를 지정하고, "이상 현상" 부분은 예상 동작과의 차이를 설명합니다.
도와주세요! 노트북에서 비디오가 제대로 작동하지 않아요!
X.org 6.8.1 마우스 커서 깨짐, Fooware MV1005 비디오 칩셋
답장하기 쉽게 만드세요#
"답장을 ...으로 보내주세요"로 질문을 끝내면 답변을 받지 못할 가능성이 매우 높습니다. 메일 에이전트에서 올바른 Reply-To 헤더를 설정하는 데 몇 초도 투자할 수 없다면, 우리도 당신의 문제에 대해 생각하는 데 몇 초도 투자할 수 없습니다.
웹 포럼에서 이메일로 답장을 요청하는 것은 명백히 무례합니다. 스레드에 누군가 답글을 달 때 이메일 사본을 원한다면, 웹 포럼에서 보내도록 요청하세요. 이 기능은 "이 스레드 구독", "답변 시 이메일 발송" 등의 옵션으로 거의 모든 곳에서 지원됩니다.
명확하고, 문법에 맞고, 맞춤법이 올바른 언어로 작성하세요#
경험상 부주의하고 엉성한 글쓴이는 보통 부주의하고 엉성한 사고와 코딩을 합니다 (충분히 확률이 높습니다). 부주의하고 엉성한 사고를 하는 사람들의 질문에 답하는 것은 보람이 없습니다. 우리는 다른 곳에 시간을 쓰는 것을 선호합니다.
따라서 질문을 명확하고 잘 표현하는 것이 중요합니다. 그렇게 할 수 없다면, 우리도 관심을 기울일 수 없습니다. 언어를 다듬는 데 추가 노력을 기울이세요. 딱딱하거나 격식을 차릴 필요는 없습니다 — 사실, 해커 문화는 정확하게 사용된 비격식적이고, 속어적이고, 유머러스한 언어를 높이 평가합니다. 하지만 정확해야 합니다. 당신이 생각하고 주의를 기울이고 있다는 표시가 있어야 합니다.
영어가 아닌 포럼에서 질문하는 경우에도, 맞춤법과 문법 오류에 대해 약간의 여유는 있지만, 게으름에 대한 여유는 전혀 없습니다 (네, 우리는 보통 그 차이를 구별할 수 있습니다).
접근 가능한 표준 형식으로 질문을 보내세요#
질문을 인위적으로 읽기 어렵게 만들면, 그렇지 않은 질문에 비해 무시될 가능성이 높습니다. 따라서:
일반 텍스트 메일을 보내세요, HTML이 아닌. MIME 첨부 파일은 보통 괜찮지만, 실제 콘텐츠(첨부된 소스 파일이나 패치 등)인 경우에만 그렇고, 메일 클라이언트가 생성한 보일러플레이트가 아닌 경우에만 그렇습니다.
해커들이 Microsoft Word나 Excel 같은 폐쇄적 독점 문서 형식을 읽을 수 있을 것이라고 절대 기대하지 마세요. 대부분의 해커들은 이런 것에 대해 현관 앞에 돼지 분뇨 더미가 쌓인 것과 비슷한 반응을 보입니다.
웹 포럼에서는 "스마일리"와 "HTML" 기능을 남용하지 마세요. 스마일리 한두 개는 보통 괜찮지만, 화려한 색상 텍스트는 사람들이 당신을 유치하다고 생각하게 만드는 경향이 있습니다.
문제에 대해 정확하고 상세하게 설명하세요#
문제나 버그의 증상을 주의 깊고 명확하게 설명하세요. 문제가 발생하는 환경(기기, OS, 애플리케이션 등)을 설명하세요. 배포판과 릴리스 버전을 제공하세요 (예: "Fedora Core 7", "Slackware 9.1" 등).
질문하기 전에 문제를 이해하기 위해 수행한 조사를 설명하세요. 문제를 직접 파악하기 위해 취한 진단 단계를 설명하세요. 컴퓨터나 소프트웨어 구성의 최근 변경 사항을 설명하세요.
가능하다면, 통제된 환경에서 문제를 재현할 수 있는 방법을 제공하세요. 이것은 특히 코드의 버그라고 생각되는 것을 보고할 때 중요합니다.
양은 정밀함이 아닙니다#
정확하고 상세해야 합니다. 이 목적은 단순히 방대한 양의 코드나 데이터를 도움 요청에 쏟아붓는 것으로는 달성되지 않습니다. 크고 복잡한 테스트 케이스가 프로그램을 망가뜨리고 있다면, 가능한 한 작게 줄여보세요.
이것은 최소 세 가지 이유로 유용합니다. 하나: 질문을 단순화하는 데 노력을 기울이는 것이 보이면 답변을 받을 가능성이 높아집니다. 둘: 질문을 단순화하면 유용한 답변을 받을 가능성이 높아집니다. 셋: 버그 보고서를 다듬는 과정에서 스스로 수정이나 해결 방법을 개발할 수 있습니다.
버그를 발견했다고 성급하게 주장하지 마세요#
소프트웨어에 문제가 있을 때, 매우 매우 확실하지 않는 한 버그를 발견했다고 주장하지 마세요. 힌트: 문제를 수정하는 소스 코드 패치나 이전 버전에 대한 회귀 테스트를 제공할 수 없다면, 아마 충분히 확실하지 않은 것입니다.
문제가 당신에게만 발생하지 않는 다른 많은 사용자가 있다는 것을 기억하세요. 그렇지 않았다면 문서를 읽고 웹을 검색하면서 알게 되었을 것입니다. 이것은 아마도 소프트웨어가 아니라 당신이 무언가를 잘못하고 있을 가능성이 매우 높다는 것을 의미합니다.
질문할 때, 실제로 버그를 발견했다고 개인적으로 꽤 확신하더라도, 당신이 무언가를 잘못하고 있는 것처럼 글을 쓰는 것이 가장 좋습니다. 정말로 버그가 있다면, 답변에서 알게 될 것입니다.
비굴함은 숙제를 대신하지 않습니다#
무례하거나 거만하게 답변을 요구해서는 안 된다는 것을 이해한 일부 사람들은 반대 극단으로 후퇴하여 비굴해집니다. "저는 그저 한심한 초보 루저일 뿐이지만..." 이것은 산만하고 도움이 되지 않습니다. 실제 문제에 대한 모호함과 결합되면 특히 짜증납니다.
시간을 낭비하지 마세요, 우리의 시간도요. 대신, 배경 사실과 질문을 가능한 한 명확하게 제시하세요. 그것이 비굴해지는 것보다 자신을 위치시키는 더 나은 방법입니다.
추측이 아닌 문제의 증상을 설명하세요#
해커들에게 당신이 문제의 원인이라고 생각하는 것을 말하는 것은 유용하지 않습니다. (당신의 진단 이론이 그렇게 대단하다면, 다른 사람에게 상담을 구하겠습니까?) 따라서, 해석과 이론이 아닌 무엇이 잘못되었는지의 원시 증상을 말하고 있는지 확인하세요. 해석과 진단은 그들이 하도록 하세요.
커널 컴파일 시 연속적인 SIG11 오류가 발생하는데, 메인보드 트레이스에 미세한 균열이 있는 것 같습니다. 이를 확인하는 가장 좋은 방법은 무엇인가요?
자작 K6/233, FIC-PA2007 메인보드(VIA Apollo VP2 칩셋), 256MB Corsair PC133 SDRAM에서 전원 켠 후 약 20분 후부터 커널 컴파일 중 빈번한 SIG11 오류가 발생하기 시작하지만, 처음 20분 동안은 절대 발생하지 않습니다. 재부팅해도 시계가 리셋되지 않지만, 밤새 전원을 끄면 리셋됩니다. RAM을 모두 교체해도 도움이 되지 않았습니다. 일반적인 컴파일 세션 로그의 관련 부분은 다음과 같습니다.
문제의 증상을 시간순으로 설명하세요#
무엇이 잘못되었는지 파악하는 데 가장 유용한 단서는 종종 직전에 발생한 사건에 있습니다. 따라서, 당신이 정확히 무엇을 했고, 기기와 소프트웨어가 무엇을 했는지를 폭발 직전까지 설명해야 합니다.
설명이 길어지면 (약 4단락 이상), 문제를 맨 위에 간결하게 진술한 다음 시간순 이야기를 따르는 것이 유용할 수 있습니다. 그렇게 하면 해커들이 당신의 설명을 읽을 때 무엇을 주시해야 하는지 알 수 있습니다.
단계가 아닌 목표를 설명하세요#
무언가를 하는 방법을 알아내려는 경우 (버그를 보고하는 것이 아닌), 목표를 설명하는 것부터 시작하세요. 그런 다음에야 막혀 있는 특정 단계를 설명하세요.
기술적 도움이 필요한 사람들은 종종 높은 수준의 목표를 마음에 두고 있으면서 목표를 향한 하나의 특정 경로에서 막힙니다. 그들은 그 단계에 대한 도움을 구하러 오지만, 경로가 잘못되었다는 것을 깨닫지 못합니다.
FooDraw 프로그램의 색상 선택기에서 16진수 RGB 값을 입력하려면 어떻게 해야 하나요?
이미지의 색상 테이블을 원하는 값으로 교체하려고 합니다. 현재 각 테이블 슬롯을 편집하는 방법밖에 보이지 않는데, FooDraw의 색상 선택기에서 16진수 RGB 값을 입력할 수 없습니다.
개인 이메일로 답장을 요청하지 마세요#
해커들은 문제 해결이 공개적이고 투명한 과정이어야 한다고 믿습니다. 이 과정에서 첫 번째 답변 시도가 더 지식이 있는 누군가가 불완전하거나 부정확하다는 것을 알아차리면 수정될 수 있고 수정되어야 합니다.
개인 답장을 요청하면, 이 과정과 보상을 모두 방해하게 됩니다. 이렇게 하지 마세요. 개인적으로 답장할지는 응답자의 선택입니다.
질문을 명확하게 하세요#
개방형 질문은 개방형 시간 낭비로 인식되는 경향이 있습니다. 유용한 답변을 줄 수 있는 사람들은 가장 바쁜 사람들이기도 합니다. 그런 사람들은 개방형 시간 낭비에 알레르기가 있으므로, 개방형 질문에도 알레르기가 있는 경향이 있습니다.
응답자에게 무엇을 해달라고 원하는지 (포인터 제공, 코드 전송, 패치 확인 등) 명확하게 하면 유용한 응답을 받을 가능성이 높아집니다. 이것은 그들의 노력에 초점을 맞추고, 응답자가 도움에 할당해야 하는 시간과 에너지에 암묵적으로 상한선을 둡니다.
코드에 대해 질문할 때#
어떤 종류의 문제를 찾아야 하는지 힌트를 주지 않고 다른 사람에게 깨진 코드를 디버깅해 달라고 요청하지 마세요. 수백 줄의 코드를 올리면서 "작동하지 않습니다"라고 말하면 무시당할 것입니다. 십여 줄의 코드를 올리면서 "7번째 줄 이후에
코드 문제에 대해 정확하게 설명하는 가장 효과적인 방법은 최소한의 버그 시연 테스트 케이스를 제공하는 것입니다. 최소 테스트 케이스란? 문제의 예시입니다. 바람직하지 않은 동작을 보여주기에 충분한 코드만 있으면 됩니다.
숙제 질문을 올리지 마세요#
해커들은 숙제 질문을 잘 알아봅니다. 우리 대부분이 직접 해봤으니까요. 그 질문들은 당신이 경험에서 배울 수 있도록 당신이 풀어야 하는 것입니다. 힌트를 요청하는 것은 괜찮지만, 전체 해결책을 요청하는 것은 안 됩니다.
무의미한 질문을 제거하세요#
"누가 도와줄 수 있나요?" 또는 "답이 있나요?"와 같은 의미 없는 질문으로 도움 요청을 마무리하는 유혹을 참으세요. 첫째: 문제 설명을 반쯤이라도 제대로 작성했다면, 이런 추가 질문은 기껏해야 불필요합니다. 둘째: 불필요하기 때문에, 해커들은 이것을 짜증스럽게 여기며 "네, 도움을 받을 수 있습니다" 또는 "아니요, 당신을 위한 도움은 없습니다"와 같은 논리적으로 완벽하지만 무시하는 답변을 돌려줄 가능성이 높습니다.
"긴급"이라고 표시하지 마세요, 당신에게 긴급하더라도#
그것은 당신의 문제이지, 우리의 문제가 아닙니다. 긴급함을 주장하는 것은 역효과를 낼 가능성이 매우 높습니다. 대부분의 해커들은 즉각적이고 특별한 관심을 끌려는 무례하고 이기적인 시도로 그런 메시지를 삭제할 것입니다.
예의는 해가 되지 않으며, 때로는 도움이 됩니다#
예의를 갖추세요. "부탁드립니다"와 "관심 가져주셔서 감사합니다" 또는 "배려해 주셔서 감사합니다"를 사용하세요. 사람들이 무료로 도움을 주는 데 시간을 쓴다는 것에 감사하다는 것을 분명히 하세요.
솔직히 말해서, 이것은 문법적으로 정확하고, 명확하고, 정밀하고, 서술적이며, 독점 형식을 피하는 것만큼 중요하지 않습니다 (그리고 대체할 수도 없습니다). 해커들은 일반적으로 정중하지만 모호한 것보다 다소 무뚝뚝하지만 기술적으로 날카로운 버그 보고서를 선호합니다.
그러나, 기술적인 부분이 잘 갖춰져 있다면, 예의는 유용한 답변을 받을 확률을 높여줍니다.
해결 후 간단한 후속 메모를 보내세요#
문제가 해결된 후 도움을 준 모든 사람에게 메모를 보내세요. 어떻게 되었는지 알려주고 다시 한번 도움에 감사하세요. 문제가 메일링 리스트나 뉴스그룹에서 일반적인 관심을 끌었다면, 그곳에 후속 글을 올리는 것이 적절합니다.
후속 글은 길고 복잡할 필요가 없습니다. 간단한 "안녕하세요 — 네트워크 케이블 불량이었습니다! 감사합니다, 여러분. - 빌"이 아무것도 없는 것보다 낫습니다. 사실, 해결책에 진정한 기술적 깊이가 없다면 짧고 달콤한 요약이 긴 논문보다 낫습니다.
예의 바르고 유익할 뿐만 아니라, 이런 종류의 후속 글은 메일링 리스트/뉴스그룹/포럼의 아카이브를 검색하는 다른 사람들이 정확히 어떤 해결책이 도움이 되었는지 알 수 있게 해주어 그들에게도 도움이 될 수 있습니다.
답변을 해석하는 법#
RTFM과 STFW: 당신이 심각하게 망쳤다는 신호#
"RTFM"이라는 답변을 받았다면, 보낸 사람은 당신이 매뉴얼을 읽었어야 한다고 생각합니다 (RTFM = Read The Fucking Manual). 그 사람이 거의 틀림없이 맞습니다. 가서 읽으세요.
RTFM에는 더 젊은 친척이 있습니다. "STFW"라는 답변을 받았다면, 보낸 사람은 당신이 웹을 검색했어야 한다고 생각합니다 (STFW = Search The Fucking Web). 그 사람이 거의 틀림없이 맞습니다. 가서 검색하세요.
이런 답변에 불쾌해하지 마세요. 해커 기준으로, 응답자는 당신을 무시하지 않은 것만으로도 당신에게 거친 종류의 존경을 보여주고 있는 것입니다. 대신 이 할머니 같은 친절함에 감사해야 합니다.
이해하지 못하겠다면...#
답변을 이해하지 못하겠다면, 즉시 설명을 요구하지 마세요. 원래 질문에 답을 찾으려고 사용했던 도구들 (매뉴얼, FAQ, 웹, 숙련된 친구)을 사용하여 답변을 이해하세요. 그런 다음에도 설명을 요청해야 한다면, 배운 것을 보여주세요.
무례함에 대처하기#
해커 서클에서 무례해 보이는 많은 것들은 불쾌감을 주려는 의도가 아닙니다. 오히려, 문제 해결에 더 관심이 있는 사람들에게 자연스러운 직설적이고 헛소리를 걸러내는 소통 스타일의 산물입니다.
무례함을 감지했을 때, 침착하게 반응하려고 노력하세요. 누군가 정말로 막나가고 있다면, 리스트나 포럼의 선임자가 그 사람을 지적할 가능성이 매우 높습니다.
루저처럼 반응하지 않기#
해커 커뮤니티 포럼에서 이 글에서 설명한 방식이나 비슷한 방식으로 몇 번 실수할 가능성이 높습니다. 그리고 당신이 어떻게 실수했는지 정확히 들을 것입니다. 공개적으로요.
이런 일이 발생했을 때, 가장 나쁜 반응은 그 경험에 대해 투덬거리거나, 언어적 공격을 받았다고 주장하거나, 사과를 요구하는 것 등입니다. 대신, 이렇게 하세요:
극복하세요. 이것은 정상입니다. 사실, 건강하고 적절합니다.
커뮤니티 기준은 저절로 유지되지 않습니다. 사람들이 적극적으로, 눈에 보이게, 공개적으로 적용함으로써 유지됩니다. 모든 비판이 개인 이메일로 전달되었어야 한다고 투덬거리지 마세요. 그것은 작동 방식이 아닙니다.
하지 말아야 할 질문들#
다음은 전형적인 멍청한 질문들과, 해커들이 답하지 않을 때 무슨 생각을 하는지입니다.
Q:X 프로그램이나 리소스를 어디서 찾을 수 있나요?
A:내가 찾을 곳과 같은 곳에서 찾을 수 있습니다 — 웹 검색의 다른 쪽 끝에서요. 아직도 구글 사용법을 모르는 사람이 있나요?
Q:X를 사용해서 Y를 하려면 어떻게 해야 하나요?
A:Y를 하고 싶다면, 적절하지 않을 수 있는 방법의 사용을 전제하지 않고 그 질문을 해야 합니다.
Q:쉘 프롬프트를 어떻게 설정하나요?
A:이 질문을 할 정도로 똑똑하다면, RTFM하고 스스로 알아낼 정도로 똑똑합니다.
Q:Bass-o-matic 파일 변환기를 사용해서 AcmeCorp 문서를 TeX 파일로 변환할 수 있나요?
A:직접 해보세요. 그렇게 하면 (a) 답을 알게 되고, (b) 내 시간을 낭비하지 않게 됩니다.
Q:내 {프로그램, 설정, SQL 문}이 작동하지 않습니다
A:이것은 질문이 아니며, 당신의 실제 질문을 캐내기 위해 스무 고개 놀이를 하는 데 관심이 없습니다.
Q:Windows 컴퓨터에 문제가 있습니다. 도와주실 수 있나요?
A:네. 그 Microsoft 쓰레기를 버리고 Linux나 BSD 같은 오픈 소스 운영 체제를 설치하세요.
Q:내 프로그램이 작동하지 않습니다. 시스템 기능 X가 고장 난 것 같습니다.
A:당신이 완전히 무능할 가능성이 훨씬 더 높습니다.
Q:Linux나 X를 설치하는 데 문제가 있습니다. 도와주실 수 있나요?
A:아니요. 지역 Linux 사용자 그룹에 직접 도움을 요청하세요.
Q:루트 권한을 얻거나/채널 관리자 권한을 훔치려면 어떻게 해야 하나요?
A:당신은 그런 것을 하고 싶어 하는 비열한 사람이고, 해커에게 도움을 요청하는 바보입니다.
좋은 질문과 나쁜 질문#
마지막으로, 예시를 통해 똑똑하게 질문하는 방법을 설명하겠습니다.
Foonly Flurbamatic에 대한 정보를 어디서 찾을 수 있나요?
구글에서 "Foonly Flurbamatic 2600"을 검색했지만 유용한 결과를 얻지 못했습니다. 이 장치의 프로그래밍 정보에 대한 포인터를 얻을 수 있을까요?
foo 프로젝트의 코드가 컴파일되지 않습니다. 왜 고장 난 건가요?
foo 프로젝트의 코드가 Nulix 버전 6.2에서 컴파일되지 않습니다. FAQ를 읽었지만 Nulix 관련 문제에 대한 내용이 없었습니다. 제가 뭔가 잘못한 건가요?
메인보드에 문제가 있습니다. 누가 도와줄 수 있나요?
S2464 메인보드에서 X, Y, Z를 시도했습니다. Athlon MP 메인보드에서 grommicking의 일반적인 원인은 무엇인가요?
답변을 얻을 수 없다면#
답변을 얻을 수 없다면, 우리가 도울 수 없다고 느끼는 것을 개인적으로 받아들이지 마세요. 때때로 질문받은 그룹의 구성원들이 단순히 답을 모를 수 있습니다.
일반적으로, 질문을 단순히 다시 올리는 것은 나쁜 생각입니다. 인내심을 가지세요.
다른 도움의 원천이 있습니다. 소프트웨어에 대한 열정을 가진 많은 온라인 및 지역 사용자 그룹이 있습니다.
또한 도움을 받기 위해 계약할 수 있는 많은 상업 회사가 있습니다. 도움에 대해 비용을 지불해야 한다는 생각에 낙담하지 마세요!
도움이 되는 방식으로 답변하는 법#
부드럽게 대하세요. 문제 관련 스트레스는 사람들을 실제보다 더 무례하거나 멍청하게 보이게 할 수 있습니다.
처음 위반하는 사람에게는 비공개적으로 답하세요.
확실하지 않으면, 그렇다고 말하세요! 틀리지만 권위 있게 들리는 답변은 아예 없는 것보다 나쁩니다.
도울 수 없다면, 방해하지 마세요.
더 많은 세부 사항을 이끌어내기 위해 탐색적 질문을 하세요.
질문에 답할 것이라면, 좋은 가치를 제공하세요. 좋은 도구를 제안하세요. 질문을 재구성하세요.
커뮤니티가 질문에서 배울 수 있도록 도와주세요.
감사의 말#
Evelyn Mitchell은 몇 가지 멍청한 질문 예시를 제공하고 "도움이 되는 방식으로 답변하는 법" 섹션에 영감을 주었습니다. Mikhail Ramendik은 특히 가치 있는 개선 제안을 해주었습니다.