내가 이 웨비나를 들은 이유와 얻고자 하는 것
급격한 체력저하와 구체적인 목표 상실로 성장이라는 단어에 신물이 나고, 공부에 흥미를 잃었고, 공부에 대한 방향성도 잃은 요즘. 동기부여가 필요했고, 구체적인 계획을 세우고 싶어서 웨비나를 신청했다.
이번 코드 리뷰의 주제는 크게 개발자의 성장
, 오픈소스
, 해외 취업
, 발표
였다.
나의 주된 니즈는 성장을 어떻게 해야하는지, 오픈소스 공부는 어떤 식으로 해야하는지, 해외 취업을 하려면 어떤 것을 준비해야하는지였고, 결과적으로 가려운 부분을 잘 긁어주는 시간이었다.
세션별로 기억에 남는 부분을 정리했고, 마지막에 생각을 정리했다.
Session 1. 성장하는 개발자의 '공유의 기술' - 탈잉 박미정님
- 내가 개발자로서 성장하기 위해 어떤 행위들을 어떻게 해오고 있는지.
- 개발자로서 성장?
- 개발자로서의 나의 능력
- 개발자로서 다른 개발자에게 끼치는 영향력이 커지는것
💡 시작하기 전에 고민해야할 것
1. 나 지금 이거 할 시간있어?
2. 왜 하는건데?
3. 그래서 결과물이 뭐야?
4. 그럼 어떻게 할까?
1. 스터디 모임/공부
왜?
업무를 숙지하고, 업무를 더 잘하기 위함
결과물 ?
일정과 품질을 가져가며 업무를 해내는 것
어떻게?
계획 된 프로젝트 내에서 필요한 기술을 리스트업, 업무 계획을 세울 때 공부 계획도 세우기
- 기존의 것을 더 정확히 이해하기 >>> 새로운 것을 학습
- 업무를 할 때 모호하게 알고 있던 것들, 필요한 것들 위주로 공부를 하는게 효과적이었다 -> 결과가 가시적으로 나오기 때문
2. 블로그 글쓰기
왜?
문제 해결을 통해 깨달은 것을 온전한 내 것으로 만들기 위함
결과물?
차곡차곡 쌓인 나의 글과 경험, 깨달음
어떻게?
- 내가 겪은 문제 상황을 자유롭게 노트에 적음
- 2주에 한 번 돌아보고 키워드 선정 후 작성
- 내용 구성: 문제 상황에 대한 설명 -> 해결책 -> 그 해결책을 선택한 이유
- 본인이 잘 읽히는 글의 포맷을 따라 쓰기
3. 집필
왜?
: 내 가치관을 녹여서 책의 형태로 필요한 것을 제공하기 위함
결과물?
: 내 이름으로 된 책!
어떻게?
- 평소에 왜 없지?라고 생각햇던 주제 리스트 업
- 내가 그 주제를 경험했거나, 곧 경험할 예정인지 판단
- 출판사에 제안
- 집필 시간 계획
- 이타적으로 필요하다고 판단 한 것, 그리고 스스로가 묻어나는 것
- 정말 많은 고민과 시간이 필요한 일!
4. 발표
왜?
하드스킬-동기부여가 필요할 때, 소프트스킬-개발 문화에 기여하고자 할 때
결과물?
필요한 기술에 대한 학습
어떻게?
명확하고 구체적인 목표를 정하고, 결과물을 만들어, 공유를 통해 피드백을 수집한다.
Session 2. 혼자서 오픈소스로 성장하기
- 개발자에게 필요한 능력 : 업무 태도, 커뮤니케이션, 협업, 업무 파악, 문제해결, 코딩능력
좋은 코드를 작성하려면 우선 코드를 많이 작성해야한다. 많이 시도 하기. 좋은 소스, 나쁜 소스 다 많이 작성해본다.
1. 오픈 소스로 개인 프로젝트를 만든다
- 공부할 기술을 활용해 볼 소프트웨어를 만든다.
- 직접 써보면서 특징을 익혀서 어떤 상황에 적합한지를 몸소 배우기.
- 요구사항을 직접 정의할 수 있다.
- 게으른 사람 : 힘든 일을 쉽게 해결하려고 하는 사람.
2. 기존의 소프트웨어를 다시 만든다
- 아이디어 고민을 하지 않아도 되고 요구사항이 이미 정해져 있다
- ex) 웹서버, 랜덤 워드 제너레이터, HTTP 클라이언트, 날짜/시간 관련, 라이브러리
- 장점 : 참고할 소스코드가 있다. 오픈소스 안에 어떻게 구현되어 있는지 나와있다. 내부 구조를 이해할 수 있다.
3. 오픈소스 프로젝트의 코드를 읽는다.
- 조엘 스폴스키(스택 오버플로우) : 코드를 작성하는 것보다 읽는 것이 더 어렵습니다.
- 많이 읽어볼수록 더 빨리 잘 읽을 수 있다.
- 방법 : 자주 사용하는 프로젝트의 코드를 본다, 버그나 이슈가 잇을 때 코드를 본다, 문서가 잘 이해 안 될 때 코드를 본다. 내부 동작이 궁금해지면 코드를 본다.
- 눈으로 읽는 것이 아니라, 실행 해보고, 로그를 찍거나 디버거도 돌려보고 학습 테스트를 작성해 보기도 한다.
- 작은 프로젝트부터 보기!, 아니면 프로젝트가 크다면 0.1 버전을 본다.
4. 협업하는 방법을 배운다.🌟
- 대부분의 오픈소스도 협업으로 만들어진다.
- 메인테이너의 입장에서 보기
- 어떤 이슈가이해하기가 좋은지
- 어떤 이슈가 문제 파악이 쉬운지
- 어떤 이슈가 처리가 안되는지
- 어떤 Pull Request가 리뷰하기 좋은지
- 어떤 Pull Reqeust가 막혀있는지
- 예 : requirement, description of the change, alternate design, why should this be in core?(이게 왜 중요한지?), benifits, possible drawbacks(상상되는 문제), applicable issues - 코드리뷰할 때 해보기
5. 오픈 소스의 생태계의 시스템을 학습한다.🌟
- 실수를 막기 위한 다양한 시스템이 있음.
- 그 절차와 도구가왜 필요하고, 협업을 하는데 뭐가 좋은지
- 예)CI, Formatting, Linting, Unit Test, Code Coverage(coveralls, codecov), changelog, relase notes
Session 3. 개발자의 슬기로운 발표생활 : 발표기회를 만드는 방법, 그리고 놓치지 않는 방법
발표를 하는 것은 자기 브랜딩과 커리어의 기회가 된다.
발표 기회를 만드는 방법?
발표할게 없다?뭘해야할지 모르겠다?
- 발표는 내 견해/관점을 공유하는 것
- 나의 경험을! 나의 관점에서!
- 평소에 발표할 생각으로 정리해두기
- 우려먹어도 괜찮다! 같은 소재라도 컨퍼런스의 주제와 대상에 따라 다른 내용이 될 수 있다.
성장은 항상 불편함과 고통 속에서 이루어진다.
발표 기회를 놓치지 않는 방법
- 짧게! 핵심 먼저 전달!
- 모든 이야기 전달 < 중요한 내용 전달. = 내가 전달하고자 하는 것을!!
- 장표는 한눈에, 발표자에게 전달, 속도감
- 발표를 잘하려면 연습 또 연습
공유의 즐거움
- 내가 뭘 모르는지 모를 때 힘들었다.
- 다른 사람들의 발표를 많이 듣고 정리하기.
- 공유는 나의 성장과 함께 성장하는 방법
- 누군가의 발표로 내가 거인의 어깨에 올라갔듯, 누군가도 제 어깨에 올라왔으면
Session 4. 오픈소스 프로젝트 키우기 : 파종부터 추수까지! 오픈소스 재배 일기
파종 - 어떤 오픈 소스 프로젝트를 만들까?
- 좋아하는 기술? 잘하는 기술? 좋아하는 언어? 잘하는 언어? => 하고싶은 걸 하세요
발아 - 프로토타입 만들기
- 프로토타입을 만을 때 고려해야 할 사항
- 오랜시간이 걸리면 의욕이 떨어진다.
- 꼭 필요한 기능만 구현해서 프로토타입을 출시한다.
- 큰 프로젝트를 만들려고 하면 의욕이 떨어져 결국 방치하게 됨. 연사님께도 이런 프로젝트가 있음!
써레질 - 빌드/배포 자동화 및 각종 툴 설치
- 지속적인 통합 : 여러 개발자가 작성하거나 수정한 소스를 지속적으로 통합하고 테스트하는 것
- GitHub Actions, Jenkins, Travis CI, CircleCI, appVeyor, ...
- 지속적인 배포 : 개발, 통합, 배포, 릴리즈, 테스트를 자동화해 지속적으로 배포하는 것
- 코드 커버리지
- 정적 코드 분석 : 코드 내에서 발견될 수 있는 보안 취약점, 잠재적인 결함, 위험 등을 찾는 과정
(더 있지만 정리를 못했다)
Session 5. Zero to Hero : 비개발자에서 Be개발자로 성장하기까지의 과정
1. 나만의 커리어 로드맵을 그려라
- IT업계 커리어는 사다리가 아닌 정글짐. 신기술, 회사 내 업무, 관심사에 따른 커리어 변환이 잦음
- 내 관심사와 성향에 맞는 개발 분야 및 직무 찾기
- 나는 xx 개발자로 성장하기 위해 어떤 노력을 할 것인가?
- Discovery : 현재 나의 상황을 객관적으로 진단하고 필요한 지식과 역량을 발견
- Plan : 구체적인 목표와 액션 플랜을 설정
- 커리어 : 향후 1~2년, 3~5년 후 나의 모습은? 나의 현재 어느 위치에 잇는가?
- 개발 : 내가 개발해야 할 역량은? 이를 성취하기 위해 해야할 일은?
- 관심있는 회사와 채용 공고를 3개 이상 찾아보고 필요한 소프트스킬, 하드스킬을 정리해보기
- 관련 업계 롤모델을 찾아보고 배울 점을 정리해보기
- Career Ladder 기준으로 개인 역량 진단
- 역량 개발 목표 설정
- 분기별 로드맵
- 단 시간에 성취할 수 있는 아주 작은 것부터 시작하기
- 기본기에서 탁월함이 나온다(프로그래밍 기초의 중요)
- 소프트스킬(커뮤니케이션 능력, 리더십)도 역량이며 경쟁력
- 70:20:10의 학습 법칙 : 학습의 70프로는 업무 경험을 통해서, 20프로는 타인과의 상호작용을 통해서, 10프로는 교육을 통해서 일어난다
2. 영어로 개발 지식을 쌓자
- 영어로 강의 듣고, 개발문서 읽기
- 3~5개월 들으니 귀가 트이고, 문서가 술술 읽히기 시작함
- 영어는 내 세상을 넓힐 수 있는 수단
3. 학습과 취업을 동시에 잡는 개발 프로젝트를 만들자
- 회사 업무 중 만난 문제를 발전시켜 프로젝트를 해도됨
4. 커뮤니티와 함께 성장하자
- 공통의 관심사를 가진 사람들과 만남을 통해 좋은 개발자로 빨리 성장하고 있다.
Fact, Feeling, Finding
우선 발표 자체가 좋았다. 내용과 구성, 톤이 매끄러웠고, 일잘러의 기운이 느껴졌다. 나도 저런 사람이 되고싶다고 생각했다. 그래서 어떻게하면 될 수 있을까, 지금 내게 부족한 것은 무엇일까에 대해 생각해 봤다.
✔ 실력 ㅠㅠ
✔ 정확한 의사소통 - 간결하고 정확한 내용을 똑똑한 톤으로.
✔ 지레짐작하지 말고 끝까지 듣고, 의도를 파악한 후 말하기.!!
웨비나를 통해 얻은 것중 실력을 올리기 위해 내가 당장 하고싶은 것을 정리하자면
모든 일을 하기 전에 우선 왜? 결과물은? 어떻게?
을 생각해 볼 것. 행위를 의식의 수준으로 끌어올릴 수 있고, 결과물이 손에 잡히기 때문에 동기부여도 될 것 같다.
오픈 소스 코드를 많이 읽어볼 것이다. 요즘은 안 하고 있는 매주 개발 글쓰기 주제가 없을 때는 오픈 소스를 읽어본 내용을 정리해야지! 라고 생각하는 중이다. 오픈 소스를 읽을 때는 코드만 읽는다고 생각했는데, 그 협업하는 방법이나 시스템을 배울 수도 있다는 점을 새로 알게 되었다.
PR 올릴 때 : requirement, description of the change, alternate design, why should this be in core?(이게 왜 중요한지?), benifits, possible drawbacks(상상되는 문제), applicable issues에 대해 먼저 생각해보기.
뭘 공부해야할지 모르겠고, 하기 싫을 때는 개발자 커리어 로드맵 생각해보고, 가고싶은 회사 채용공고 확인하는 게 도움이 많이 될 것 같다.
마지막으로...VOD를 보다가 요청 리소스 과다로 실행할 수 없습니다.
라는 에러메시지가 떴는데 지나치게 개발자의 언어로 쓰인게 아닌가싶었다 ㅎㅎㅎ