[Tips] 개발자가 질문과 검색을 잘하는 법

kshired·2022년 2월 2일
303
post-thumbnail

개관

제가 이 글을 쓰게 된 이유는, 질문을 하는 방법이나 검색을 하는 방법을 잘 모르는 사람들을 여럿 봤기 때문입니다.

개인적으로, 개발자는 검색과 질문이라는 것을 인생 필수적으로 가져가야하는 기술이라고 생각합니다.

“왜 그게 기술이냐?”라고 묻는다면, 질문과 검색을 하는 사람에 따라 그 질문과 검색의 질이 다르고 그에 따른 결과도 다른 것을 여럿 봤기 때문이죠.

이 포스트는 제가 지금까지 사용해온 방법과 다른 사람들이 인터넷에 올려놓은 포스트를 보면서, 쭉 정리한 것입니다.

이 글의 목표는 독자가 이 글을 읽고나서, 본인이 여태까지 질문과 검색을 잘 해왔는지를 되새길 수 있는 계기를 만들어주는 것입니다.

평소에 질문과 검색을 잘 하는 사람이라면, 크게 도움이 되지 못할수도 있습니다. 하지만 그래도, “이렇게 생각하는 사람도 있구나”라고 한 번 봐도 좋을 것 같습니다. ( 언제나 건전한 비판과 피드백은 환영입니다. )

아래부터는 반존대로 썼으니, 이해해주시면 감사하겠습니다. 😊

질문을 어떻게 해야하나요?

준비해야 할 마인드 셋

  1. 질문은 부끄러운게 아니다.
  2. 질문을 받는 상대는 자신의 소중한 시간을 써서 대답 해주는 것이다. 제발 예의는 차리자.
  3. 질문을 오픈 된 공간에서 했을 때, 지우지 말자. 누군가가 언젠가는 반드시 겪을 문제이다. 남에게 도움이 될 수 있는 질문인데.. 제발 지우지 말자

질문 하는 방법

  1. 먼저 질문을 하기 전에 검색을 한다.

    • 여기서 해결되면? 정말 좋다.
    • “검색을 어떻게 잘 하는지 모르겠어요” → 아래에서 정리했으니 읽어보자.
  2. 질문의 요점부터 파악하고, 그 부분을 요약해서 질문하자.

    본인이 현재 처한 문제의 요점도 무엇인지 모르는 사람이 허다하다. 제발 이 정도는 생각해보자.

    • 본인 코드는 본인이 제일 잘 안다.
    • 두괄식으로 질문을 작성하자.
    • 또한, 자신이 현재 무엇을 하고 있었는지.. 어떤 수준 정도인지도 포함해주면 좋다.
  3. 시도 해보았던 것을 구체적으로 제시하자.

    • 발생한 문제의 원인이 무엇이라고 생각하는지 두루뭉실하더라도 적자.
    • 그 문제를 통해 얻은 스스로가 해결을 위해 얻은 결론은 무엇인지.
    • 그 결론을 통해 해 본 시도는 무엇인지.
  4. 코드를 보여주고 안돼요 x
    → 어떤 부분에서 어떻게 문제가 발생했고, 어떤 에러메시지가 났나 정도는 알려주자.

    • 제발 그냥 코드 딱 던져주고, “저는 잘 한거 같은데 안돼요...” 이러지말자. 딱밤 때리고 싶다.
    • 최소한 에러 메세지 정도는 알려주거나, 현재 상태와 원했던 결과의 차이점을 파악하자.
    • 문제가 생겼을거라고 예상 가는 코드의 부분을 먼저 정리하고, 그것을 공유하자.
      • 제발 전체 코드만 딱 던져주고, 웨않돼요? 는 하지말자
      • 정리해서 주는 것도 좋지만, 주석까지 달아주면 정말 좋다.
  5. 그리고 질문을 마지막으로 보낼 때, 스스로 다시 한 번 질문을 되새겨보자.

    • 위 사항을 따라가면서 문제를 파악하다보면, 현재 문제에 어느 정도까지는 감이 잡힐 것이다.
      • 이에 따라, 다시 정리하는 과정을 통해 스스로 해결할 수도 있다.
    • 그렇기에 한 번 더 정리하는 과정을 통해 더 좋은 질문으로 바꾸고, 스스로 해결 할 수 있는지 다시 한 번 생각해보자.
  6. 질문을 잘 올리고 답변을 받았으면, 피드백을 주자.

    • 질문은 답변이 왔다고 끝나는게 아니다.
    • 질문을 하고 답변을 받음으로써 서로 건설적인 대화가 이어질 수도 있고, 더 좋은 해결방안을 찾을 수도 있다.
  7. 해결한 질문은 스스로 정리하고, 오픈된 공간에 공유를 할 수 있다면 하는게 좋다.

    • 대부분까지는 아니지만, 몇몇 사람들은 질문을 했다는 것 자체를 창피해하는 경향이 있다. ( 질문 대답만 받고 싹 지워버리는 경우를 몇몇 봤는데, 이런 사람들을 볼 때 마다 대답해주고 싶은 의지가 사라진다. )
    • 질문을 통해 얻은 결과를 정리하여 오픈된 공간에 공유를 하게 된다면, 정리하는 과정을 통해 스스로 문제점이 무엇이였는지 한 번 더 파악할 수 있는 계기가 된다.
    • 또한 내가 공유한 질문과 그것에 대한 해답은, 누군가 나중에 검색을 통해 해결할 수 있는 쉬운 문제로 바뀔 수 있다. ( 지식은 전파하자. 누군가에게 질문한 것의 흔적을 남기는 것은 자신의 치부를 드러내는 것이 아니다. )
  8. 7을 통해 스스로 피드백을 얻으면서, 똑같은 질문을 하지 않도록 스스로 되새기자.

    • 질문하는 것은 나쁘지 않다.
    • 하지만, 똑같은 질문을 여러번 반복해서 하게 된다면.. 주변 사람이나 다른 팀원들은 “얘는 왜 저번에 알려준걸 또 물어볼까? 공부할 생각이 없나..?” 라는 생각을 심어주게 된다.
    • 물론, 저렇게 생각할까봐 질문을 안하는게 더 나쁘다.
      • 질문 안하고 넘겨버리면, 그 프로젝트에서 담당한 부분도 망쳐버리고 팀의 일정도 망쳐버리는 더 큰 문제를 일으킨다.
      • 작은 문제를 큰 문제로 바꾸지 말자. 해결 할 수 있는 타이밍에 해결하는 것이 가장 좋다.

개발자가 검색을 하는 방법이 뭔데요?

아래 사항부터 점검하고 가자.

본인은 검색을 잘하고 있는가?

  • 코딩하다 중간에 모르는 것이 생기거나, 원하는 답과 유사한 답을 찾을 때까지 몇 분 내로 찾는 편인가?
  • 코딩을 하다 모르는 것이 생겼을 때, 검색을하여 정보를 얻는 일련의 행위가 자연스럽게 몸에 베어 있는가?

위 사항에 해당되지 않는다면, 검색을 잘하고 있나 생각을 해보고 아래의 글을 읽어보자.

추천하는 검색 사이트 순서

  1. Google
  2. Stack Overflow
  3. Github
  4. Official Docs
  5. 생활 코딩

위 순서는 개인적 경험 기반으로, 내가 생각했을 때 최대한 양질의 결과를 얻기 쉬운 순서로 나열하였다.

5까지 다 해봤는데, 안된다? → 질문을 할 순서이다.

질문하려는 것에 대해 잘 모르거나, 개발 초심자라면

1,2 정도까지만 해보고 나서, 질문으로 넘어와도 괜찮다고 생각한다.

검색하기

  1. 구글은 신이다.

    • 개발 관련 질문과 정보들은 국내 사이트 보다 구글에 검색하는 것이 제일 양질의 결과를 얻기 쉽다.
    • 개발을 할 때 사용하는 언어들은 english based 이다.
  2. 영문으로 검색하자.

    • 개발과 관련된 정보는 대부분, 영어로 된 자료들이 질이 높으며 양도 압도적으로 많다.
    • 한국어로 검색을하게 되면, 언어의 뉘앙스 혹은 번역된 단어 선택에 따라 제대로 된 답변을 얻기가 힘들어지는 경우가 있다. 영문으로 검색하자.
    • 영문으로 검색해도, 구글의 언어를 한국어로 해놓으면 한국어 문서가 먼저 올라오는 경향이 있다. 이러한 걸 피하고 싶다면, 구글의 언어를 영문으로 설정해서 사용하는 것도 좋다.
  3. 구글 검색에서 지원하는 기능들을 사용하자.

  4. 검색어에 특수문자가 포함되어 있는 경우 최대한 영문자로 변경해서 검색하자.

    • 예를 들어 “kotlin ? meaning” 같은 검색어를 검색할 때, 검색엔진이나 사이트 내의 검색에서 “?” 같은 특수문자는 검색어에 제외 되거나 잘 검색되지 않는 경우가 많다.
      • ex) c++ → cpp, || → or , && → and, & → ampersand, \ → backslash
    • 이러한 문제가 생길 때, “kotlin question mark meaning” 과 같이 검색을 하는 것이 더욱 빠른 결과를 보여준다.

    아래 예시에서 검색 결과의 차이를 알겠는가?

  5. 검색을 한 결과에서 문서를 잘 선택하기

    • 프로그래밍 언어 및 프레임워크와 같은 것들은 시시각각 변하며, 시대상에 따라 코딩스타일도 바뀌고 사용할 수 있는 기능도 다르다. 문서를 검색했을 때, 구글은 언제 발행된 문서인지 표시해준다. 이걸 적극 활용하자.
    • 그래서 그 기준은 뭔데요?
      • 아래와 같은 기준으로 적당히 골라보자.
        • 라이브러리, 프레임워크 (수개월)
        • 각종 표준, 프로그래밍 언어, 운영체제 (수개월~수년)
        • 각종 프로세스, 설계 방법론 등 소프트웨어 공학에서 다루는 주제들 (수년~수십년)
        • 알고리즘, 자료구조, 프로그래밍 언어론, 운영체제론 등 주로 전산학에서 다루는 주제들 (수십년)
  6. 이렇게 알게 된 결과는 꼭 정리하자.

    • “해결 했다고” 생각하는 문제는, 보통 다음번에 만났을 때, 따로 정리해놓거나 내 지식으로 만들어두지 않으면 한 번 더 마주했을 때 바로 해결하지 못하는 경우가 많다.
    • 이러한 불상사를 방지하기 위해 개인 노트에더라도 제발 정리해놓자. → 오픈 된 블로그에 정리해두거나 하면 더 좋다.
  7. stack overflow 검색은요?

    • 구글 검색에서 얻은 결과는 stack overflow가 압도적이고, 대부분일 것이라 생각하는데 거기서도 해결이 안되면 아래의 방식을 시도해보자.
    • 사용중인 언어 및 프레임워크 태그를 달고 있는 게시물을 중심적으로 검색하고, stack overflow에서도 똑같이 검색 툴이 제공해주는 기능을 사용하자.
  8. Github 및 Docs

    • 프로젝트가 Github 같은 곳에 올라와 있다면, issue나 PR을 잘 확인해보자. 비슷한 질문을 한 사람이 있을 수 있다.
    • 만약 Docs가 잘 정리된 언어나 프레임워크라면, 그것을 십분 활용하자. 현재 오류가 나는 부분을 검색하고 활용법을 보다보면 내가 뭘 잘못썼는지 확인 할 수 있다.
      • 추가적으로 기본적으로 제공해주는 예제나 tutorial 같은 것을 보는 것도 꽤 도움이 된다.
  9. 생활코딩

    • 현재 한국의 stack overflow 와 유사한 역할을 하고 있는 곳이라고 생각한다.
    • 생활코딩 그룹에서 이 그룹 검색 기능을 통해 검색어를 잘 설정해서 검색하자.
    • 이 또한 영문으로 먼저 검색하고, 안되면 한국어로 검색하자.
  10. 여기까지 해도 안되면 질문을 제발하자.

    • 질문은 부끄러운게 아니다.
    • 창피한게 아니니까 꼭 질문을 하자.

마치면서

질문을 하는 것과 검색을 하는 것은 개발자의 기본기라고 생각합니다.

이러한 기본기는 누군가가 알려줘도 체화하기 어렵고, “왜 이렇게 까지 해야하는걸까?” 라는 생각을 할 수도 있습니다.

하지만, 이러한 과정을 자연스럽게 체득하면 스스로 얻어가는 것도 많을 것이고 도움이 꽤 될 것입니다.

평소에 검색하고 질문하는 습관을 들이면, 인생에 큰 도움이 될 것이라 확신하니 제발 검색하고 질문합시다!

References

이 글은 아래의 포스트들을 참고하였습니다. 감사합니다.

세미나 자료

이 글을 주제로 세미나를 열었었습니다.

https://docs.google.com/presentation/d/1NJYpKKI5mM7Ik6xaLJR-DZgbUbQXZfK5wyaDXa3o-8Q/edit?usp=sharing

궁금하신 분은 위 슬라이드를 참고해주세요.

profile
글 쓰는 개발자

18개의 댓글

comment-user-thumbnail
2022년 2월 3일

좋은 글이네요! 주변에 공유하겠습니다~~

1개의 답글
comment-user-thumbnail
2022년 2월 4일

좋은 정보 감사합니다 :)

답글 달기
comment-user-thumbnail
2022년 2월 5일

정말 '제대로' 질문하는 법을 알려주셨네요! 제 경험상 제가 겪는 오류 중 99%는 다른 사람이 이미 겪었던 오류더라구요!

답글 달기
comment-user-thumbnail
2022년 2월 6일

좋은 정보 감사합니다! 잘 참고해서 연습해봐야 겠네요ㅎㅎ

답글 달기
comment-user-thumbnail
2022년 2월 6일

좋은 글 감사합니다😆

답글 달기
comment-user-thumbnail
2022년 2월 7일

좋은 글 감사합니다. 저도 개인 블로그에 요약 정리해놔야 겠어요 ㅎ

답글 달기
comment-user-thumbnail
2022년 2월 8일

좋은 정보 감사합니다

답글 달기
comment-user-thumbnail
2022년 2월 9일

잘 읽었습니다, 감사합니다.

답글 달기
comment-user-thumbnail
2022년 2월 9일

좋은 글이네요 가끔 또 보러 오겠습니다! 개린이라 도움이 많이 될 것 같습니다!! 좋은 글 감사합니다^^

답글 달기
comment-user-thumbnail
2022년 2월 10일

내가 뭘 모르고 있는지, 어떻게 이걸 해결할 수 있을지가 막막해서 최근에 교수님이랑 상담을 한 적이 있었는데 딱 필요한 글 보고 읽고 가네요. 감사합니다.

답글 달기
comment-user-thumbnail
2022년 2월 11일

공감되는 말들이 정말 많네요!
회사 후배 보여주고 싶네요^^

답글 달기
comment-user-thumbnail
2022년 2월 11일

좋은글 감사합니당

답글 달기
comment-user-thumbnail
2022년 2월 11일

잘 읽었습니다! 잘하고 있다고 생각하고 있었는데 더 좋은 꿀팁 너무나 감사합니다! 마인드셋 같은 경우에는 살아감에 있어서도 중요하다고 생각되네요. 블로그에 공유하겠습니다!

답글 달기
comment-user-thumbnail
2022년 2월 11일

주니어로 일하면서 최근 고민이 되는 지점을 시원하게 긁어주는 글이었어요 잘 읽었습니다 감사합니다!

답글 달기
comment-user-thumbnail
2022년 2월 12일

저도 몇 가지 개인적인 팁 적어 가욤

  1. 에러 메세지 잘 읽어 보장. 가끔가다 에러 메세지가 모든 것을 말할 때도 있는 거 같아요

  2. How to ~
    2.1 How to add margin in Flutter?
    2.2 How to start with yarn
    2.3 How to kill my boss...

  3. what is difference X between Y
    3.1 what is difference Java between Javascript

  4. 에러 메세지 복붙 등등

답글 달기
comment-user-thumbnail
2022년 6월 8일

오 진짜 좋은 글이네요 감사합니다~!

답글 달기
comment-user-thumbnail
2022년 11월 6일

잘 읽었습니다! 좋아요 누르고, 필요할 때마다 재방문 하겠습니다😊

답글 달기