ݺߣ

ݺߣShare a Scribd company logo
우리 팀에서도
코드리뷰를 할 수 있을까?
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
카카오스토리 웹팀의 코드리뷰 그 후
• 리뷰 정착의 어려움을 극복하는 과정이 좋았다
• 발표를 듣고 깃훅을 적용해봤는데 효과가 좋았다
• 우리 팀이 겪었던 과정과 비슷해 공감이 됐다
반면, 아쉬운 피드백
• 우리는 너무 바빠서 하기 어렵다
• 우리 팀 분위기에선 어차피 안될 것 같다
• 해보려고 했는데 잘 되지 않더라
기존 팀에 코드리뷰를 도입하게 됨
• 마침, 팀을 옮기게 됨
• 코드리뷰를 하지 않고 있던 팀
• 기존 팀에 리뷰를 도입하는 것이 어렵다는 것을 느낌
오늘은,
• 팀에서 코드리뷰를 해보려고 할 때
• 어떻게 잘 도입할 수 있을지에 대한 아이디어를 제안
• 부담없이 내일부터 시도해볼 수 있는 방법
오늘의 목표
• 처음엔 어떻게 시작해야 할까?
• 해보니 곧 흐지부지하게 되던데 어떻게 해야 할까?
• 어떻게 하면 다툼 없이 적용할 수 있을까?
가정
• 우리는 코드리뷰를 주도적으로 도입할 의지가 있다
• 지금 속해 있는 팀에서 리뷰를 해보려고 한다
• 깃헙과 같은 온라인 코드리뷰 도구는 준비되어 있다
용어
• 코드리뷰 = 리뷰
• Pull Request = PR
코드리뷰가 안정화될 때까지
성숙기도입기 안정기
코드리뷰가 안정화될 때까지
성숙기도입기 안정기
상호 리뷰하는 단계
코드리뷰가 안정화될 때까지
성숙기도입기 안정기
스토리 웹팀의 이야기
코드리뷰가 안정화될 때까지
성숙기도입기 안정기
대부분 도입기에서 실패
코드리뷰가 안정화될 때까지
성숙기도입기 안정기
리뷰다운 리뷰를 해보지도 못하고 실패
도입 실패 시나리오
• 자! 리뷰 해보자
• 바빠서 리뷰할 시간이 없다
• 그렇게 시간이 흐르고,
• 없었던 일이 됨
도입 실패 시나리오 2
• 자! 리뷰 해보자
• 각자 Pull Request를 올려보자
• 무플인 채로 시간이 흐르고,
• 없었던 일이 됨
왜 도입에 실패했을까?
• 리뷰할 시간이 없다
• 동료의 호응이 없다
리뷰에는 시간이 필요하다
• 내가 동료의 코드를 읽어야 함
• 동료가 내 코드를 읽어야 함
• 동료가 리뷰해주는 것을 기다려야 함
• 리뷰 받은 내용에 피드백을 해야 함
코드량과 리뷰시간
코드량
리뷰 시간
호응이 어려울 수도 있다
• 기존에 일해왔던 방식이 있음
• 여유가 없어 새로운 것에 대한 거부감이 있을 수 있음
• 리뷰를 하는 것에 대한 공감대 부족
코드리뷰에는 시간이 필요한데,
우리는 이미 너무 바쁨.
스토리 웹팀에서 유지할 수 있었던 이유
• 새로 시작하는 팀, 모두 동의 하에 도입
• 초기부터 팀의 문화로 자리잡힘
• 바쁜 상황에서도 리뷰의 우선순위가 높았음
코드리뷰는 팀의 문화
• 팀의 문화 = 팀의 습관
• 습관은 한 번에 바꾸기 어렵다
• 처음부터 너무 많은 것을 바꾸려고 했던 것은 아닐까
• 여유와 시간을 갖고 점진적으로 도입해보자
• 뇌는 변화를 싫어한다
• 가볍고 작은 일의 반복으로 극
복
• 스몰 스텝 전략
리뷰 도입 시 자주하는 실수
• 주도하는 사람도 익숙하지 않음
• 시작 단계에서 규칙을 너무 많이 정함
• 도입부터 많은 시간과 노력이 필요하게 됨
팀이 코드리뷰에 익숙해지도록 하자
• 코드리뷰라는 것에 익숙하게 하자
• 자연스럽게 습관이 되도록 만들자
• 조금씩 환경을 개선해보자
팀이 코드리뷰에 익숙해지도록 하자
• 코드리뷰라는 것에 익숙하게 하자
• 자연스럽게 습관이 되도록 만들자
• 조금씩 환경을 개선해보자
코드리뷰를 익숙하게 만드는 3단계
나 혼자 리뷰
동료에게
리뷰 요청
동료에게
PR 요청
코드리뷰를 익숙하게 만드는 3단계
동료가 코드리뷰에 익숙해지도록
나 혼자 리뷰
동료에게
리뷰 요청
동료에게
PR 요청
나중에 생각할 것
• 리뷰를 잘 하는 방법에 대한 것
• 리뷰 규칙, 머지 규칙, 도구 활용 등
• 상호 리뷰하는 단계 이후에 고민
우리의 마음가짐
• 천천히, 충분한 시간을 갖고 적용하자
• 원래 어려운 일이라 생각하자
• 어떻게 바뀌고 있는지 변화를 관찰하자
1단계: 나 혼자 리뷰하기
• 내가 PR을 올리고 내가 리뷰한다
• Pull Request - 리뷰 - 머지 경험하기
• 내가 코드리뷰에 익숙해지는 것이 목표
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
나 혼자 해보는 것의 장점
• 시간이 들지도 않고, 동료의 호응도 필요하지 않음
• 지금 바로 실천할 수 있음
• 코드를 퇴고하는 습관
나 먼저 익숙해지기
• 브랜치 관리, develop 따라가기 등
• 코드를 읽는 것에 익숙짐
• 다른 사람의 리뷰는 기대하지 않음
2단계: 동료에 리뷰 요청하기
• 내 코드에 대한 리뷰를 동료에게 부탁
• 처음엔 리뷰하기 쉽도록 PR은 작은 단위로
• 동료가 PR - 리뷰 - 머지 경험을 반복할 수 있도록
• 동료가 코드리뷰에 익숙해지는 것이 목표
[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균
호응이 없다면?
• 그럴 수 있다. 실망하지 말자
• 담당자를 지정해보자
• 구두 또는 메신저, 멘션으로
코드리뷰에 대해 언급하기
• 스크럼 또는 단체 채팅방에서
• “PR 올려뒀어요. 리뷰 부탁드려요~”
• 팀의 습관을 만들기 위한 물밑작업
그래도 호응이 없다면?
• 그럴 수 있다. 실망하지 말자
• 팀의 변화를 관찰하자.
어떤 변화가 있었을까?
• 내가 PR을 올리고 내 코드를 퇴고하고 있다
• 동료들이 PR - 리뷰 - 머지 싸이클을 인식했다
• 처음보다 리뷰에 응답할 확률이 높아졌다
내가 이걸 왜 하고 있지?
• 팀의 문화가 달라질 수 있다.
• 나를 포함해 모두 성장할 수 있다.
동료가 리뷰 의견을 줬다!
• 리뷰 의견에 피드백은 반드시 하기
• 의견을 수용할 지 여부는 본인이 결정
• 애매할 땐, “생각해보고 결정할께요”
코드는 내가 아니다.
그저 내가 작성한 코드일 뿐.
3단계: 동료에게 PR 요청하기
• 스크럼 또는 단체 채팅방에서
• “리뷰 필요하시면 PR 올려주세요~”
• 분위기를 만들되, 강요하지 말고 기다리자
동료가 Pull Request를 올렸다!
• 우리의 목표에 근접해왔다!
• 피드백! 반드시 피드백하기
이렇게 리뷰하자
• 부드럽고 젠틀하게
• 궁금한 건 의도를 물어보는 식으로 접근
• 이견이 있다면 구체적인 방법을 제시
• 결정권은 작성자에게 있다
좋은 예
• “이런 이런 상황에선 어떻게 되는 거죠?”
• “이 코드는 어떤 이유 때문에 있는 거예요?”
• “이렇게 하면 더 좋을 것 같아요” - 구체적 코드
어떤 부분을 리뷰하면 좋을까
• 구조/로직 개선, 버그 수정, 예외 처리, 성능 개선 등
• 코딩 스타일에 대한 리뷰는 나중에 해도 좋을 듯
어… 할 말이 없는데?
• “좋네요!”
• “수고하셨습니다”
• “👍🏽”
누군가 내 코드를 보고 있다.
누군가 내 코드를 보고 있다.
코드를 한 번 더 검토하게 되는 동기를 유발
동료가 내 코드를 주의 깊게 보고 있다.
동료가 내 코드를 주의 깊게 보고 있다.
코드리뷰를 통해 함께 성장할 수 있는 시작점
코드리뷰의 도입
성숙기도입기 안정기
리뷰가 익숙짐
도입기에서 성숙기로
성숙기도입기 안정기
상호 리뷰하는 단계
도입기에서 성숙기로
• 이제는 상호 리뷰를 하는 단계. 성숙기에 진입
• 팀에 맞는 더 좋은 리뷰 방법을 고민해야할 때
• 스토리 웹팀의 리뷰 경험
‘코드리뷰’에 대한 피드백
• 회고 또는 정기적인 개발 미팅
• 코드리뷰에 대한 후기를 공유
• 리뷰를 지속할 수 있는 동기
• ‘우리가 조금씩 하고 있구나’라는 공감대
옮긴 팀에서의 결과
• 약 7개월 간 142개의 PR
• 댓글이 있는 PR: 59개
• 댓글이 3개 이상: 30개
• 총 댓글: 250개
아직 피드백이 활발하지 않은 것은 아쉬움
나아지고 있다고 생각하는 점
• 7개월 간 지속하고 있음
• 실질적으로 의미있는 리뷰도 다수 있었음
• 이제는 모두 코드리뷰가 익숙함
• 자율적으로 PR을 올림
강압적으로 적용했다면 어땠을까?
• 팀원들의 거부감, 스트레스
• 기존 프로세스 대비 리뷰가 병목이 될 가능성
• ‘코드리뷰가 과연 필요할까?’에 대한 논의
새로 시작하는 팀이라면
• 빠른 시점에 문화로 정착시키자
• 모든 멤버의 자율적 동의로 시작하고,
• 최대한 강제성을 적용한 규칙으로 시작
• 규칙은 도구를 사용해 제한
시작할 땐 이렇게 해보면 어떨까
• develop, master push 제한 / 모두 PR로
• 모든 멤버의 동의로 머지
리뷰를 잘 유지하려면
• 적극적으로 피드백 하기
• 개발자들과 자주 이야기할 수 있는 환경 만들기
• 규칙을 제한할 땐 도구를 활용하기
정리: 기존 팀에 리뷰 도입하기
• 코드리뷰에 익숙해지게 하자 - (나 먼저)
• 적극적으로 피드백하자 - (누군가 보고 있다는 느낌)
• 자연스럽게 습관이 될 수 있게 유도하자 - (스크럼, 단톡
방)
• 팀의 변화를 관찰하자
Q&A
Thank You

More Related Content

What's hot (20)

Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile World
SmartBear
Agile Methodology
Agile MethodologyAgile Methodology
Agile Methodology
Aciron Consulting
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
Rhoynar Software Consulting
데이터 분석 프로젝트 관리 방법론
데이터 분석 프로젝트 관리 방법론데이터 분석 프로젝트 관리 방법론
데이터 분석 프로젝트 관리 방법론
Dennis Lee
Cypress Automation
Cypress  AutomationCypress  Automation
Cypress Automation
Susantha Pathirana
Agile Lifecycle for Enterprise IT Programs
Agile Lifecycle for Enterprise IT ProgramsAgile Lifecycle for Enterprise IT Programs
Agile Lifecycle for Enterprise IT Programs
Glen Alleman
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
Roger Turnau
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
Lars Thorup
Jira training
Jira trainingJira training
Jira training
Rahul Janghel
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
NAVER D2
Static Code Analysis
Static Code AnalysisStatic Code Analysis
Static Code Analysis
Annyce Davis
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
DaeMyung Kang
[Trung Hoang] Shu-Ha-Ri applied to Agile team
[Trung Hoang] Shu-Ha-Ri applied to Agile team[Trung Hoang] Shu-Ha-Ri applied to Agile team
[Trung Hoang] Shu-Ha-Ri applied to Agile team
Trung Hoang Nhac
Code Review
Code ReviewCode Review
Code Review
Mikalai Alimenkou
Agile Scrum Training Process
Agile Scrum Training ProcessAgile Scrum Training Process
Agile Scrum Training Process
Clarion Marketing
Story Maps in practice
Story Maps in practiceStory Maps in practice
Story Maps in practice
Christian Hassa
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
Startlink
Agile scrum fundamentals
Agile scrum fundamentalsAgile scrum fundamentals
Agile scrum fundamentals
Deniz Gungor
Agile & SCRUM basics
Agile & SCRUM basicsAgile & SCRUM basics
Agile & SCRUM basics
Arun R
Agile estimation & planning
Agile estimation & planningAgile estimation & planning
Agile estimation & planning
Mayur Sand
Successfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile WorldSuccessfully Implementing BDD in an Agile World
Successfully Implementing BDD in an Agile World
SmartBear
데이터 분석 프로젝트 관리 방법론
데이터 분석 프로젝트 관리 방법론데이터 분석 프로젝트 관리 방법론
데이터 분석 프로젝트 관리 방법론
Dennis Lee
Agile Lifecycle for Enterprise IT Programs
Agile Lifecycle for Enterprise IT ProgramsAgile Lifecycle for Enterprise IT Programs
Agile Lifecycle for Enterprise IT Programs
Glen Alleman
How BDD enables True CI/CD
How BDD enables True CI/CDHow BDD enables True CI/CD
How BDD enables True CI/CD
Roger Turnau
Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)Test and Behaviour Driven Development (TDD/BDD)
Test and Behaviour Driven Development (TDD/BDD)
Lars Thorup
개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님개발을잘하고싶어요-네이버랩스 송기선님
개발을잘하고싶어요-네이버랩스 송기선님
NAVER D2
How to build massive service for advance
How to build massive service for advanceHow to build massive service for advance
How to build massive service for advance
DaeMyung Kang
[Trung Hoang] Shu-Ha-Ri applied to Agile team
[Trung Hoang] Shu-Ha-Ri applied to Agile team[Trung Hoang] Shu-Ha-Ri applied to Agile team
[Trung Hoang] Shu-Ha-Ri applied to Agile team
Trung Hoang Nhac
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
두 번째 startlink.live: 오현석 (algoshipda) - 초심자를 위한 알고리즘 공부 전략
Startlink
Agile scrum fundamentals
Agile scrum fundamentalsAgile scrum fundamentals
Agile scrum fundamentals
Deniz Gungor
Agile & SCRUM basics
Agile & SCRUM basicsAgile & SCRUM basics
Agile & SCRUM basics
Arun R
Agile estimation & planning
Agile estimation & planningAgile estimation & planning
Agile estimation & planning
Mayur Sand

Similar to [135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균 (20)

홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
devCAT Studio, NEXON
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
호정 이
피드백 시스템
피드백 시스템피드백 시스템
피드백 시스템
Daniel Lim
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
Hoyoung Choi
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
Seokjae Lee
더 나은 팀을 위하여
더 나은 팀을 위하여더 나은 팀을 위하여
더 나은 팀을 위하여
Heejong Ahn
일관된 경험을 주는 브랜드 만들기.pdf
일관된 경험을 주는 브랜드 만들기.pdf 일관된 경험을 주는 브랜드 만들기.pdf
일관된 경험을 주는 브랜드 만들기.pdf
Tac Min Oh
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)
영주 박
프로젝트가 서쪽으로 간 까닭은
프로젝트가 서쪽으로 간 까닭은프로젝트가 서쪽으로 간 까닭은
프로젝트가 서쪽으로 간 까닭은
종석 박
2022 경희대학교 테크콘서트
2022 경희대학교 테크콘서트2022 경희대학교 테크콘서트
2022 경희대학교 테크콘서트
JongyoonJeong1
코드리뷰 공감하기
코드리뷰 공감하기코드리뷰 공감하기
코드리뷰 공감하기
Sungmin Oh
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer han
DaeMyung Kang
240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료
240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료
240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료
WonJongOh1
현장에서 사용하는 Software production
현장에서 사용하는 Software production현장에서 사용하는 Software production
현장에서 사용하는 Software production
Jinho Yoo
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
Javajigi Jaesung
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
NAVER D2
ᅥᅥᅡᅩᅩᆺ
ᅥᅥᅡᅩᅩᆺᅥᅥᅡᅩᅩᆺ
ᅥᅥᅡᅩᅩᆺ
민건 주
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)
도형 임
DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기
Byungho Lee
devops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptxdevops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptx
Byungho Lee
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
홍성우, 게임 프로그래머는 어떻게 가르치나요?, NDC2018
devCAT Studio, NEXON
Code Review - DevOn2013
Code Review - DevOn2013Code Review - DevOn2013
Code Review - DevOn2013
호정 이
NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할NDC2019 - 게임플레이 프로그래머의 역할
NDC2019 - 게임플레이 프로그래머의 역할
Hoyoung Choi
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
퇴근 후 해볼만한 N 가지 활동(개발자 ver.)
Seokjae Lee
더 나은 팀을 위하여
더 나은 팀을 위하여더 나은 팀을 위하여
더 나은 팀을 위하여
Heejong Ahn
일관된 경험을 주는 브랜드 만들기.pdf
일관된 경험을 주는 브랜드 만들기.pdf 일관된 경험을 주는 브랜드 만들기.pdf
일관된 경험을 주는 브랜드 만들기.pdf
Tac Min Oh
smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)smell like sin spirits(codereview mindset)
smell like sin spirits(codereview mindset)
영주 박
프로젝트가 서쪽으로 간 까닭은
프로젝트가 서쪽으로 간 까닭은프로젝트가 서쪽으로 간 까닭은
프로젝트가 서쪽으로 간 까닭은
종석 박
2022 경희대학교 테크콘서트
2022 경희대학교 테크콘서트2022 경희대학교 테크콘서트
2022 경희대학교 테크콘서트
JongyoonJeong1
코드리뷰 공감하기
코드리뷰 공감하기코드리뷰 공감하기
코드리뷰 공감하기
Sungmin Oh
Better softwareengineer han
Better softwareengineer hanBetter softwareengineer han
Better softwareengineer han
DaeMyung Kang
240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료
240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료
240326스트캠퍼스_캠프콘_오원종_2024Ƅ_론트엔드_트렌드_발표자료
WonJongOh1
현장에서 사용하는 Software production
현장에서 사용하는 Software production현장에서 사용하는 Software production
현장에서 사용하는 Software production
Jinho Yoo
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
소프트웨어 학습 및 자바 웹 개발자 학습 로드맵
Javajigi Jaesung
커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님커뮤니티와 함께한 예비개발자 성장기- 조성수님
커뮤니티와 함께한 예비개발자 성장기- 조성수님
NAVER D2
테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)테스트 기발 개발, TBD(Test based developement)
테스트 기발 개발, TBD(Test based developement)
도형 임
DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기DevOps 2년차 이직 성공기
DevOps 2년차 이직 성공기
Byungho Lee
devops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptxdevops 2년차 이직 성공기.pptx
devops 2년차 이직 성공기.pptx
Byungho Lee

More from NAVER D2 (20)

[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
NAVER D2
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
NAVER D2
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
NAVER D2
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
NAVER D2
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
NAVER D2
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
NAVER D2
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
NAVER D2
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
NAVER D2
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
NAVER D2
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
NAVER D2
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
NAVER D2
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
NAVER D2
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
NAVER D2
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
NAVER D2
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
NAVER D2
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
NAVER D2
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
NAVER D2
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
NAVER D2
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
NAVER D2
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
NAVER D2
[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다[211] 인공지능이 인공지능 챗봇을 만든다
[211] 인공지능이 인공지능 챗봇을 만든다
NAVER D2
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
[233] 대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing: Maglev Hashing Scheduler i...
NAVER D2
[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기[215] Druid로 쉽고 빠르게 데이터 분석하기
[215] Druid로 쉽고 빠르게 데이터 분석하기
NAVER D2
[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발[245]Papago Internals: 모델분석과 응용기술 개발
[245]Papago Internals: 모델분석과 응용기술 개발
NAVER D2
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
[236] 스트림 저장소 최적화 이야기: 아파치 드루이드로부터 얻은 교훈
NAVER D2
[235]Wikipedia-scale Q&A[235]Wikipedia-scale Q&A
[235]Wikipedia-scale Q&A
NAVER D2
[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기[244]로봇이 현실 세계에 대해 학습하도록 만들기
[244]로봇이 현실 세계에 대해 학습하도록 만들기
NAVER D2
[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning[243] Deep Learning to help student’s Deep Learning
[243] Deep Learning to help student’s Deep Learning
NAVER D2
[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications[234]Fast & Accurate Data Annotation Pipeline for AI applications
[234]Fast & Accurate Data Annotation Pipeline for AI applications
NAVER D2
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load BalancingOld version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
Old version: [233]대형 컨테이너 클러스터에서의 고가용성 Network Load Balancing
NAVER D2
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
[226]NAVER 광고 deep click prediction: 모델링부터 서빙까지
NAVER D2
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
[225]NSML: 머신러닝 플랫폼 서비스하기 & 모델 튜닝 자동화하기
NAVER D2
[224]네이버 검색과 개인화
[224]네이버 검색과 개인화[224]네이버 검색과 개인화
[224]네이버 검색과 개인화
NAVER D2
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
[216]Search Reliability Engineering (부제: 지진에도 흔들리지 않는 네이버 검색시스템)
NAVER D2
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
[214] Ai Serving Platform: 하루 수 억 건의 인퍼런스를 처리하기 위한 고군분투기
NAVER D2
[213] Fashion Visual Search
[213] Fashion Visual Search[213] Fashion Visual Search
[213] Fashion Visual Search
NAVER D2
[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화[232] TensorRT를 활용한 딥러닝 Inference 최적화
[232] TensorRT를 활용한 딥러닝 Inference 최적화
NAVER D2
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
[242]컴퓨터 비전을 이용한 실내 지도 자동 업데이트 방법: 딥러닝을 통한 POI 변화 탐지
NAVER D2
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
[212]C3, 데이터 처리에서 서빙까지 가능한 하둡 클러스터
NAVER D2
[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?[223]기계독해 QA: 검색인가, NLP인가?
[223]기계독해 QA: 검색인가, NLP인가?
NAVER D2

[135] 우리 팀에서도 코드리뷰를 할 수 있을까 안오균

Editor's Notes

  • #5: 특히 조직장 처음엔 공감하지 않음 / 의지 없는 사람들?
  • #6: 기존에 문제 없음. 나는 iOS 초보자, 리딩하기 어려움
  • #7: 지난 슬라이드가 잘 하는 방법이었다면 / 제안
  • #8: 이 질문에 대한 답을 얻을 수 있는 기회
  • #9: 코드리뷰의 장점
  • #11: 하기 시작한 도입기 이슈 해결 성숙기 문화로 자리 잡은 안정기
  • #13: 스토리 웹팀의 이야기는 성숙기에서 안정기로 가는 이야기
  • #18: 그 외에 에고가 강하다거나. 그렇지만 두 가지가 가장 큼. 그렇다고 누굴 탓할 수 없다.
  • #19: 전체 개발 시간 차치 / 리뷰 자체에 소요되는 시간
  • #20: 생각보다 꽤 오랜 시간 / 스토리 때는 하루 종일 걸리기도 했음
  • #21: 기존 일하는 방식이 최적화 / 예: 작업 범위 나뉘어져 있음 좋다고 느끼지 않을 수 있고
  • #22: 어려운 일이죠.
  • #23: 다들 처음이라 거부감이 적었음. 초기에 운 좋게 자리 잡음 리뷰가 당연하다는 인식
  • #24: 습관은 오랜 시간에 걸쳐 만들어짐
  • #26: 리뷰 도입에 실패했던 팀의 공통점
  • #27: 코드리뷰 대단하지 않음, 대화의 일종 이렇게 접근하면 쉽게 할 수 있을 것
  • #28: 오늘의 키워드
  • #29: 3단계로, 기존엔 한꺼번에, 이번엔 단계별로 나눠서 접근
  • #30: 단계별로 나눠 접근하는 것으로, 리뷰에 자연스럽게 익숙해지도록
  • #32: 사람을 움직이고 팀의 습관을 바꾸는 일 팀에 리뷰를 도입하는 실험을 하고 있다는 느낌 어려운 시기가 왔을 때 이겨낼 수 있을 것
  • #33: develop 머지 / 신경쓰지 않는다.
  • #38: 리뷰가 오래 걸리는 이유 / 온라인에서 느낌이 달라요.
  • #39: 내 코드지만 낯설음 / 댓글이 없어도 신경쓰지 않고 / 본인이 익숙 어느 정도 시간이 되고 익숙해진 후에 >
  • #40: 100라인 이내 /
  • #41: 옮긴 팀에서의 첫 Pull Request
  • #42: 응급처치 훈련
  • #43: 멘트를 자주
  • #44: 심적으로 어려운 시기 팀은 오랜시간 지속되고, 조금씩 나아지면 되니까 / 어제보다 오늘이 나으면 되니까
  • #45: 자꾸 얘기하면 상대방도 불편해서 하게 됨
  • #46: 가장 어려운 시기엔, ‘왜’라는 질문을 내가 조금만 더 지속하면 우리 팀을 바꿀 수 있다 마인드 컨트롤
  • #47: 첫 리뷰가 굉장히 중요
  • #48: 코드와 나를 분리하는 수행
  • #50: 의지가 꺾이지 않게
  • #51: 코드 레벨에서 서로에게 더 도움이 된다.
  • #52: 나쁜 예: 우리 마음 속에 있기 때문 이거 뭐야? / 이건 뭐지? / 헐 빈정 상하면 쌓아놓은 탑이 무너짐 / 젠틀하게
  • #53: 리뷰 받는 사람도 도움이 된다고 느낄만한 부분 / 첫인상
  • #54: 그냥 다 좋아보이고, 어려울 수도 있고 못 알아 먹을 수도 있고 충분히 피드백을 표현할 수 있음
  • #56: 상대방이 더 좋은 코드를 쓰고, 한 번 더 검토하는 동기를 유발거라고 생각
  • #57: 리뷰 피드백이 활성화 / 이 시점이 상호 성장의 기반이 되는 시작점 스토리에선 이렇게 짜면 뭐라 그럴 것 같은데
  • #58: 리뷰 피드백이 활성화 / 이 시점이 상호 성장의 기반이 되는 시작점 스토리에선 이렇게 짜면 뭐라 그럴 것 같은데
  • #59: 도입기를 극복해낼 수 있는 아이디어에 대한 이야기
  • #61: 2개월 3개월이든 몇몇은 참여하지 않고, 댓글 없이 머지되는 경우도 있고.
  • #62: 이런 게 좋았다. 저런 게 좋았다. 누가 리뷰해줘서 고마웠다. 도움이 됐다. 이렇게 하고 싶다.
  • #64: 이터레이션 기간, 담당 피처 개수 대비 PR의 수는 적당함 PR의 수가 유지되고 있음
  • #65: 타팀 사람도 있음 팀의 분위기를 바꿀 수 있었다는 것에 의미가 있다고 생각 만약에, 강제로 적용하려고 했다면 어땠을까?
  • #66: 타팀 사람도 있음 팀의 분위기를 바꿀 수 있었다는 것에 의미가 있다고 생각 만약에, 강제로 적용하려고 했다면 어땠을까? 기존 팀에서는 이 방법이 효과적
  • #68: 코드 스타일 체크는 깃훅 등의 도구 활용 성숙기로 들어서면 >