본문 바로가기

프로그래밍

신입은 언제 질문을 해야 하는 걸까요?

신입은 언제 질문을 해야 하는 걸까요?

인터넷에서 종종 보는 질문입니다.

A: 사수가 질문을 듣고 기분이 안나빠질 때...


는 농담이고... 이 질문을 바꿔 말하면, 얼마나 고민 하고 질문을 해야 하는 건가요? 가 됩니다.


당연하게도, 각자의 선호도는 있을 지언정 명확한 기준은 없습니다. 그러니까 논쟁이 되는 거겠죠. 하지만, 단순히 케바케라는 일반적인 결론을 내기에는 내가 모르는 것에 대해서 얼마나 생각해 봐야 하나... 는 중요한 주제이고, 신입으로 조직 생활을 해 나가기 위해 자신만의 답이 필요합니다.


결론부터 얘기하면, 문제를 해결하기 위해서 계속 고민하고 고민하다가 스스로에게 어떤 질문을 던져야 하는지 모르는 상황에 도달하면, 사수에게 물어볼 것을 추천합니다.


스스로에게 어떤 질문을 던져야 하는지 모르는 상황에 대해서 부연 설명을 하자면, 우선 문제 해결이 뭔지에 대한 정의부터 해야합니다. Scott Hanselman은 문제 해결을 "예/아니오 질문으로 쪼개서 물을 수 있는 것" 이라고 정의했습니다.


문제 해결을 하려면 문제가 어디서 발생했는지 알아야 하고 그 문제가 어디서 발생했는지 추정하기 위해서 작은 질문들로 쪼개야 합니다.


예를 들어보겠습니다. 프로젝트를 만들고, html 을 열심히 작성하고 서버에 코드를 올렸는데, 브라우저에서 우리가 의도한 url을 접속했는데 페이지가 나오지 않습니다. 무엇이 문제일까요? 브라우저에서 서버에 올라간 html 파일을 읽어오는 많은 과정 중에 무엇이 잘못된 걸까요?


이 문제를 쪼개서 질문을 던지자면,

  1. 내 랩탑이 인터넷에 접속이 되는 상태인가?
  2. 서버는 동작하는 상태인가?
  3. 도메인을 쓰고 있다면, dns 설정은 제대로 되어 있는가?
  4. 방화벽 설정이 되어 있는 건 아닌가?
  5. etc, etc, etc...

식으로 할 수 있습니다.


이제 하나씩 질문에 답을 하시면 됩니다. 만약, 해당 질문에 대한 답이 No이면, 해당 질문을 문제로 정의하고 왜 no인지... 어떻게 하면 yes로 바꿀 수 있는지 다시 쪼개서 스스로에게 질문하면 됩니다. 이렇게 하다보면 결국 문제를 풀 수 있게 됩니다.


문제를 못푸는 경우는 어떤 질문을 던져야 하는지 모를 때입니다. 위에 scott hanselman은 숙련자와 미숙련자의 차이를 문제에 대한 답을 아는지 여부가 아니라 문제를 해결하기 위해서 어떤 질문을 던져야 하는지를 아는지의 여부라고 했습니다.


다시 처음 얘기로 돌아가서 신입이 도움을 요청해야 하는 시점은 스스로에게 어떤 질문을 던져야 하는지 모르는 상황 이라고 했습니다. 신입 개발자가 배워나가야 하는 것은 문제를 풀어나가는 방법, 즉, 어떤 질문으로 쪼개야 하는가? 라고 생각합니다. 만약, 신입분들이 당면한 문제가 질문으로 쪼갤 수가 없는 것(예: 개발 디비의 접속 정보는 무엇인가?)이거나 본인이 어떤 질문을 해야 하는지 모른다고 한다면 사수에게 바로 도움을 요청하실 것을 권합니다. 만약, 물어보는 이유가 후자의 이유(더이상 어떤 질문을 던져야 하는지 모르기 때문에)라고 한다면 답을 구하기 위한 요청보다는 어떤 질문을 던져야 하는지에 대해서 조언을 요청하면 사수도 기쁜 마음으로 답해주지 않을까 합니다.


예를 들어 볼게요. 위에 문제에서 내 랩탑이 인터넷에 접속이 안된다는 사실을 알았습니다. 그렇다면, 인터넷에 접속하기 위해서 어떤 질문을 던져야 할까요? 아마 사내 인프라랑 연관이 있어서 신입 분들 대부분이 뭘 해야하는지, 어떤 질문을 스스로에게 해야 하는지 모를 거에요. 그럴 때는 지체없이 물어보면 되지 않을까요?


한가지 추가로 예를 들어 보겠습니다. 코드 파악이 너무 힘들어서 어디가 문제인지 알 수 없는 상황입니다. 즉, 코드 파악이 되어야만 문제를 정의하고 질문으로 쪼갤 수 있는 상황이라고 한다면, 코드 작성자에게 간략한 설명을 요청하는 거는 언제든지 해도 된다고 생각합니다. 어디를 고쳐야 할까요? 라고 묻는 게 아닌 코드에 대한 개괄적인 설명을 통해 어디를 고칠지 알아내려고 합니다. 에 가까운 요청이어야 한다고 생각합니다.


결국 신입으로서 보여줘야 하는 건 문제 해결을 위한 본인의 사고 과정(Thought Process)이고, 사수들은 그 신입의 사고 과정이 합리적이고, 깊이가 있을 수 있도록 도와주고, 해당 사고 과정을 검증할 수 있는 실행력을 갖출 수 있도록 도와줘야 합니다.