여러분 개발자 하면 뗄수 없는게 질문입니다.
이 중요한 질문 잘하는 방법에 대해 말해보려고 합니다
이 질문이란 걸 잘 생각해보면요
개발자는 개발하다보면 항상 막히게 되있어요
그럼 어떻게 해결할지 먼저 생각하게 되죠.
자 이 생각한다는걸 달리보자면 스스로에게 질문하는겁니다
스스로에게 질문을 하는 과정에서 필요하다면 구글 검색을 하게 될수도 있는거고요
이렇게 해서 이런 저런 근거들을 모아서 논리적으로 고민하는것이죠
이렇게 고민 하는 과정에서 스스로 답을 찾아 문제를 해결할 수 있게되는겁니다
이런식으로 개발자는 문제를 만나고 자문자답을 해서 해결하면서 여기서 얻는 지식들이 쌓여서 성장하게됩니다
지식만 쌓이는게 아니라 검색능력과 문제를 논리적으로 풀어가는 요령이 쌓이는것이죠
따라서 문제를 많이 만나고 해결을 많이 해본사람이 잘하게되는것입니다
개발활동의 대부분의 시간은 이것을 스스로에게 자문하고 생각하는 시간이 되는것입니다
그런데 하다보면 스스로에게 물어봐도 답이 안나오는 예외상황이 생기기 마련입니다
이 예외상황은 혼자서는 할만큼 했으니 내가 아닌 남에게 물어봐야하는 상황인겁니다
남에게 의존을 해야할 때의 질문의 기술에 대한 이야기를 해보려고합니다
먼저 남에게 질문한다는거에 대한 정의를 내려보죠
이건 남에게 나를 위해 시간을 내서 수고를 좀 부탁한다는 뜻이며, 남에게 내가 지금까지 스스로에게 질문해서 얻어낸 고민의 결과를 공유한다는 뜻입니다.
자 그래서 일단 나를 위해 수고해줄 사람이 수고를 해줘야 할 이유를 만들어 주는게 가장 중요하고요, 또 내 고민의 결과를 효과적으로 상대방에게 설명해줘서 이 사람이 부담할 수고를 최소화시키는 노력이 중요합니다
이 두가지가 질문에서의 핵심입니다
하나씩 살펴보도록 하죠
일단 기본적으로 내 수고를 들어줘야 할 의무를 가지는 사람이 내 주변에 있는 경우는 왠만해서 없을겁니다.
질문을 할 수 있는 대상은 누가 될 수 있을지 생각해봅시다
일단 인터넷커뮤니티에 계시는 분들이 될수 있겠지요
이런 커뮤니티에 계시는 분들은 나와는 쌩판 모르는 남들입니다
여러분의 고민을 들어줄 의무가 전혀 없는 분들이죠
또는.. 회사나 학교에서 함께하는 동료들 아니면 친구들 일겁니다.
누가 되던 여러분과 특별한 관계에 있지 않은 이상 여러분을 그들이 도와줘야할 이유가 왠만해서 없을겁니다.
이들에게 여러분을 도와줘야 할 이유를 만들어줘야합니다
주변사람들에게라면 아무래도 평소에 이쁜짓을 많이 해야 도와주고싶겠지요
평소에 주변인들에게 잘 해서 인덕을 쌓아두도록 합시다
인터넷 커뮤니티상의 쌩판 모르는 사람들은 어떨때 여러분의 질문을 받아주고싶은 마음이 생길까요?
사람마다 다르겠지만 보통 질문이 흥미로울때 관심가게 되있습니다. 혹은 별 수고를 들이지 않고 간단하게 도움말을 줄 수 있을때 정도입니다
그래서 중요한 것은 사람들이 질문을 봤을 때 답변자가 수고할 부분이 적고 간단하게 콕 찝어서 답을 줄 수 있게끔 상황을 만들어주는것입니다. 이런 상황을 만드는 것은 질문자의 몫입니다
이건 인터넷커뮤니티에서 뿐 아니라 동료와 일할때에도 마찬가지입니다.
답변자의 부담을 줄여줘야합니다
그들의 시간과 노력은 소중하니까요
만약 질문을 이렇게 한다고 생각해봅시다
“지도 앱을 개발중인데 확대버튼을 눌러도 화면이 커지지 않습니다 어떻게 해야하나요?” 이런질문을 했다고 생각해봅시다.
이 질문은 일단 너무 두루뭉술합니다.
이말의 표현을 달리해보자면 “지도 앱을 개발중인데 확대버튼을 눌러도 화면이 커지지 않습니다 잘 작동하도록 고쳐주세요” 라는 말이되는겁니다
그러니까 나 대신 일 해달라는 의미가 될뿐입니다
대신 시간내서 무료봉사 해주고싶은 사람은 없겠지요
이런 식의 질문을 할것이라면 비용을 들여서 외주 맡기는것이 맞는 방법일겁니다.
이런걸 피하기 위해서는 질문을 하기 전에 최대한 답변자의 수고를 덜기 위해서 문제의 범위를 할수있는 만큼 좁혀놓고 질문해야합니다
문제를 좁히는 과정을 거치면 문제가 어느 한 점으로 모이게 되는데요, 이렇게 최대한 범위를 좁혀놓고 질문을 해야합니다
이렇게 문제의 원인의 있을 것으로 추정되는 범위를 최대한 좁혀서 파악한 내용을 질문자는 잠시 선생님으로 빙의되어 답변자에게 설명을 해줘야합니다.
설명을 할때는 대충 이야기하면 상대방도 알것이라고 내 기준으로 설명을 하는것이 아니라 명확하고 논리적으로 상대방 입장에서 알아듣게끔 설명을 해줘야합니다.
이 부분이 중요한데요 스스로가 논리적으로 상대방에게 상황을 전달하려면 충분히 자신이 가진 문제에 대한 파악이 최대한으로 끝나있어서 문제의 범위가 작은 한점으로 모여있는 상태여야합니다.
이걸 거치지 않고는 그냥 상대방에게 “내 일 해주세요” 라고 부탁하는것 밖에는 되지 않습니다
질문을 하고났더니 스스로 깨우쳐서 자문자답을 하게되는 경우들이 있을겁니다
그런 이유는 최대한 이 한점으로 모으는 작업을 스스로 충분히 했기 때문입니다
자 그런데 문제의 범위를 한점으로 모은다는게 생각처럼 쉽지 않을 수도 있습니다
사실 문제를 한점으로 모을수 있을 정도의 실력이라면 쫌만 더 생각하면 왠만해서 스스로 해결까지도 가능한경우입니다
자 그래서 이것이 어려울 경우 차선책에 대해서 이야기 해볼 차례입니다
거의 보통은 뭔가가 안되는 상황일 때 거기서 조금더 앞으로 나아가기 쉽지 않은 상황일겁니다
“지도 앱을 개발중인데 확대버튼 을 눌러도 화면이 커지지 않습니다 어떻게 해야하나요?” 라는 상황을 다시 가지고 와 봅시다
자 이건 그냥 나 대신 문제좀 찾아주세요를 부탁해야만 하는 상황인겁니다
이 필살기를 사용하더라도 최대한 답변자가 수고를 덜 수 있게끔 해줘야합니다
이런 상황이라면 가장 좋은 방법은 그냥 안되는 상황을 답변자에게 체험할 수 있게끔 모든 상황을 제공하는겁니다
그렇다고 소스코드를 보여주거나 하는것만으로는 부족합니다
소스코드만을 보여주게되면 일단 문제를 겪고있는 질문자가 보여줄 소스코드의 범위를 임의로 판단해서 제공할겁니다.
이 말에는 굉장한 모순이 있는게 문제를 해결하지 못하는 질문자는 문제가 될 코드의 범위를 스스로 판단할 능력이 없다는겁니다.
또한 해당 코드가 작동되기 위한 다른 의존성들이 포함되있을수도 있습니다.
무엇보다 이렇게 코드를 보여주면 답변자는 뇌내에서 코드를 가동시켜야 하는 부담을 안게 됩니다.
따라서 좋은 방법은 그냥 직접 실행해서 안되는 상황을 직접 체험할수 있게끔 URL만 클릭하면 들어가서 확인해볼 수 있도록 준비해서 제공해주는 겁니다.
이거는 그냥 외주맡긴거랑 동급이라 문제해결을 의뢰할 수 있는 플랫폼을 이용하는것도 방법일수 있겠습니다
질문에 대한 이야기를 해봤는데요
질문은 쉽지 않습니다
매우 논리적이여야 되고 설명능력까지 있어야하는 어쩌면 개발 그 자체만큼 생각할게 많은 작업입니다
이걸 잘하는 사람은 그냥 개발도 잘한다고 봐도 무리 없을듯 합니다
그리고 잊지 말아야할 것은 여러분께 도움을 줘야할 의무를 가진 사람은 없습니다
도움을 받았다면 감사의 표시를 합시다
질문만큼 중요한게 검색인데요 다음에는 검색에 대해서도 이야기해보도록 하겠습니다
감사합니다