PH pullh
입문 블로그 / 검색 실력은 문법보다 빨리 성장할 수 있다
학습 습관 5분 Beginner

검색 실력은 문법보다 빨리 성장할 수 있다

초보자는 검색을 모르는 것을 찾는 행위라고 생각하지만, 실제로는 문제를 다시 표현하는 능력에 가깝다.

검색 실력 커버 이미지

처음에는 무엇을 검색해야 할지도 모를 때가 많다. 그래서 막연한 문장을 길게 넣거나, 반대로 에러 전문을 통째로 붙여 넣고 운에 맡기게 된다.

검색 실력은 언어 실력보다 빨리 좋아질 수 있다. 같은 문제를 더 정확한 단어로 바꿀 수만 있어도 답이 훨씬 선명해지기 때문이다.

검색이 안 되는 이유는 대개 검색 엔진이 아니라 단어에 있다. 아직 그 개념의 이름을 모르는 상태에서, 아는 단어로만 물어보고 있기 때문이다.

검색은 재표현이다

리스트를 반복문으로 출력하는 법은 python list loop처럼 핵심 단어만 남겨도 충분하다. 에러가 있다면 언어명, 핵심 문구, 내가 하려던 작업만 남기는 편이 결과가 좋다.

검색 후에는 첫 답 하나만 믿기보다, 공식 문서와 튜토리얼, Q&A를 가볍게 비교하는 습관이 필요하다.

같은 문제를 세 번 고쳐 쓰면

실제로 어떻게 바뀌는지 보는 편이 빠릅니다. 표에 있는 값들을 정렬하고 싶은 상황을 가정해 보겠습니다.

1차

파이썬에서 데이터를 순서대로 예쁘게 정리하는 방법 알려주세요

문장이지 검색어가 아니다. 정리라는 단어는 이 분야에서 아무것도 가리키지 않는다.

2차

python 리스트 정렬

훨씬 낫다. 다만 지금 필요한 것은 점수 기준 정렬인데 그 조건이 빠졌다.

3차

python sort list of dicts by key

데이터의 모양과 기준이 모두 들어갔다. 결과의 성격이 완전히 달라진다.

세 번째로 갈수록 좋아진 이유는 영어라서가 아니다. 데이터의 모양을 단어로 표현했기 때문이다. 리스트 안에 딕셔너리가 있다는 사실, 그리고 어떤 키를 기준으로 삼는다는 사실이 검색어에 들어가면서 상황이 특정됐다. 검색어를 다듬는 일은 결국 내 문제를 정확히 서술하는 연습이다.

단어를 모를 때

개념의 이름을 모르면 먼저 어설픈 한국어로 검색해 이름만 얻으십시오. 그 이름을 찾은 뒤 다시 검색하는 두 단계가, 처음부터 정확한 검색어를 짜내려는 것보다 빠릅니다.

초보자 검색 규칙 다섯 가지

  • 언어명부터 붙인다.
  • 핵심 동작 동사 하나를 넣는다.
  • 데이터의 모양을 단어로 표현한다.
  • 에러 검색은 메시지 전체보다 핵심 구문 위주로 한다.
  • 검색 결과가 맞는지 작은 예제로 바로 실행해 본다.
  • 왜 이 답이 맞는지 한 줄 메모를 남긴다.

에러 검색에는 지워야 할 것이 있다

에러 메시지를 검색할 때는 반대 방향의 작업이 필요하다. 더 정확하게 만드는 것이 아니라, 내 환경에만 있는 부분을 지우는 것이다. 파일 경로, 사용자 이름, 줄 번호, 변수 이름 같은 것은 나에게만 해당하므로 검색 결과를 오히려 좁힌다.

지우기 전후

[전] File "/Users/mina/study/app.py", line 42, in load_scores
     KeyError: 'total_score'

[후] python KeyError dict

남긴 것은 언어, 에러 이름, 자료구조 세 개뿐이다.

여기서 판단 기준은 간단하다. 이 단어를 다른 사람도 똑같이 겪는가. 겪는다면 남기고, 나만의 것이면 지운다. 이 기준으로 걸러 내면 대개 검색어가 네다섯 단어로 줄어든다.

결과를 읽는 순서도 정해 두면 좋다

검색어를 잘 만들었어도 결과를 어떻게 읽느냐에서 다시 갈린다. 초보자가 가장 자주 하는 실수는 첫 번째 결과의 코드 블록만 복사하는 것이다. 그 코드가 어떤 버전을 전제하는지, 질문자의 상황이 내 상황과 같은지는 확인하지 않는다.

읽는 순서를 하나 정해 두면 이 실수가 줄어든다. 먼저 그 글이 언제 쓰였는지 본다. 다음으로 질문 부분을 읽어서 내 상황과 같은지 확인한다. 그다음에야 답변을 본다. 그리고 답변이 여러 개면 가장 위의 것과 그 아래 몇 개를 같이 훑는다. 아래쪽에 이 방법은 지금은 권장되지 않는다는 댓글이 달려 있는 경우가 적지 않다.

여기에 하나만 더 붙이면 좋다. 답에서 쓰인 함수나 옵션 이름을 공식 문서에서 한 번 확인하는 것이다. 검색으로 이름을 얻고, 문서로 정확한 사용법을 확인하는 두 단계로 나누면 잘못된 코드를 붙여 넣는 일이 크게 줄어든다.

검색으로 풀리지 않는 문제도 있다

검색이 잘 듣는 문제에는 공통점이 있다. 이미 다른 사람도 똑같이 겪었을 법한, 이름이 붙은 문제라는 점이다. 문법, 표준 라이브러리 사용법, 흔한 에러가 여기 속한다.

반면 내 코드에만 있는 논리 오류는 아무리 검색해도 나오지 않는다. 평균이 이상하게 나온다든가, 조건이 예상과 다르게 걸린다든가 하는 문제는 세상에 나 하나만 가진 문제다. 이때 검색창에 시간을 쓰는 것은 순수한 낭비이고, 필요한 것은 값을 찍어 보며 범위를 좁히는 작업이다. 삼십 분 검색해서 비슷한 사례조차 안 나온다면, 그것 자체가 이 문제는 검색 대상이 아니라는 신호다.

그리고 검색이 잘 되는 것이 항상 좋은 것도 아니다. 답을 너무 빨리 찾으면 붙여 넣고 넘어가게 되고, 그러면 같은 것을 다섯 번 검색하게 된다. 찾은 답이 왜 동작하는지 한 줄로 못 쓰겠다면 아직 내 것이 아니다.

그래서 검색 실력이 늘었다는 신호는 검색 횟수가 늘어나는 것이 아니라 줄어드는 것이다. 같은 것을 다시 찾지 않게 되는 만큼이 실제로 남은 지식이다. 검색은 빠르게 하되, 찾은 것은 천천히 남기는 편이 맞다.

남기는 방법도 거창할 필요는 없다. 검색어와 찾은 답, 그리고 왜 그것이 답이었는지 한 줄. 이 세 가지를 파일 하나에 계속 이어 붙이면 몇 달 뒤에는 내 문제로 만들어진 개인 사전이 된다. 남의 문서보다 검색이 잘 되는 문서다.

오래된 답

검색 결과 상위에는 몇 년 전 글이 자주 올라옵니다. 그때는 맞았지만 지금은 권장되지 않는 방식일 수 있으니, 답을 적용하기 전에 공식 문서에서 그 함수가 아직 살아 있는지 확인하십시오.

검색은 아는 척하는 기술이 아니라, 문제를 더 작은 단어로 다시 쓰는 기술이다.

학습 습관

더 볼 것

검색어를 다듬는 감각은 질문을 쓰는 감각과 거의 같습니다. 더 나은 질문 쓰기를 이어서 읽어 두면 좋고, 검색 결과를 검증할 때 기준이 되는 짧은 예제들은 심층 가이드에 언어별로 정리해 두었습니다.

이 글의 포인트

  • 검색어는 언어명, 핵심 동작, 데이터의 모양으로 줄인다.
  • 에러 검색은 내 환경에만 있는 단어를 지우는 작업이다.
  • 검색 결과는 바로 작은 예제로 검증해 봐야 남는다.
  • 내 코드에만 있는 논리 오류는 검색으로 풀리지 않는다.
  • 공식 문서와 예제 글을 같이 보는 습관이 실수를 줄인다.

Next Read

45분 학습 루틴이 초보자에게 더 잘 맞는 이유

주말에 몰아서 오래 하는 공부보다, 짧은 평일 루틴이 더 오래 가는 경우가 많다. 초보자에게 맞는 공부 호흡을 정리했다.