본문 바로가기

세미나

개발자를 위한 Google 검색 노하우- 펌(내용정리)

출처: https://m.blog.naver.com/PostView.nhn?blogId=skabin&logNo=221261551265&proxyReferer=https%3A%2F%2Fokky.kr%2Farticle%2F460828 

 

 

개발자의 삶은 문제의 연속이다.

 다음의 내용은 철저히 김환규님의 경험에 의거해 도출된 '문제 해결에 대한 가설'이다.

 1. 과거에 알았던 것은 전부 잊어라. 현재 기술의 트렌드는 빠르게 변한다. 따라서 과거에 알았던 지식과 경험들이 시간이 지나면 도리어 방해가 된다. 과거의 것은 깨끗이 잊고, 새로이 검색하고 새로이 익혀라.
 2. 문제를 해결하는 과정은 문제의 본질을 이해하는 과정이다.
 3. 모든 분야를 다 잘하는 사람은 없다. 외국의 경우, 특정 분야를 깊이 있게 다룰 줄 아는 사람들이 무척  많다. 그에 비해 한국은 이것저것 다 잘하는 사람이 많이 필요한 실정이다. 한국에서 개발을 하다보면 다양한 것을 해야할 상황이 올 것이다. 조급해하지 말고, 한가지 분야를 한번이라도 깊이 다뤄본다면 그것이 다른 분야를 익힐 때에도 도움이 될 것이다.
 4. 키워드(검색)를 많이 알게 되는 것은 영어를 잘하는 것과 유사하다. 지속적으로 꾸준히 노력해 키워드를 찾아가야 한다.
 5. 해결책을 금방 알 수 있다면 어려운 문제가 아니다.
 6. 문제마다 해결시간은 차이가 많이 날 수 있다. 그러니 모든 문제를 빨리 해결하겠다는 것은 맞지 않는 전제다. 문제 해결 과정 자체를 즐겨라!(김환규님은 무려 7개월을 질문에 답을 하기 위해 고민하신적이 있다고...)
 7. 검색 후 나타나는 답을 순차적으로 적용하지 말 것! 처음 나온 답변을 적용하느라 고생했는데, 잘못된 해결법인 경우 시간낭비! 몇가지의 방법을 찾은 후, 그 중 가장 반응이 좋고 정리가 잘 된 답변을 골라 적용하는 것이 결과적으로 빠르다. 
 ※참고 :  '좋은 답변을 선별하는 방법'
    - 불성실한 답변자의 답변은 무시하라. 코드 한줄 없이 잔소리만 하는 경우, A to Z가 아닌 A to C까지만 답하는 경우, 시도해보니 되지 않아 다시 질문을 남겼는데 그 이후로 답이 없는 경우 등이 이에       해당
     - 질문자를 존중하는 답변자를 찾아라.



Follow the evidence! 예측은 하지 말고, 철저히 증거를 따라가라!

 문제를 해결하는데 있어서 가장 중요한 것은 현학적인 예측은 버리고 철저히 증거주의를 따르라는 것이다. 우리에게 가장 큰 증거는 Error Message다. 그 Error Message를 그대로 활용하자. 또한 영어로 검색할 경우, 그 검색 결과는 백배 더 많다는 것을 기억하자. 이 영어 키워드를 찾고 배치하는 것이 구글링을 잘하는 첫번째 팁이다. 더 좋은 해결책을 찾기 위해서는 영어식으로 사고하는 것이 도움이 된다. 처음에는 잘못된 단어로 검색을 하더라도, 제시된 답변들을 잘 살펴보면 올바른 키워드를 찾아낼 수 있다. 영어로 질문하면 답변이 영어일 것을 두려워 할 필요는 없다. 영어로 질문해도 번역 기능이 활성화 되어 있기 때문에 해당 답변에 대한 한국어 답변도 많이 올라와 있다. 

※원하는 결과를 얻어낼 가능성이 높은 검색어 구성※

"언어 + 타게팅 플랫폼 + how to + 원하는 기능"
ex.
1. Visual studio how to export a project into another name
2. C# how to split a string
3. LINQ how to get query count
※조금 더 원하는 내용과 일치되는, 보기 좋은 답변을 찾아내는 방법 ※

"Stackoverflow의 SEO(Search engine optimization)기능을 활용!
검색어의 맨 앞에 'Stackoverflow'를 추가"
ex.
Stackoverflow linq join with group by nested query

-Stackoverflow의 설명이 가장 정확한 편이라, 그 안에서 답을 찾지 못한다면 다른데서 찾기 힘들것이라고 한다.
※그래도 원하는 답변이 나오지 않을 경우※

"더 큰 유사 플랫폼을 검색"
ex. OpenCV의 경우, windows나 unix 기반으로 출발한 플랫폼이다. 최근 안드로이드나 iOS가 나오면서 openCV for android, iOS가 나온 것. 따라서 똑같은 질문에 대한 답이 없으면 더 큰 플랫폼에서 검색하고, 해당 함수와 똑같은 함수를 reference에서 찾아서 사용할 수 있다.
※원하는 답변을 찾기 위해 올바른 키워드로 진화해가는 과정의 예시※

"목표 : 메모리 사용을 줄이기 위해 glide 라이브러리 활용하는 법"
1. Android how to use glide
2. Stackoverflow android how to use glide
3. Stackoverflow android how to use glide for drawable
4. How to handle memory with glide
5. Android glide how to reduce memory usage
6. Stackoverflow android glide how to reduce memory usage
최종 : Recyclerview cardview glide android sample

- 처음과 달라지는 키워드들이 보이는가? 키워드 검색을 통해 얻어낸 답변들에서 내가 원하는 결과를 얻기 위한 키워드에 대한 힌트를 연속적으로 얻어낸다. 그러다보면 내가 원하는 결과를 얻게 해줄 답변을 찾아낼 수 있을 것!





아직 시도해보지 않은 과제에서 어려워 보이는 문제. 어떻게 해결할까?

 개발에 들어가기 전, 어떠한 기술을 활용해 개발을 해야할지, 혹은 어떠한 방법으로 당면한 문제를 해결할 수 있을지 고민이 될 때가 있다. 그럴 경우, 해당 문제를 해결한 케이스를 먼저 찾아본다. 충분히 몇시간, 혹은 몇 일을 소비해서라도 검색에 공을 들인다. 검색된 케이스 중 가장 책임감 있어보이고, 실제로 실행해 보았을 때 실행이 되는 케이스를 뽑는다. 그렇게 추려진 케이스들이 최종 후보가 된다. 이 작업은 기본적으로 시간이 꽤 걸리는 작업이라는 것을 염두해두자. 추려진 케이스들로 프로토 타입을 제작해본 후, 서비스를 개발하자. 
 키 포인트는 다양한 대안을 마련하라는 것이다! 첫번째로 발견한 솔루션이 있다고 해당 솔루션으로 성급하게 개발하면, 더 나은 해결책이 제공해 주는 기술적인 이득을 포기하는 것이다. 또한, 가급적 심플한 대안을 선택하는 것이 좋다. 고심 끝에 적용한 솔루션에서 특정 기능이 동작하지 않으면 또 다른 솔루션을 고려해야 할 상황이 올 수 있다. 되도록 심플한 솔루션일수록 수정이 편하다. 






Solution Provider로 진화하는 법!

 긍정적인 마인드가 필수! '이걸 어떻게 해? 한다고 했다가 안되면 바보되잖아.'라는 마인드는 지양하자. '한번도 안해 본 기능이네. 한 번 찾아볼까?'라고 나에게 주어진 과제를 조건없이 긍정적으로 수용하는 마인드가 문제 해결의 시작이다. 문제 해결에는 용기가 필요하다! 많은 시간이 필요하고, 잘못 했을 때의 반응도 감수해야 한다. 그렇지만 누군가에게 쉽게 물어봄으로써 겪지 않은 고생은 언젠가 그대로 돌려받게 되어 있다. 물어보더라도 하루쯤은 혼자 고민해 문제를 해결하려는 노력 후 물어보는 것이 좋다. - 물어볼 때는 "제가 ~~문제가 있어 ~~게 문제 해결을 시도 했는데 되지 않습니다!"라고 자신이 한 노력을 이야기 해주는게 좋겠지? -