프로그래밍 조언을 구하는 법

Heebeom·2023년 2월 22일
1

1. 프로그래밍 조언을 하기 전에

모르는 사람에게 프로그래밍 조언을 구하는 것은 항상 최후의 수단이어야 한다. 누군가의 답변을 기다리는 것은 몇 시간, 며칠이 걸리는 가장 비효율적인 문제해결 방법이다.

검색하면 몇 초면 나오는 사실을 굳이 질문하는 '핑거 프린세스'가 되지 말자. 이미 질문을 하고 답변을 받은 사례를 참고하고, 이를 적용하는 것이 훨씬 빠르고 효율적이다.

이렇게 비효율적인 방법을 사용하기로 했으면, 효율적인 질문법으로 손실을 최소화해야 한다. 비효율적인 질문으로 질문, 답, 질문, 답... 을 반복한다면, 1년이 걸리도록 문제를 해결하지 못할 것이다.



2. 효과적인 프로그래밍 조언을 구하는 법

질문의 의도를 의문문으로 확실하게 밝히자

문장은 실제적인 질문 형식으로 서술해야 한다. 그렇지 않으면 무엇을 묻는지 모호해질 것이다.

문제를 설명할 때, 자신의 의도를 상대방이 알고 있다고 가정하지 말자. 답변자로 하여금 '무엇을 묻는지' 질문의 의도를 먼저 파악시켜야 한다.

"코드가 동작하지 않아요"라고 시작하는 문장에서 무엇을 묻는지 알 수 있는가? "XXX에서 OOO을 어떻게 할 수 있을까요?" 같이 질문의 의도를 먼저 제시하자.

적절한 커뮤니티를 찾아 질문하자

파이썬 질문을 자바스크립트 포럼에 묻거나, 알고리즘 문제를 딥러닝 포럼에 묻는다면 별 효과가 없을 것이다.

대부분의 온라인 포럼은 특정 기술 Stack에 특화되어 있다. 예를 들어 OKKY는 Java, php스쿨은 php에 대해 다루는 것처럼 말이다.

당신이 사용하는 기술 Stack에 맞는 커뮤니티에 질문하는 것이 더욱 효율적이다. 아래 링크에서 국내 개발자 커뮤니티와 주요 분야를 정리해 놨으니 참고하자.

제타위키 - 개발자 커뮤니티 사이트 모음

질문을 요약한 제목을 달자

질문 내용을 요약한 제목을 써서 검색엔진이 잘 색인할 수 있게 하자.

"도와주세요.", "왜 이게 안 되나요?"같은 일반적인 제목은 너무 모호하며, 도와줄 사람들이 답변을 읽고 싶지도 않을 것이다. 꼭 질문 전체를 요약한 제목을 사용하자.

요약한 제목을 사용하면, 해당 경험을 가진 사람이 답변할 확률이 높으며 검색엔진이 색인 할 수 있어 답변의 빈도도 높아진다.

프로그램의 의도가 무엇인지를 설명하자

도움을 주려는 사람의 입장에선 여러분의 원하를 의도를 모르기 때문에 문제를 명확하게 파악할 수 없다.

"왜 프로그램이 안 돌아갈까요?"와 같은 단순한 질문을 할 때도, 프로그램의 의도가 무엇인지를 함께 알려줘야 한다.

여러분을 도와줄 사람들은 의도 달성을 위한 완전히 다른 접근법을 찾아 주거나, 의도의 가치를 파악해 시간낭비 하지 말고 깔끔하게 포기하라고 조언해 줄 수 있다.

전체 에러 메세지를 제공하자

추적정보를 포함한 전체 에러 메세지를 복사해서 붙어 넣어야 한다.

"out of range 에러가 발생했어요."에서는 어디 부분에, 어떤 로직에서 문제가 발생하는지 파악할 수 없다. 확인된 세부사항을 포함해서 전체 에러를 공유하자. 특히 이런 에러가 계속 발생하는 건지, 일시적인 문제인지도 명시해야 한다.

전체 코드를 공유하자

전체 코드를 공유해야 여러분을 도와줄 사람이 해당 프로그램을 실행해보고, 어떤 상황인지 파억할 수 있다.

전체 소스코드를 제공하고, 에러를 재현할 수 있는 최소한의 완전하고 재현 가능한 예제(MCR)를 만들어라. 이 의미는 문제를 충분히 재현하면서도 가능한 한 짧게 만들었단 뜻이다.

코드를 포매팅하고, 간결하게 제공하자

코드를 공유하는 목적은 도와줄 사람이 프로그램을 실행해 여러분이 겪는 에러를 재현하게 만드는 것이다.

def knuts(self, value):
if not isinstance(value, int) or value < 0:raise
WizCoinException('knuts 속성은 양수여야 한다.') self._knuts = value

당신은 위와 같은 코드를 쉽게 파악할 수 있는가? 특히 파이썬은 들여쓰기(indent)가 되지 않으면 실행조차 되지 않는다. 여러분을 도와줄 사람은 코드 형식을 맞추다가 도움을 포기할 것이다.

특히 코드를 스크린샷이나 사진을 찍어 올리지 말자. 복사해서 붙여 넣기도 힘들고, 가독성도 매우 떨어진다.

당신이 이미 시도한 방법을 알리자

여러분이 이미 시도한 내용과 그 결과를 알려, 도와줄 사람이 잘못된 시도를 되풀이하는 것을 방지하자.

당신이 이미 시도한 방법을 답변으로 듣고 싶은가? 시도한 방법과 결과를 알려, 잘못된 답변을 미리 방지하자.

또한 노력한 행동을 알려, 남들에게 소프트웨어를 작성해달라는 '해줘'가 아니라 단지 도움을 청하는 의도임을 분명이 하자. 인터넷에서는 '해줘' 마인드를 싫어하는 사람이 아주 많다.

당신의 개발 환경을 공유하자

여러분 컴퓨터의 특정 설정은 프로그램이 어떻게 실행되고 어떤 에러가 발생하는지에 영향을 미칠 수 있다.

사람들이 해당 문제를 재현해볼 수 있도록, 여러분은 다음과 같이 상세한 정보를 제공해야 한다.

  • 'Windows 11 Pro 22H2' 또는 'Linux LTS 22.04' 같은 OS 종류와 버전
  • 'Python 3.11' 같은 개발 언어의 버전
  • 'Django 2.1.1' 또는 'Flutter 2.12' 같은 프레임워크 버전

어떤 함수는 버전이 올라가면서 departed 되기도 하고, 새로운 기능이 생기기도 한다. 꼭 사용한 버전까지 명시해 답변의 혼선을 방지하자.



3. 정리

프로그래밍 조언을 구하는 것은 항상 최후의 수단이어야 한다.

해결 방법을 전혀 없는 경우에만 질문의 의도를 명확하게 하고, 오류를 재현 가능하게 내용을 구성해 질문하도록 하자.

당신이 한 질문은 나중에 또 다른 개발자가 참고하는 기록이 될 것이기도 하다.

profile
이도저도 아닌 개발자

0개의 댓글