어느 날 고민 많은 주니어 개발자가 찾아왔다 2탄: 주니어 시절 성장과 고민들 | 인프콘2023
ref : https://www.youtube.com/watch?v=cePPOjCU7f4
영한님의 누적 수강생 수
 
 
  
- J커브를 그린다.
- 근데 그 곡선이 4년이 걸린다.
- 정말 꾸준하게 해야 한다.
- 2년만에 개발 분야 전체 수강생 1위
영한님의 장점
- 기획자도 이해할 수 있을정도로 쉽게 이해 한다.
- 대부분 주니어 개발자들은 영한님 강의를 듣고 공부한다.
- 주니어 개발자 교육이 걱정인데, 그냥 영한님 강의를 추천한다.
- 업계 전반의 수준이 올라간다.
엔지니어의 성장은 크게 2가지
1.기술 2.비즈니스
기술적 성장 싸이클
팀 기술 학습의 장점
- 1.책이나 youtube를 보고 학습을 하고 
- 2.토이 프로젝트를 만들어 보고 
- 3.업계에 적용을 해본다. 
- 이론과 실습의 완벽한 조화 
- 잘 성장하는 주니어는 이 싸이클을 잘 활용 한다. 
- 팀 기술 > 업계 메인 기술 > 주변, 최신 기술로 확장 하자. 
기술적 성장 관점에서 3가지 개발자 Leveling
1.기술 공부를 안하는 개발자.
- 팀의 동작하는 코드를 보고 따라하는 개발자.
- 팀에서 새로운 기술 도입을 꺼려한다.
- 1년차 경험을 10번 반복하는 10년차가 정말 있다.
 2.기술 트렌드 찍먹 개발자.
- 팀에서 사용하는 기술도 제대로 이해하지 못한 상태
- 새로운 기술만 급급해서 도입한다. 기술의 깊이가 만들어지기 어렵다.
 3.팀 기술을 잘 이해하는 개발자.
- 팀에서 사용하는 기술 역량을 잘 쌓아둔다.
- 팀에서 신뢰와 기술 포인트를 쌓게 된다.
- 팀에서 점점 중요한 업무를 맡게 된다.
- 결과적으로 평가와 연봉에 반영
비즈니스 이해
주니어 시절에 비즈니스의 중요도를 잘 이해하지 못하는 경우가 많다.
- 퍼즐의 한 조각으로 일하는 느낌이 있었다.
- 무조건 비즈니스 먼저 이해하고 정리했다. 그게 성장하는데 엄청 많은 도움이 되었다.
- 기술을 학습하는데 시간을 들이는 만큼, 비즈니스도 투자를 많이 해야 한다.
개발자가 비즈니스를 이해한다는 것은 뭔가 ?
- 비즈니스와 개발이 어떻게 연결되어 있는지 이해하는 큰 지도를 그리는 것
- 95%는 기존의 시스템에 온보딩 한다.
큰 지도 만들기
1.비즈니스 이해
1.1 비즈니스에 대해 듣고 알아야 한다.  
- 기획자랑 많이 친해져서 반드시 알아야 한다.
- 팀장님한테 계속 물어 봐야 한다.
- 문서를 다 살펴야 한다.
1.2 팀에서 만든 모든 피처를 사용해보기
- 어드민 기능 하나하나 다 사용하기 
- 사용자의 기능 다 사용 해보기 
- 그래서 큰 그림을 그릴 수 있어야 한다. 
- *실수하는 것 : 내가 업무를 맡으면 그제서야 관련된 기능들을 사용해 본다. 
- 그러면 퍼즐조각처럼 취급되는 것 
2.비즈니스 구현 이해
2.1 데이터 : 핵심 테이블(엔티티)를 확실하게 이해 해야 한다.
- 핵심 필드 정리해야 한다.
 2.2 핵심 업무 프로세스 정리하기
- 사람이 하는 업무 프로세스 정리하기
- 컴퓨터 로직이 하는 업무 프로세스 정리하기
비즈니스 관점에서 개발자 Leveling
1.비즈니스 이해가 약한 개발자
- 큰 그림에서 전체 상황을 이해하지 못함 
- 지도가 없으므로 어디까지 질문해야 할지를 잘 모름 
- 작업의 영향 범위가 어디까지 영향을 미치는지 파악이 어려움 
- 요구사항을 제대로 처리하지 못함 
- 중요한 메인 업무가 있을 때, 영향 범위를 잘 모르기 떄문에 실패할 가능성이 높음. 
- 더 큰 업무를 맡기기는 어려움 (팀의 서브 업무) 
- 안타깝게도 개발을 잘 해도, 일을 못하는 경우가 있다. 
- 배민에 처음 합류했을 때, 백단의 수백개의 로직을 모르고 그냥 갈아치우자 라고 말했다. 
2.비즈니스를 잘 이해한 개발자
- 지도가 있으므로 어디까지 질문해야 할지를 잘 이해
- 시간이 지날수록 전체 그림에 살을 붙여서 비즈니스와 아키텍처에 대한 이해도가 높아진다.
- 큰 변경사항이 있어도 영향 범위가 어디까지 미치는지 이해
- 큰 그림으로 전체 상황을 이해하기 때문에 영향도 이해, 아키텍처 변경도 가능
- 조직에서도 더 큰 업무를 맡김 (팀의 메인 업무)
- 도전적인 업무 가능
좋은 시스템을 설계하라면?
- 개발을 잘 하기 위해서는 비즈니스 이해가 필수
- 비즈니스를 이해해야 좋은 아키텍처 설계 가능  - 아키텍처 설계는 트레이드 오프
 
- 애플리케이션 아키텍처의 선택은 변경 가능성의 영향이 큼
성장 부스팅 - 용기, WHY
약간의 용기 필요
비즈니스를 이해하는데는 3~6개월이 필요하다.
- 중요한 일을 조금씩 해 나가야 한다.
- 약간의 용기가 필요하다.
- 과감하게 업무를 본인이 조금
WHY
- 비즈니스 기반의 이해 + 기술적 이해도 필요 
- 근본적인 이유를 알아야 본질적인 답을 찾을 수 있다. 
- 기술이든 비즈니스든, 근본적인 이유를 알아야 올바른 대안 찾을 수 있다. 
- 그냥 해야 하는 것은 없다. 위에서 시켜한다 라는 것은 제일 안좋은 예다. 
*나에게 주는 가치들
- 동기부여 : 어떠한 비즈니스적 가치를 만들지 기대를 해야 한다.
- 기술적 역량 성장 : 왜 기술을 도입하고, 왜 코드를 이렇게 짜야 하지 ? 질문 많이 하기
- 제대로 된 비즈니스 이해
- 제대로 된 기술 검증
커뮤니케이션 주의
- 공격 어투 조심 
- 기획자에게 
- 개발자에게 
- 기가막힌 마법의 단어 : '고민이 있습니다.', - 존중하는 사람한테 할 수 있는 말.
- '질문이 있습니다.', '궁금한게 있습니다.'
 
내가 리더라면 ?
- 리더는 100번 질문해도 100번 대답할 준비가 되어 있어야 한다.
- 왜 이 일을 해야 하는지 잘 풀어서 설명 해야 한다. ( 전후관계까지 설명 )
- 팀장만 리더가 아니다. 모두가 리더다.
- 기술,비즈니스 모두
성장과 환경
좋은 환경
- 지금 좋다기 보다는 일하기 좋은 방향으로 바꾸어 나가려고 노력하는 조직
- 내가 고민하고 생각하는 것들을 응원해주는 조직
안 좋은 환경
- 구지 바꿔야 하는 거야 ?, 엔지니어들에게 프로세스를 강조하고 도전하지 않게 만드는 조직
고민을 많이 해서 개발 속도가 안나는 사람
개발 구조
- 항상 최대한 단순한 방법을 선택해서 실행하기 
- 뭔가 만들어야 개선점이 보인다. 
- 구체화와 추상화를 어려번 하면 답이 나온다. 
- 죽어도 목차가 안나온다. - 구체적으로 글을 쓰고 나니까, 목차가 나오더라...
- 그래서 차라리 구체화,추상화 싸이클을 타라.
 
최적화
- 어설픈 최적화가, 오버엔지니어링으로 확장이 굉장히 어렵다.
아키텍처
- 아키텍처도 단순하게 시작해야 한다.
- 우선은 간단하게 ~
조급한 마음 거북이 마음 (원씽)
- 인간은 컨텍스트 스위칭 비용이 굉장히 크다.
- 번잡하게 하다보면 이도저도 안된다.
- 한번에 하나씩 처리하자.
- 차라리 거북이처럼 하나씩 제대로 1개 CPU로 전진하자.