-
개발자를 위한 정보 검색 팁iOS 앱 개발 부트캠프/퀘스트 2024. 9. 19. 18:12
[선정아티클]
https://boxnwhis.kr/2020/09/27/ir-for-developers.html
[주제]
- 프로그래밍 중 마주한 문제 해결을 위한 검색 요령
[요약]
- 구글에서 검색하기
- 분야별로 더 나은 검색 엔진이 있지만 기술 분야에서는 구글이 가장 뛰어난 편이다. 심지어 네이버에서 정보를 찾을때도 네이버 검색 엔진보다 구글이 나을 때도 있다.
- 영문으로 검색하기
- 영어 화자가 한국어 화자보다 월등히 많고, IT 관련 정보는 대부분 영어로 생산되기 때문에 한국어로 바뀌어 전파 되기까지 시간이 오래걸리고 오역의 문제도 생긴다. 따라서 한국어나 한글, 한국에 특화된 문제가 아닌 이상 영어로 검색하는게 좋은 결과를 가져다준다. 또 한글 문제와 관련해서도 영어로 검색하는게 나을 때가 있는데 예를 들어 한글 문자열 처리 문제의 상당수는 유니코드와 관련된 문제이기 때문에 "unicode" 혹은 "cjk(chinese-japanes-korean의 줄임말)"로 검색하는게 나은 경우가 많다. 그리고 영문 키워드로 검색하더라도 검색 설정이 한국어로 되어 있으면 국문 문서가 상위에 나오는 경우가 많다. 개발자는 영어에 익숙해질 필요가 있으므로 검색 설정이나 아예 브라우저 설정을 영어로 바꿔 익숙해지는 것이 좋다.
- 검색 엔진의 기능을 잘 활용하기
- 특정 시점의 정보를 찾고싶다면 검색 기간을 설정하는 게 좋다. 주로 라이브러리나 운영체제의 최신 버전에서 발생하는 문제를 검색하는 경우 유용하다.
- 정확한 문장을 찾으려면 큰 따옴표를 넣어 검색한다. 에러 메시지의 핵심적인 부분에 큰따옴표를 사용해 검색하면 문제를 찾기 쉽다.
- python.org 내의 문서만 검색하려면 “site:python.org”이라고 입력한다. 그 밖에도 구글 검색창에 입력할 수 있는 다양한 문법들을 익히면 좋다. 예를 들어 DOM 관련 API를 검색하고 싶은데 자꾸만 jQuery를 이용하는 방법에 대한 문서들이 나오는 경우가 있다. 검색어에 “-jquery”를 넣으면 jQuery가 포함된 문서는 빼고 찾을 수 있다.
- 검색과 코딩 사이를 물 흐르듯 오가려면 마우스를 사용하지 않는 것이 좋다. 크롬 확장 기능을 사용하면 J/K로 검색 결과를 탐색 할 수 있어 흐름이 깨지지 않는다.
- Cmd+Tab, Cmd+L
- 검색어 입력 후 Enter
- J, K로 내비게이션 하다가 적절한 문서가 있으면 Cmd+Enter (새탭으로 열기)
- Ctrl+Tab, Shift-Space로 페이징 하며 읽기
- 불필요한 탭은 Cmd+W로 닫기
- 검색 키워드 잘 넣기
- 적절한 범위의 검색 결과 얻어내기
- 검색 결과를 내가 원하는 영역으로 적절하게 제한해야 한다. 예를 들어 파이썬에서 쓸 데이터 시각화 라이브러리를 찾고 있다면 검색어에 반드시 python을 포함시키는 게 좋다.
- 반대로 검색 결과를 지나치게 제한해서도 안된다. 예를 들어 간단한 수식을 파이썬으로 구현하다가 막혀서 검색을 하는 경우라면 검색어에 굳이 python을 포함시키지 않는 편이 더 좋을 수 있다.
- 되도록이면 본인이 풀고자 하는 문제를 정확히 기술하는 키워드를 포함시키는 것이 좋다. 예를 들어 동일한 “원소가 2개 이상 담길 수 있는 집합“을 표현하는 자료구조를 구현한 파이썬 함수를 찾고자 한다면 ‘multiset’과 ‘python’이라는 키워드를 넣는 것이 좋다.
- 정확한 키워드를 알아내는 방법
- 평소에 권위 있는 교과서나 공식 문서를 읽으며 정확한 표현을 눈여겨 보는 것이 좋다. 되도록이면 원서를 읽는 것도 방법.
- 내가 찾으려는 문제에 대한 정확한 용어를 모르겠고 원하는 검색 결과가 잘 안 나온다는 느낌이 들면 해당 용어를 알아내기 위한 목적으로 별도로 검색을 하는 방법도 있다. 내가 알고 있는 일반적인 단어를 조합하여 좀 더 희소한 단어에 근접해 갈 수 있다.
- 적절한 범위의 검색 결과 얻어내기
- 검색 결과 중 클릭할 문서 잘 선택하기
- Python 관련 정보는 python.org, Go 관련 정보는 golang.org, AWS 문서는 docs.aws.amazon.com, 각 라이브러리에 대한 문서는 해당 라이브러리 공식 문서 등 분야별로 신뢰할 수 있는 사이트 파악하기.
- 웹 관련 기술이라면 w3.org가 가장 공식적이지만 w3.org가 아니더라도 mozilla.org, css-tricks.com, caniuse.com 등 신뢰할 수 있는 사이트들이 있다. 리눅스 관련 각종 가이드는 digitalocean.com 등이 친절하고 신뢰할만하다. stackoverflow.com는 분야를 막론하고 대체로 괜찮고, en.wikipedia.org도 그럭저럭 괜찮은 편이고 특히 위키백과 문서 말미의 “References” 섹션에서 신뢰할 수 있는 정보의 링크를 종종 발견할 수 있다.
- 정보 가치가 낮거나, 잘못된 정보가 많거나, 오래된 정보가 많은 사이트들을 알아두고 피하는 것도 좋다. 영어 자료에 익숙해지기 위해, 그리고 자료의 질이나 양을 생각했을때, 국내 자료는 피하려고 노력하는 것도 방법.
- 문문제의 맥락에 맞추어 검색 결과의 시의성을 판단하는 것도 중요하다. 찾고자 하는 문제의 시의성을 판단하려면 정보가 대략 어느 시기에 얼마나 변했는지 알고 있어야 한다. 대략적인 변화 시기는 다음과 같다.
- 라이브러리, 프레임워크 : 수개월
- 각종 표준, 프로그래밍 언어, 운영체제 : 수개월 ~ 수년
- 각종 프로세스, 설계 방법론 등 소프트웨어 공학에서 다루는 주제들 : 수년 ~ 수십년
- 알고리즘, 자료구조, 프로그래밍 언어론, 운영체제론 등 전산학에서 주로 다루는 주제들 : 수십년
- 문서 잘 읽기
- 읽다보면 당면한 문제 해결에는 도움이 안되지만 좋은 문서나 사이트를 발견하기도 한다. 이런 운 좋은 경우엔 해당 문서나 사이트를 어딘가에 따로 저장해두는 것도 좋다.
- 라이브러리나 운영체제 등의 경우엔 버전마다 적절한 답변이 다르므로 본인이 사용하는 버전을 정확히 확인하는 것이 좋다.
- stackoverflow.com는 자주 가게 되는 사이트이므로 답변과 투표수, 답변자 등을 잘 확인해 읽어보면 좋다.
- 시간을 들여 찾아도 원하는 결과가 나오지 않는다면 문제 자체에 대해 지나치게 모르고 있는 경우일 가능성이 있다. 그런 경우 무턱대고 검색하기 보다는 공식 가이드라인, 공식 레퍼런스, 교과서, 논문, 위키백과 등을 찾아 읽으며 맥락 파악을 하는 편이 좋다.
- 구글 이외의 사이트에서 검색하기
- css 기능이나 지원 브라우저에 대해 궁금하다면 https://caniuse.com에서 찾아보는 것이 좋고, 잘 작동하던 코드가 외부 라이브러리 업데이트 후 오류가 난다면 깃헙에서 해당 라이브러리에 등록된 이슈를 검색해보는 것이 좋다.
- 언제 검색을 할까
- 오랜 세월 동안 꾸준히 공부하며 최신 기술을 익히고 시도하는 건 어려운 일이다. 따로 시간을 할애해서 진득하게 공부하는 걸 잘 못하는 편이라면 업무 중에 자연스럽게 공부를 병행하는 방법들을 마련하는게 좋다. 가장 좋은 방법 중 하나는 이미 해봐서 익숙한 문제를 풀더라도 괜히 검색을 한 번 해보는 습관을 만드는 것이다.
- 분야마다 최신성이 얼마나 중요한지에 차이가 있다. 최신성이 중요한 문제는 더 자주 검색해보는 것이 좋다.
- 당면한 문제가 없더라도 그냥 검색해보는 것도 좋다. 어제 짠 코드에서 루프 하나 줄이는 방법은 없을까 고민하며 검색해보는 식이다.
- 본인의 업무 또는 관심사와 밀접하게 관련된 중요한 정보라면 이런 식으로 우연히 발견하는 것 보다 원칙적으로 정보를 놓칠 수 없도록 하는게 중요하다. feedly.com 같은 RSS 리더나 각종 메일링 리스트 등으로 정보가 직접 나에게 배달되는 시스템을 만들어두면 좋다.
[인사이트]
어떤 언어와 툴을 쓰든 코딩을 하다보면 늘 ‘왜 안되지?’ 라든가 반대로 ‘왜 되는 거지?’ 싶을 때가 많은 것 같다. 나중에 같은 문제에 시달리지 않으려면 문제가 해결 되든 안되는 그 이유를 잘 찾아야 할 것 같다. 그리고 새로운 기술에 대해 지속적으로 관심을 갖거나 검색이라도 한 번 해서 여러 논제들을 살펴보는 습관이 나의 자산이 되어 여러 문제에 유연하게 대처할 수 있게 만들어 주겠다는 생각이 들었다.
'iOS 앱 개발 부트캠프 > 퀘스트' 카테고리의 다른 글
iOS 사전캠프 퀘스트 Step3 - 직사각형의 넓이와 둘레를 계산해요 (0) 2024.09.26 앱 개발에서 아키텍처가 중요한 이유는? (1) 2024.09.19 비전공개발자가 정말 불리할까요? (1) 2024.09.19 개발자의 네 가지 소양 (4) 2024.09.11 성장하고 싶은 사람이 해야하는 인지적 활동 (2) 2024.09.10