영어에 쫄지 말자, 개발자는 코드로 본다
올해 버킷리스트 중 하나가 StackOverflow REP 1000 달성하기였고 이 숫자를 달성하는 과정에서 배운점과 명성을 쌓기 위한 나만의 팁을 공유하려고 한다. 실제로 Github 오픈 소스 활동을 공유하는 글들은 많이 봤지만 StackOverflow 관련된 글은 거의 보지 못했다. 누군가가 이 글을 보고 시작 해보겠다는 생각을 가졌다면 나보다 충분히 더 잘 해낼 수 있는 사람일 것이다.
StackOverflow는 많은 사람이 자신에게 놓인 문제를 공유하고 그와 비슷한 문제를 겪은 사람들이 경험을 공유할 수 있는 곳, 개발자 노다지라 할 수 있다. 국내 개발자들이 하루에 한 번 이상은 StackOverflow를 찾지만 대부분은 검색을 통해 필요한 정보를 얻는 정도다.
StackOverflow 활동을 시작한 계기는 내가 알고 있는 정보가 누군가에게 도움될 수 있으며 외국인 개발자와 소통을 연습할 수 있는 공간이기 때문이다. 가장 처음 올린 질문이 5분이 안 되어 ’This question was marked as an exact duplicate of an existing question.’로 이미 존재하는 질문이라 중복으로 처리되었고 다른 개발자가 존재하는 질문의 링크를 댓글로 달아준 적이 있다. 다른 질문은 올린지 얼마 되지 않아 다른 개발자가 나의 질문의 영어 문법을 고쳐주고 태그도 추가해주었다. 이렇게 빠른 시간내에 질문 정보의 질이 높아진다는 것은 집단지성 생태계의 균형을 맞추면서 정보의 자정작용을 하고 있음을 뜻한다.
영어에 쫄지 말자! 어차피 개발자는 코드로 본다. 실제로 코드를 보여달라는 댓글이 제일 많다
틀렸다고 창피해 하지 말자! 대부분 질문/답변에 누군가에 의해 수정됨으로 표시되어 있다. 수정할 거리를 찾는 하이에나가 많다.
Privilege(특권)
Privilege는 StackOverflow에서 할 수 있는 특권을 말하는데 특정 REP를 달성하면 찬성/반대투표(Up/Downvote) 기능이 활성화되거나 게시글에 태그를 추가할 수 있고 댓글도 추가할 수 있다. 게임에서 어느 레벨 이상 되면 퀘스트를 시작할 수 있거나 아이템을 장착할 수 있는 느낌과 비슷하다. 지속해서 커뮤니티 활동을 지속하게 만드는 동기부여가 된다.
Badge(배지)
Badge는 금, 은, 동 총 3가지로 특정 미션을 수행하면 획득할 수 있으며 난이도에 따라서 배지의 색이 다르다. 동 배지는 나도 모르게 하나씩 받을 때가 있으며 금과 은 배지는 확실히 받기가 어렵도록 되어있다. 가끔 리뷰나 가이드를 수행하면 동 배지를 줄 때가 있다.
예를 들어 댓글 10개를 남기는 미션이 있다면 프로필의 Next badge 패널에서 3개만 더 하면 달성할 수 있는 그래프가 나오기 때문에 자신의 원하는 배지를 선택하고 달성해 나가는 게이미피케이션(Gamification) 요소라고 할 수 있다. 배지를 받으려고 노력하다 보면 명성(REP)이 쌓이고 어렵게 느껴지는 서비스를 이를 통해 이해하게 된다.
Reputation(REP: 명성)
위에서 설명한 두 가지 요소의 근간이 되는 REP(Reputation), 명성이다. 커뮤니티 활동을 하면 닉네임, 명성, 배지(금, 은, 동)가 다른 사람들에게 노출된다. 기본적인 명성 획득/손실에 대한 설명은 다음과 같고 자세한 설명은 명성은 무엇인가를 읽어보길 추천한다.
언제 명성을 얻는가?
1. 내 질문이 찬성투표를 받으면 : +5
2. 내 답변이 찬성투표를 받으면 : +10
3. 내 답변이 채택된 경우 : +15
4. 내 답변을 채택한 경우 : +2
5. 편집이 승인될 경우(내용, 태그 등) : +2
언제 명성을 잃는가?
1. 내 질문이 반대투표를 받으면 : -2
2. 내 답변이 반대투표를 받으면 : -2
3. 다른 사람의 답변에 반대투표를 하면 : -1
REP 쌓는 팁
1. 원하는 분야의 태그로 검색하여 최신순으로 모니터링하자
자신이 개발하는 분야를 태그로 검색해서 관련 최신 질문들을 볼 수 있고 빠른 답변을 하기에 좋다. 나 같은 경우에는 android 태그를 추가하여 구독하고 있다. 생각보다 내가 겪었던 문제들이 올라올 때가 많고 답변할 기회를 얻을 수 있다.
2. 질문이나 답변을 조금만 수정하자
개발하다 StackOverflow의 질문과 답변을 보고 있다면 틀린 스펠링이나 문법이 올바른지 정도만 확인하고 수정해보자. 수정 후 승인 시간도 빠르고 명성 2를 획득할 수 있다. edit
이 이 방법으로 획득한 것이다. 생각보다 투자 대비 쏠쏠한 이익이 된다.
3. 태그 추가나 삭제하자
질문에 관련된 태그 추가하거나 삭제하여 수정할 경우, 승인되면 명성 2를 획득할 수 있다.
4. 좋은 질문을 하자
천 점대의 StackOverflow 사용자 중에서 일부는 질문만 하는 사람들도 있다. 프로필을 조회해서 했던 질문들을 살펴보면 몇백 개의 찬성투표를 받았다. 가장 흔하게 발생하면서 빨리 등록된 문제들이 찬성 투표를 많이 받을 수 있다. 질문만 하는 사람들이 명성이 높은 게 이해가 되지 않을 수도 있지만 그런 질문들을 찾고 하는 것도 능력이라 생각한다.
틀린 질문은 없다. 하지만 질문을 하더라도 문제 해결을 위한 최소한의 노력은 하였는가를 자신에게 물어본 후 질문하는 방식을 이해하고 질문하는 것이 좋다. 질문을 하기 전에 StackOverflow 질문하는 방법을 읽어 보길 바란다.
5. 빠르고 정확한 답변을 하자
답변을 할 때, 글만 있는 것 보다는 코드를 추가해서 빠르게 질문자가 수정해 볼 수 있도록 추가하자. 채택받을 확률이 높고 답변의 찬성 투표(명성10)와 채택(명성15)을 받으면 한번에 명성 25를 쌓을 수 있다.그리고 정확한 답변이라면 어느날 같은 이슈를 겪는 사람들이 찬성 투표를 잘한다. 가장 명성을 많이 쌓을 수 있는 방법이다.
6. 반대 투표(Downvote) 기능을 전략적으로 활용하자
질문에 달린 답변들 중에서 틀린 경우가 있다. 이럴 땐 반대 투표를 하고 자신이 생각하는 답변을 추가하자. 다른 사람의 답변에 반대 투표를 하면 명성이 -1되기 때문에 잘못된 방법이 아니다.
7. 1 ~ 2개의 답변이 있더라도 답변을 추가하자
명성이 백 점대로 올라가게 되면 답변이 하나도 달리지 않는 질문들을 많이 찾게 된다. 그런데 생각외로 1 ~ 2개의 답변이 있는 질문에 다른 방식의 답변을 추가하면 그만큼 인기 있는 질문이기 때문에 찬성투표를 잘 받을 수 있다.
글을 마치며
앞으로는 개인적인 목표나 별도의 시간을 정하지 않으려고 한다. 시간적으로 최대한 부담이 되지 않도록 빌드를 한다거나 남는 시간을 활용하는게 좋을 것 같다.
명성의 높이가 중요한 것은 아니다. 100K 이상 되면 외국에서는 이력서를 보지 않는다는 이야기도 있지만, 저 정도라면 바로 채용을 하더라도 잘할 수 있는 사람일 가능성이 높다. 그리고 명성이 높은 사람들의 답변을 찾아 읽어보면 공통적으로 글의 구성이나 질이 확연히 높다.
다른 사람들 이해시키기 위해 영어로 글을 적는 것 자체가 쉽진 않다. 가끔은 지식을 공유하기 위해 정리하는 것이 아니라 정리하기 위해 공유하는 느낌이 들때도 있다.
하지만 아무나 내가 한 질문이나 답변을 수정하거나 오타를 찾아 교정해 주기 때문에 나에게는 개발에 관련된 영어를 배우는데 큰 도움이 되었다. 내가 겪지 못한 다양한 문제들을 접할 수 있고, 다른 사람들의 코드를 읽고 디버깅 해볼 수 있으며 코드에 대해 해외 개발자와 이야기 할 수 있는 새로운 경험을 할 수 있다. 어느날 외국인과 일하게 된다면 자신이 알고 있는 지식이나 코드를 설명하기가 한결 편할 것 같다.
개발자는 무엇보다 춤추게 하는 동기가 필요하다. 가끔씩 내가 했던 질문이나 답변이 누군가에게 도움이 되어 명성이 쌓여있으면 개발에 조금 더 집중하게 되고 동기부여가 된다.