성장
개발자의 성장
-
지속 가능한 개발 이야기
-
개발자로써 지속적으로 성장하고자 하는 분들에게…
-
-
강사의 관심사
-
지속 가능한 소프트웨어, 시스템 개발(OOP), Java, TDD, Design Pattern
-
Clean Code / Architecture, Code Review, Agile(Lean) Development
-
MSA, EDA
-
개발 문화 개선
-
-
백발의 개발자
-
대부분의 구성원들이 나이 먹어도 개발자
-
어떻게하면 계속 개발할 수 있을까?
-
꿈? 백발의 개발자라면 어떤 계획이 있는가?
-
-
꿈을 위해서 무엇을 준비하고 있고, 무엇을 준비할 것인지?
-
그냥 열심히 일한다? 집에서 책을 본다? 이것만으로 백발의 개발자가 되는것인가?
-
시간이 없어서 못한다는 말을 많이 듣지만, 실력인지 시간인지
-
실력이 있다면 그 시간에서도 실력이 나올텐데.
-
-
정신병자 초기 증상 - 아인슈타인
-
"어제와 똑같이 살면서 다른 미래를 기대하는 것은 정신병 초기증세이다."
-
Note
|
"꿈을 위해 무엇을 준비하고 있고, 무엇을 준비할 것인가?"에 대해 선뜻 답할 수 없던 자신에게 부끄럽다. 앞으로 작게는 5년 계획, 크게는 10년 계획은 해보자. 시간이 없어서 못한다는 시간으로 실력 있어 보이려고 했던게 아닐까 생각들었다. '실력’을 키우자. |
왜 성장해야 하나?
-
하고 싶은 일을 할 기회를 늘리기 위해 (개선, 서비스, 탈오라클, …)
-
성공은 운칠기삼
-
사람이 살아가는데는 앞을 알 수 없는 운명의 장난? but 3할은 이치도 틀림없이 행해지고 있음
-
결과 = (열심히 + 잘) * 기회
-
-
내가 잘하면 → 우리 서비스가 잘되고 → 우리 회사가 잘됨
-
어디에 집중? 내가 제어할 수 있는 것 / 제어할 수 없는 것
-
열심히는 누구나
-
"받은 만큼만 일한다" vs "받고 싶은 만큼 일한다"
-
내가 제어할 수 있는 것에 집중 필요
-
-
열심히, 잘, 성공
-
기회가 오지 않더라도 성장한다면 언제든 성공 가능
-
지금 이직하지 않으면 좋은 오퍼가 앞으로 없을 것인지?
-
성장하고 있다면 더 좋은 오퍼는 언제든 올 것이다
-
-
지금 성공이 나중에는 미미한 것일 수도.
-
성장에 대한 다른 사람의 의견
-
성장은 본능
-
시간이 지나고 보면 성장 아니면 퇴보. 현장유지는 없음.
-
가만히 있으면 퇴보
-
-
에이브러햄 매슬로의 욕구 5단계
I don’t divide the world into the weak and the stong, or the successes and failures… I devide the world into the learners and non-learners.
Note
|
처음 회사에 입사했을 땐 "받고 싶은 만큼 일한다"고 마음 먹었고, 짧은 경력이 내 전부라 그게 오랜 시간이라 생각했고, 왜 (회사가 주는) 나의 평가/가치는 적은가에 대해 불만을 가졌다. 신입으로써 본받을 팀원을 넘어서자는 목표만으로 열심히 했었는데, 지금 생각하면 딱 거기까지만 성장하려 했던 것 같다. 결코 그를 넘어서진 않았던게 아닐까. 요즘엔 연봉에 대한 욕심이 전보다 줄었다. 마음 한켠에 "받은 만큼 일한다"는 생각이 자리 잡은 것 같다. 성격상 제대로, 잘하고 싶어서 어느하나 대충하진 않았지만 마음 한켠에 있는 생각 때문에 예전의 나보다 루즈해진 것 같다. 남과 비교하지 말고, 의식하지 말고, 개인의 성장에 집중하자. |
좋은 리더가 되려면?
-
"많은 개발자는 좋은 리더에 대한 갈증을 느끼고, 실제로 좋다고 평가 받는 개발리더가 부족한것 같다. 좋은 개발 리더가 되려면 무엇을 해야 하는가"
-
리더란?
-
내가 잘하는 것이 아님. 그들이 잘하도록 도와줘야 함
-
-
진도가 잘 안나
-
구성원이 잘하도록 하는게 중
-
채용 여부가 고민되던 직원
-
부족하더라도 잘하도록 도와주고 기다려준다면 성장 가능성
-
-
리더란?
-
자신의 이익을 얻으면 남들에게 퍼주는 사람
-
선순환? 서로 성장하려는 사람들이 모임
-
-
구성원들의 모범
-
"나도 저분처럼 되고 싶다"
-
-
개발자의 가장 큰 관심은 성장
-
구성원드링 성장과 경력에 대해서 고민하고 도움을 줘야
-
소통과 인정을 위한 기술 역량
-
지속 가능성
-
개발만 잘하는 것으로 부족…
-
협업, 코칭, 커리어에도
-
다음에도 같이 일하고 싶은 사람
-
-
-
성장과 성과 사이의 밸런스
-
성장만 추구하면 오버엔지니어링이나 잘못된 결정을 할 수도
(YAGNI: You Ain’t Gonna Need It - 지금 만드는 건 나중에 필요 없을꺼야. 필요한 것을 해라)
-
개발자 동기부여 해주겠다고 운영툴을 다양한 언어로 구현한 경우도 있음..
-
코드리뷰에 잘할수있는 방법을 의견을 제시했더니, 그 과제를 완수하기보단 책을 보고 공부하고 있는…
-
지금은 동료와 같이 약속된 일정을 준수하는 것이 중요
-
-
성장과 성과 밸런스가 중요. 항상 업무와 연관지어서 성장해야지, 무관하게 책을보면서 성장하는것은 의미가 없지 않을까.
-
너무 성장만 추구해서 업무시간에 공부만 하는것은 말이 안되고, 리더는 업무에 몰입하고 성과를 내고 성장할 수 있도록 도와주는 것이 리더의 역할
-
왜 학습해야 하나?
-
소프트웨어 개발업의 속성
-
공부해야하는 것이 계속 변함
-
배운 기술이 사라지는 경우가 많음
-
지속적으로 학습이 필요함
-
-
예전에 나온 것들도 계속 진화함
-
프로그래밍 언어의 개념이 정립된 시기
-
1936 Functional
-
1966 OOP
-
1968 Structure
-
-
-
시간 vs 실력
-
나무에 앉은 새는 가지가 부러질까 두려워하지 않는다. 새는 나무가 아니라 자신의 날개를 믿기 때문이다
-
개발자도 환경을 탓하기보단 자신의 실력을 쌓는 것이 중요
-
-
-
장인정신
-
SW 개발의 80% 이상은 동작하고 나서부터 발생
-
진정한 코스트는 유지보수(80%)
-
코드 이해하는데 90%의 시간
-
코드를 읽는데 작성하는 것은 10배의 시간이 소요
-
-
학교에서는 과제를 내면 끝. 현업은 지속적인 개선, 기능 추가/변경
성장학습하는 방법
-
롤모델
-
되고싶은 개발자 찾기
-
왜 잘하는지 탐구
-
-
측정하기
-
스스로라도 나를 측정하기. 결과/이유, 측정/개선
-
개발 항목을 주기적으로 측정
-
-
공유하기
-
개인적인 학습만으로는 성장에 한계
-
상호성장이 중요
-
공유 받는 사람보단 하는 사람이 잘됨
-
-
강사의 학습 방법
-
RSS, News Letter, SNS, Youtube 강연
-
Feedly, Pocket, DEBONthink
-
-
제목만, 소개까지, 전체, 따라해보기, 책
-
근시일 내 할 일에 깊게 투자
-
-
소프트웨어 장신 정신
-
특정 기술에 대한 서적
-
업무를 위해 FW, 언어, ..
-
당장 업무에 유용하지만 가치는 오래가지 않음
-
-
특정 개념에 대한 서적
-
커리어를 진전시킬 떄 필요한 기초를 쌓는 책
-
새로운 개념, 패러다임, 실행 관례 등
-
당장 활용하기 어렵고, 제대로 이해하고 습득하는게 긴 시간이 걸림. 기술 배우는 것보다 힘듦
-
TDD, DDD, OOP, FP, NoSQL, DB모델링 등
-
-
행동 양식에 대한 서적
-
효율적으로 팀에서 일할 수 있게 안내하거나 일반적인 상황에서 더 나은 프로페셔널이 될 수 있도록 조언
-
애자일 방법론, 소프트웨어 장인정신, 린 소프트웨어 개발, 심리학, 철학, 경영 등
-
-
혁명적 서적
-
일하는 방식이나 개인의 가치관을 바꾸는 책
-
실용주의 프로그래머, The Mythical Man-Month, Design Pattern(GoF), TDD(Kent Beck), Extreme Programing, Clean Code, Software Craftmanship(피트 맥브린), Refactoring
-
-
-
어려운 기술 학습 방법
-
의도적 수련
-
일, 놀이, 수련의 구분
-
같은 코드를 정해진 시간동안 매일 리팩토링해보기
-
같은 장난감 문제 여러번 풀기
-
-
고수와 하수를 가르틑 가장 효과적인 인자는 의도적 수련의 양
-
업무만 열심히해서는 고수가 될 수 없음
-
전문성 연구에 따르면 한 분야에 세계적 수준의 고수가 되려면 10년의 수렵 필요 or 1만 시간 이상
-
1만시간 주5일 하루4시간 딱 10년
-
-
-
shadow coding
-
TDD
-
-
아는 것, 할수있는 것, 하는 것(능동적인)
-
일과 후 책 study? 부족
-
토이 프로젝트
-
study vs 학습
-
-
클린코드, 클린코더는 SW개발업의 자기계발서 같은 느낌? 소프트웨어 장인정신
취업과 동기부여
-
왜 개발자가 되었는지?
-
내가 즐겁게 일하는 것?
-
회사를 다니는 이유?
일의 종류
-
Green Field: 아무것도 없는것에서 만드는 것
-
Brown Field: 온통 레거시를 개선하는 것
-
다시 만들 때만 나아질 수 있음
-
남이 만든 것을 자신이 만들면 다르게 만드는거지 잘 만드는 것은 아니다
-
-
일정 vs 품질
-
시험: 시간이 정해져 있음(오버엔지니어링)
-
돌아가게 빠르게 만들어서 검증하고 (지속해야 한다면 빠르게 잘 만드는 것이 기술)
-
모든 경우의 수를 고려해서 철저히 설계하지 말고 (마법의 수정구가 없음)
-
Note
|
"모든 경우의 수를 고려해서 철저히 설계하지 말고"라는 말이 혼란을 준다. 빠르게 만드는 것은 잘 만드는 것이라 하고, '빠르고, 잘' 만들어야 한다 하고, … '잘' 만든다는 것이 얼마만큼의 예상 가능하고 빠르게 만드는 것인지 아직 경험이 부족한 것 같다. |
-
열정
-
재미/즐거운일
-
이직률이 높음
-
-
가치를 추구
-
의미 있는 일
-
열정이 더 높음
-
-
난관을 만났을 때
-
-
취업
-
이전 회사의 문제? 이직할 회사에서는 당장에 그 문제가 없지만 생기면?
-
스스로 성장을 못하고 있다면?
-
-
동기부여
-
외적: 처우개선, (지속가능하지 않음)
-
내적
-
짝코딩, 코드리뷰등으로 공유가 늘어가면 성장, 공유에 열정이 생김
-
스스로 잘안되면 어떻게 해야 하느냐
-
롤모델 탐구, 멘토링, 노력 vs 욕심
-
부러워만하면 그건 욕심
-
-
-
신뢰와 협업
-
신뢰
-
신뢰는 믿는 것이 아님
-
예측 가능성
-
신뢰가 쌓이면 이견/개선안을 제시할 수도
-
-
협업/커뮤니케이션
-
애자일
-
협력, 협업할 수 있는 역량
-
rnr, 나의 일? 우리회사의 일(kpi)에 좀 더 집중하기
-
-
코드리뷰
왜 코드리뷰를 해야 하나?
-
대충 안다. 왜 하는지에 대해서 설명해줬으면…
-
시장과 비지니스의 요구사항
-
시장은 VUCA(Volatile, Uncertain, Complex and Ambiguous) 환경
-
사업은 더 빨리, 혁신적으로
-
개발은 더 빠르게, 더 자주, 더 안정적으로 배포해야 함
-
CI/CD에서 문제 없었다고 안정적일 수는 없음
-
-
-
배포별 개발 리소스 증가 +
-
배포횟수의 생산성
-
배포별 라인당 개발 비용
-
배포별 생산성
-
새로운 기능을 추가해야하므로 생선성이 100%
-
시간이 지날수록 기존코드를 읽는데 시간을 소비함 *
-
시간이 흐르면 누적된 기능의 수
-
좋은설계가 아니라면 시간이 지나면 좋아지지 않고 유지된다
-
-
설계도
-
공학의 산출물 = 설계물
-
SW 설계도 = 소스코드
-
-
고칠 수 있어야 소프트웨어
-
배포 전까지 고쳐달라 한다.
-
-
SW 개발의 단순한 진리
-
- the only way to go fast, is to go well - Robert C. Martin
-
어떤 개념을 검증할때까진 빨리갈 수 있다
-
고필수 있을만큼 빨리해야 하지 않을까?
-
-
-
소프트웨어 가치
-
요구사항을 만족한다.
-
소프트해야한다.
-
-
지속가능한 SW개발
-
개발자를 위한 것이 아님. 사업을 위한 것임
-
-
소프트웨어 장인정신
-
애자일
-
장인정신
-
코드리뷰
-
코드 리뷰의 정의 / 목적 / 절차
코드리뷰는 한명 이상의 사람이 소스코드를 보면서 확인하는 소프트웨어 품질 보증 활동이다. 구현후에 할 수 있고, 구현은 인터럽시키면서 할 수 있다. 코드리뷰를 피어리뷰, 풀리퀘스트, 머지리퀘스트라고도 부른다.
-
목적
-
주목적은 품질 문제 검수(버그, 장애)
-
품질 향상
-
배우고, 지식 전파
-
공유를 통해 역량 증대 및 성장
-
참여한 모든 사람이 배움의 기회
-
-
집단 코드 오너쉽 및 결속 증대
-
내가 하는 일에 관심을 가져주는 것
-
팀웍
-
-
개발 문화 개선
-
설계 개선 제안
-
-
절차
-
저자: 코드 작성/리뷰요청
-
리뷰어: 코드 읽고, 머지 가능한지 결정
-
변경 리스트(코드리뷰): 리뷰시작 전에 작성, 저자가 코드에 대한 일련의 변경에 대해 기술
-
왜 코드리뷰가 어려운가?
-
저자는 본인이 생각에 멋지다고 생각하는 PR
-
리뷰어는 왜 멋지지 않은지에 대해 작성
-
"자신의 기술을 지나지게 과대평가한 조종사들은 모두 죽었다."
-
코드에 대한 비판을 자신에 대한 비판으로 이해
-
코드리뷰는
-
지식/공학적 결정을 공유하는 기회
-
공유를 통해 서로의 지식/경험을 나누며..
-
개인적 공격으로 받아들이면 물거품
-
-
생각을 글로 전달하느 것이 어려움
-
피드백을 조심히 표현
기법들
-
리뷰어에 모두를 포함하라
Note
|
-
효율적 리뷰 방법
-
리뷰는 즉시 시작
-
코드리뷰를 높은 우선 순위로
-
리뷰를 바로 시작하면 선순환됨
-
리뷰 라운드의 최대 시간은 하루
-
PR의 사이즈와 복잡도가 중요
-
PR 사이즈
-
-
고수준으로 시작, 저수준으로 내려가라
-
예제코드 제공에 관대해라
-
리뷰의 범위를 존중하라
-
태그 활용
-
'Nit'
-
-