개발을 하다가 한 번쯤은 방문해보셨을 커뮤니티가 있습니다 바로 스택오버플로(https://stackoverflow.com) 인데요.
개인적으로 올해 다짐한 개발 공부 관련 버킷리스트 중 하나인 스택오버플로 커뮤니티 제대로 활용해보기를 하면서 여러 가지 느꼈던 점들을 이야기해보려고 합니다.
스택오버플로에 대해서
스택오버플로는 어떤 커뮤니티일까?
우리가 잘 알고 있는 것처럼 프로그래밍의 다양한 주제에 대한 질문과 답변을 할 수 있는 곳입니다. 단순히 질의응답만 하는 곳이 아니라 여러가지 활동도 할 수 있는데요. 이러한 활동은 명성(Reputation) 이라는 점수 시스템을 기반으로 운영됩니다. 스택오버플로에서는 이 명성을 “커뮤니티가 당신을 얼마나 신뢰하는가?” 라고 정의할만큼 스택오버플로 커뮤니티 내에서 꽤 중요하게 작용합니다.
그렇기 때문에 유익한 활동을 하면 명성 점수를 얻을 수도 있고 반대인 경우에는 점수를 잃을 수 있습니다. 물론 명성이 없더라도 게시글을 읽거나 답변을 작성할 수 있고요.
언제 점수를 획득하는가?
- 내가 다른 사용자의 질문을 채택한 경우: +2점
- 내 질문이 다른 사용자의 찬성 투표를 받으면: +5점
- 내 답변이 다른 사용자의 찬성 투표를 받으면: +10점
- 내 답변을 질문자가 채택한 경우: +15점
언제 점수를 잃는가?
- 내가 다른 사용자의 답변에 반대 투표를 하면: -1점
- 내 질문이 다른 사용자의 반대 투표를 받으면: -2점
- 내 답변이 다른 사용자의 반대 투표를 받으면: -2점
그리고 이 체계에 따라서 커뮤니티 내의 특권(Privilege) 을 가질 수 있습니다. 특권 단계에 따라서 다른 사람의 질문이나 답변을 수정할 수 있고, 심지어는 다른 사람이 올린 게시글의 삭제를 건의하는 투표를 할 수도 있습니다.
특권 외에도 배지, 랭킹과 같은 다양한 요소를 통해 개발자들의 활발한 커뮤니티 활동을 유도하고 있습니다.
스택오버플로의 신뢰를 위한 장치들
스택오버플로에는 질문과 답변의 퀄리티를 유지하기 위한 몇가지 장치들이 있습니다.
작성한 질문이나 답변도 내 마음대로 삭제할 수 없을 때가 있으며, 댓글도 일정 기간 이후에만 수정이 가능합니다. 심지어 간단한 댓글을 남기는 것조차 특권이 있는 사용자에게만 허용됩니다.
또한 본인의 질문에 직접 답변을 달 수 있지만, 일정 기간 이후에만 가능하며 그에 따른 보상 또한 얻지 못합니다. 그리고 비정상적인 보상을 지속적으로 얻게 되면 어뷰징으로 판단되어 감점이 되기도 합니다.
처음에는 이러한 제한사항이 커뮤니티 활동을 할 때마다 불편함으로 다가올 수 있지만 이러한 장치들은 스택오버플로를 조금 더 신뢰할 수 있게 하는 밑거름이 됩니다.
활용 후기
스택오버플로를 활용하면서 느낀 개발자의 성장과 경험 포인트
올해 “스택오버플로 커뮤니티 제대로 활용해보기”를 시작한 것은 잘한 점이라고 생각합니다. 계획했던 것보다 많은 활동을 못해서 아쉬움도 남고 “조금 더 빨리 시작해볼걸” 하는 생각도 들고요. 그래도 퇴근 이후의 적은 개인 시간으로 보다 빠른 효과를 볼 수 있었던 것 같아서 좋았습니다.
스택오버플로를 활용하면서 개인적으로 얻을 수 있었던 장점을 정리해보면,
첫 번째로 “문제 해결/디버깅 능력 향상” 입니다.
코드를 리뷰하는 일은 어렵습니다. 리뷰를 해야 하는 코드가 다른 사람의 코드인 경우에는 더욱 어렵고요. 스택오버플로에는 전 세계 개발자들이 겪고 있는 다양한 이슈들을 살펴볼 수 있고 코드도 살펴볼 수 있는 기회가 있습니다. 이 경험들은 현업에서 동료의 코드를 볼 때의 어려움과 부담감을 조금이나마 줄여주었던 것 같습니다. 더 나은 방법을 찾기 위해 이것저것 찾다가 저도 모르고 있던 새로운 방식과 라이브러리에 대해서 알게 된 것도 있었고요.
한편, 현업을 하다가 막히는 부분이 있어서 JAXB 이벤트 핸들러 사용에 대한 이슈(아래 링크 참고)가 있어 직접 질문도 올려보았는데요. 문제 해결을 위한 힌트뿐만 아니라 여러 개발자들과 같이 논의할 수 있는 기회를 얻을 수 있어 좋았습니다.
두 번째로 “영어 학습 효과” 입니다.
새로운 개발 기술을 공부할 때, 책에 있는 코드를 읽기만 하는 것보다는 직접 코드를 작성하며 실행해봐야 더 빠르게 실력이 향상된다고 생각합니다. 이러한 맥락에서 영어도 마찬가지라고 생각하고요. 스택오버플로는 내가 하고 있는 개발 관련 영어 문장 작성을 연습할 수 있는 좋은 장소가 될 수 있습니다.
심지어 질문이나 답변에 잘못된 문법이 있는 경우에는 다른 사용자가 직접 수정 의견을 남겨줍니다. 즉, 무료로 영어 첨삭 가이드를 받을 수 있는 셈입니다. 틀렸다고 창피해하지 않아도 됩니다. 개인적으로 실수와 연습으로부터 배우는 것은 좋은 방법이라고 생각합니다. 처음부터 잘 할 수는 없으니까요! (그리고 우리에게는 파파고와 구글 번역기가 있어요!)
마지막으로 “동기 부여” 입니다.
지나고 보니 동기 부여를 해준 요소라고 생각합니다. 제가 작성한 질문이나 답변이 누군가에게 도움이 되거나 특권이 생기는 것을 볼 때마다 오랜만에 느낀 성취감과 자극으로 다가왔던 것 같습니다. 자극이 계속되어 꾸준히 활동하다 보니 2019년 명성 획득 순위 4% 를 달성한 후에는 더 뿌듯함을 느꼈고요. (누적 순위와 다르게 획득 순위는 내년에 다시 초기화됩니다…)
사실 올해 목표는 명성점수 천 점을 달성해서 Established User 특권을 갖게 되는 것이긴 했습니다. 점수를 달성하다 보니 매월, 매 분기마다 프로필에 표기되더라고요. 꽤 뿌듯했습니다.
맺으며
개발자에게 좋은 점은 정말 많다. 그런데 꼭 스택오버플로는 아니다.
물론 모두가 관심사가 다르기 때문에 이 같은 활동에 전혀 흥미가 없을 수 있습니다. 오프라인으로 직접 알려주는 것에 더 가치를 느낄 수도 있고 개발 외적인 활동이 동기 부여를 해주는 자극 요소가 될 수 있습니다. 심지어 동기 부여라는 자극 자체가 필요 없을 수 있고요.
저도 요즘은 오히려 개인 시간에 휴식과 같은 개발 외적인 활동을 하는 것이 더 동기 부여가 되는 것 같아요. 최근에 시작한 게임이 하나 있는데 리그 오브 레전드라고 새벽까지 하다 보니까 오히려 더 업무에 집중하는 효과가..? (실력이 형편없어서 이길 때까지 하다 보면 새벽이 되더라고요.)
비록 올해는 자바 영역을 목표로 활동을 했지만, 향후에는 스프링이나 vuejs와 같은 영역에도 도전해보려고 합니다.