이 글은 2021년 10월에 진행한 탈잉의 '월간 코드리뷰 ver_0.1 : 커리어 성장 CODE' 라이브 강의를 정리한 글입니다.
강의 링크 : https://taling.me/Talent/Detail/38586
박미정님 강의(개발자 성장)
성장하는데 많은 사람들이 주로 하는 것들
- 스터디 모임
- 블로그 글 쓰기
- 컨퍼런스 발표
- 오픈소스 기여
- 집필
근데 구체적 목표 없이는 곤란하다. 나만의 방법을 세우자.
나는 보통 공부할 때 이런 고민을 한다.
- 나 지금 이거 할 시간이 있어?
- 왜 하는건데?
- 그래서 결과물이 뭐야?
- 그럼 어떻게 할까?
박미정님의 공부 목적
- 업무를 더 잘하기 위해.
- 기존의 것을 더 정확히 이해하기
스케쥴
- 업무 계획을 세울 때 공부 계획도 함께 세우는 편
- 예를 들어 다음주에 로그시스템 개발을 시작해야 할 것 같으면
- ELK 개념 공부
- 개발 환경의 로그를 Kibana 시스템에서 확인
블로그 작성
- 박미정님 블로그
- 실제로 겪은 문제해결과정 위주로 작성함.
- 문제 해결을 통해 깨달은 것을 온전히 내 것으로 만들기 위함.
- 어떤 문제를 접했는데, 실제로 결론은 이렇게 도달함. 근데 그 결론에 도달했던 건 이렇게 사고해서 그렇다.
- 내가 겪은 문제 상황을 자세하게 작성함.
- 2주에 한번 돌아보고 문제 키워드 선정 후 작성
- 문제 상황에 대한 설명 → 해결책 → 그 해결책을 선택한 이유
책 집필
- 이타적으로 필요하다고 판단한 것으로 정해야함.
- 평소에 왜 없지? 라고 생각한 주제 리스트업
- 내가 그 주제를 경험했거나, 곧 경험할 예정인지 판단
- 필요성, 차별화, 목차 작성 후 출판사에 제안.
- 집필 시간 계획은 별도로 짜야함. 박미정님의 경우 매일 2시간씩 짬내서 썼다고 함.
발표
- 하드 스킬 => 동기부여가 필요할 때 함.
- 2017년에 아이오라는 스타트업에 있을 때 데이터 분석을 학습할 수 밖에 없는 환경이었고, 파이콘 스피커 모집하는걸 봐서 한 달 동안 공부를 했다.
- 소프트 스킬 => 개발문화에 기여하고자 할 때
- 외부발표든 사내발표든 데드라인 공표
중요한건 명확하고 구체적인 목표 → 결과물 상상 → 공유를 통한 피드백 수집
스스로 '왜?'라는 질문에 답할 수 있다면 공유할 수 있으리라 생각한다.
- 모든 것의 시작은 객관적으로 필요성/현실성 판단
- 모든 것의 마무리는 공유가 아닌 피드백 수집
아웃사이더님 세션(오픈 소스로 성장하기)
- 개발자에게 필요한 능력
- 업무 태도
- 커뮤니케이션
- 협업
- 업무 파악
- 문제 해결
코딩 능력을 키우는 방법은 다양함.
- 좋은 사수, 좋은 동료
- 오픈소스로 개인 프로젝트를 작성한다
- (좋은 코드든 나쁜 코드든) 코드를 많이 작성한다.
- 많이 작성 & 고민은 같이 가야함. → 조금씩 시도 & 개선
- 공부할 기술을 활용해 볼 소프트웨어를 만든다.
- 첫 고객은 자기 자신
- 프로그램 짠거는 Open Source 라이센스로 공개한다.
- 기존 소프트웨어를 다시 만든다.
- 아이디어 고민을 하지 않아도 되는 장점
- 똑같은 프로그램을 직접 만들어본다.
예시:
- 오픈소스 프로젝트의 코드를 읽는다.
- 많이 읽어볼 수록 더 빨리 잘 읽을 수 있다.
- 읽어보기 위한 명분
-
자주 사용하는 프로젝트의 코드를 본다.
-
버그나 이슈가 있을 때 코드를 본다.
-
문서가 잘 이해 안 될 때 코드를 본다.
-
내부동작이 궁금해지면 코드를 본다.
⇒ 클론 받아서 돌려볼 수 있지않나..
- 처음부터 큰 프로젝트 보기 보다는 작은 프로젝트부터 보자.
- 더 적은 정보로 협업해야 한다.
- 메인테이너 입장에서 생각하기
- 어떤 이슈가 이해하기가 좋은지, 어떤 이슈가 문제 파악이 쉬운지, 어떤 이슈가 처리가 안되는지 등
- 그냥 계속 고민해보는 과정이 중요할듯. 계속 찾아보고.
서지연님 세션(발표 하는법)
- 과거보다 개발 생태계에서 협업이 복잡해지면서 나만의 강점을 가지는게 중요해졌다.
- 이런 세계에서 내가 주목을 받으려면 어떻게 표현해야 할까?
서지연님의 강점 : 이야기 하기 좋은 사람
- 발표기회를 만드는 방법
- 발표는 내 견해/관점을 공유하는 것
- 내가 경험한 것을 나의 관점에서 얘기하는게 중요하다.
- 평소에 발표할 생각으로 정리해두기
- 노션에 짧게짧게 정리하는 편이라고 함
- 발표 할 토픽이 이미 과포화 상태인지 볼때 구글링 해서 한글 자료 검색 겨로가가 한 페이지 이내이면 '이거 발표 해볼만함!'
- 똑같은거 다른 컨퍼런스에서 우려먹어도 됨! 조금씩 나아지지않을까?
- 발표할 곳은 가까운데서부터 시작하자!
-
오프라인 코드 리뷰
-
스크럼
-
주간 회의
이런 것도 발표일 수 있음. 조금 더 확장하면
-
스터디 리딩
-
지식 공유
-
커뮤니티 밋업 참여
자신감 생기면 테크회사 컨퍼런스에서 스피커로 참여. 우선 지르자!
-
발표 실력을 키우려면 발표를 많이 해봐야한다.(out of comfort zone)
-
짧게 핵심 전달! ⇒ 한 장표 당 하나의 메세지
-
장표 집중 보단 연사자가 발표하는 얘기에 집중하게 해보자.
-
화면이 빠르게 넘어가면 속도감이 증가!
-
발표가 어려운거 = 안 익숙한거
- 가장 학습 효율성이 좋은건 서로 설명하는 것
- 그냥 듣는 것보다 읽는것보다 설명하는게 최고!
- 공유의 즐거움!
옥창호님 세션(오픈소스 프로젝트 키우기)
- 씨 뿌려서 수확하는 개념을 오픈소스에 빗대어서 설명해보겠다.
- 주로 오픈소스 했던 프로젝트 :
-
하스스톤 시뮬레이터(하스스톤 강화학습)
-
1년 정도 작업해보니까 파이콘 코리아에 나갈 수준이 됐었음.
-
실제로 파이콘에서 오픈소스 컨트리뷰션 논의를 많이 할 수 있었음.
-
또 1년 뒤에는 같은 프로젝트로 NDC에 나가게 되었음.
-
2020년에는 오픈소스 컨트리뷰톤에 나가서 또 기여할 수 있는 사람들을 많이 만날 수 있었음.
⇒ 4년 정도 같은 프로젝트를 성장시키는게 인상깊다.
파종(어떤 프로젝트를 만들까?)
- 많은 요소들을 고려하게 됨.
- 목표를 설정하자
- 일단 기본 문법만 빠르게 보고 뭔가를 만들어보자.
발아(프로젝트 프로토타입 만들기)
- 프로토타입을 만들 때 고려해야 할 사항
- 미니멀리즘
- 일단 정말 필요한 것만 만들어야 한다.
- 시간이 지나면 동기부여가 낮아진다. 이 하락을 막으려면 중간중간 성취감이 있어야 함.
써레질(빌드/배포 자동화, 툴 설치)
- 유명한 오픈소스 프로젝트를 보면 공통점이 발견됨.
- status badge들이 있다는 것.
- 대중적인 badge 개념들을 하나씩 살펴보자.
- CI/CD
- 다양한 도구를 사용하게 됨. (Github actions, travis ci, circleCI, jenkins 등)
- 코드 커버리지
- 테스트 시 코드가 얼마나 실행되었는지 지표
- Cobertura, locv, Coverage.py 등이 있음.
- 정적 코드 분석
- 코드 내에서 발견 될 수 있는 결함, 위험 등을 찾는 과정
- CodeClimage, Codacy, CodeFactor 등
모내기(협업을 위한 준비, 홍보)
- 다른 개발자가 내 프로젝트에 어떻게 기여할 수 있을까?
- 프로젝트 설치 및 사용 방법 알려주기
- 프로젝트 코드 및 문서 구조화하기
- 나 같은 경우 기여하는 방법을 스텝 별로 정리해서 문서로 남겨준다.
- 기여 방법 단계별로 알려주기
- 내가 프로젝트 개발 하는 규칙을 다른 사람에게 알려주려면 단계별로 알려줘야 한다.
- 도움이 필요한 부분 등록하기
- 질문/답변을 할 수 있는 창구 만들기
- 모든 준비가 끝나면 오픈 소스 프로젝트 알리기
- 오픈소스 할 때 필요한 체크 리스트 : https://opensource.guide/ko/starting-a-project/
제초(이슈 및 코드 리뷰 대응)
- 새로운 이슈가 들어올 때 잘 대응하는게 중요하다.
다른 사람들을 위해
⇒ 템플릿 예시 : https://github.com/utilForever/RosettaStone/issues/new?assignees=&labels=&template=bug_report.md&title=
추수(다음 단계를 위한 준비)
- 여기까지 오느라 참 고생이 많았을 것.👏
- 이정도 단계까지 오면 선택지가 생긴다. 본인이 하고싶은 것으로 확장하면 될듯.
- 새로운 기능 추가
- 코드 리팩토링
- 성능 개선
- 새로운 프로젝트 도전
Q.학습 목적의 오픈소스 프로젝트를 선택할 때 고려해야할 기준은?
- A.내가 이걸 통해 얼마나 배우고싶은가 를 파악하는게 중요