2023 인프콘을 다녀오고 정리했던 내용을 공유합니다.
김영한님 세션에서는 주니어로서 성장의 방향성을 갈피를 잡는 데 도움이 되었어요.
여러 시니어 분들과 대화하며 반복적으로 나오는 메시지는, "(기술의) 이유를 아는 것"과 "(첫 개발은) 단순하게 반복하는 것"이네요.
키워드 : #질문이_있습니다 #비즈니스를_이해하는_개발자 #거북이_마음
주니어의 성장과 고민에 대한 세션
by. 김영한님
김영한님의 커리어 이야기
- Mabatis VS JPAJPA가 훨씬 코드 중복이 줄어드는데, 왜 안쓸까?라는 생각을 하게 됨 (기술 변화의 시점)⇒ 직접 사내에서 교육을 하면서 기술을 도입하게 됨
⇒ 국내 개발 환경을 바꾸기 위해 JPA 책까지 쓰게 되었고 현재는 JPA가 95%를 차지함
⇒ 교육에 문제가 있다는 생각을 했다. - 시장 상황 : Mabatis가 점령 중이었고, 해외에서만 JPA를 사용하고 있었음
- 백엔드 개발자 핵심 기술 : 자바, DB, .. 기초를 확실하게 깊이있게 공부해야 한다.
- 열심히는 하는데, 실무랑 거리가 멀거나 쉬운 것만 하는 경우가 많다.
- 4년 동안 강의를 만들구, 2년 만에 1타강사 되어버림
- 업계 전반의 수준이 올라갔음을 느꼈다, 뿌듯했다
💡 직접 시장의 변화를 주도했다는 게 느껴져서 인상깊었다.
어떤 기술이 흥할 지, 어떤 기술이 잠재력 있는 지 알려면 새로운 기술에 대한 꾸준한 관심이 선행되어야 겠구나.
+ 혼자 알고 끝나는 게 아니라, 주변을 함께 성장시키면 시장을 변화시키는 거대한 힘이 되기도 하는 구나.
성장 기본기 - 기술과 비즈니스에 대해
- 기술 50, 비즈니스 50 비중
회사 기술을 공부해야 하는지 뭘해야하는지
- 기술 공부를 하지 않는 개발자
- 팀에서 동작하는 코드를 보고 비슷하게 짜는 사람
- 1년차 경험을 10년 동안 반복하는 시니어…? 반복만 하다가 끝남
- 팀에서 새로운 기술을 도입할 때 주저함 (기술적 자신감이 없음, 깊이가 없기 때문)
- 기술 트렌드 찍먹 개발자
- 기술 공부를 하기는 하는데
- 팀에서 사용하는 기술도 제대로 이해하지 못한 상태
- 새로운 기술을 도입하자고 한다면, 사람에 대한 신뢰가 없기 때문에 쉽지 않음
- 기술의 깊이가 만들어지기 어렵다
- 팀 기술을 잘 이해하는 개발자
- 팀에서 사용하는 기술 역량을 잘 쌓아둔다
- 기술을 잘 이해해서 업무를 원활하게 진행
- (기술적 자신감이 있어야 일을 잘 하게 됨!)
- 신뢰와 기술 포인트를 둘 다 높여감
- 팀 기술 학습의 장점
- 동기부여 : 사람은 당장 본인이 필요한 것을 더 빠르게 학습할 수 있다
- 학습 사이클 : 단순 학습을 넘어서 적용을 해봐야 진짜 지식으로 체득하게 됨.
- 이론과 실습의 완벽한 조화
💡 빠르게 성장하는 주니어의 특징은 위 사이클을 잘 갖추고 있다
- 추천하는 학습 순서 (우선순위)
- 팀기술 → 업계 메인 기술 → 주변 트렌드
기술을 학습한다는 것
- 기술을 업무에 사용할 줄 안다고 그 기술을 잘 아는 것은 아니다.
- 기술의 기본원리를 이해하고 깊이 있게 학습하는 것이 중요하다.
- 기술이 필요한 이유를 확실하게 이해하고 있는지를 점검해야 한다.
경기와 훈련
- 운동선수가 평소에 훈련하지 않는다면?
- 개발자도 꾸준한 훈련의 시간이 필요하다
- 경기 = 회사 업무, 훈련 = 회사 외 공부
- 회사 업무 외에 본인이 스스로 학습하고 훈련하는 시간을 가져야 한다.
비즈니스 이해
💡 아라운이 원온원 때 해주신 말이 생각이 났다,
비즈니스에 대한 이해가 왜 중요하고, 어떻게 비즈니스 이해를 빨리 높일 수 있는지를 설명한다.
주니어 시절에 했던 가장 큰 실수 - 당시 맡았던 프로젝트가 있었는데, 자꾸만 한 퍼즐로 느껴짐
- 기술에만 매몰되지 말고 전체 그림을 이해하는 데 투자를 해야함
- 비즈니스를 이해한다는 것은 우리가 왜 코드를 작성하는가를 이해하는 것,
= 내 월급은 어디에서 나오는 가를 이해하는 것
- 비즈니스를 이해한다는 것은 우리가 왜 코드를 작성하는가를 이해하는 것,
- 비즈니스 = 개발의 원천 소스, 자원의 중심
- 원천 소스를 이해해야 한다. 비즈니스와 개발이 어떻게 연결되어 있는지 이해하는 큰 지도를 그리는 것.
개발은 밑바닥부터 설계할 일 보다 기존의 내용을 이해하고 변경해야 하는 일이 대부분이다.
비즈니스를 이해하는 방법
- 인터뷰 - 비즈니스에 대해서 듣고 이해해라, 기획자, 팀장, 문서 등등
- 어드민의 기능 하나하나 다 사용하기 + 사용자의 기능 사용해보기
- 어드민은 사용자 관리툴, 유저 플로우, 운영팀에서 쓰는 툴이기 때문에 다 써봐야 한다. 기능 다 써보면 연결해볼 수 있음. 하루 이틀이면 가능하다. 그렇지 않으면, 전체 그림을 그릴 수 없게 된다.
비즈니스 구현 이해
- 데이터 : 핵심 테이블 (엔티티), 핵심 필드 정리
- 테이블 엔티티. 1:N, N:M 관계 정의
- 핵심 업무 프로세스 정리
- 직접 정리를 해봐라
데이터와 프로세스를 합쳐서 전체 흐름도를 직접 그리고 나면, 큰 지도를 만들어 둘 수 있음
비즈니스 이해가 약한 개발자 VS 비즈니스 이해가 강한 개발자
⇒ 혁신을 할 수 있는 사람으로 성장하게 된다.
좋은 시스템을 설계하려면?
- 개발을 잘 하기 위해서는 비즈니스 이해가 필수
- 비즈니스를 이해해야 좋은 아키텍처 설계 가능
- 애플리케이션 아키텍처의 선택은 변경 가능성의 영향이 큼
- 그런데 이게 변할지 한 별할지 선택이 필요할 때 by 비즈니스 이해를 바탕으로 할 수 있다
즉, 비즈니스를 알아야 변경 가능성에 대해 점쳐볼 수 있고 이걸 반영해서 설계할 수 있다는 것
그 외 주니어를 위한 조언
+ 약간의 용기
- 지금까지 하던 업무 외로 도전적으로 업무를 받아올 때 잘 큰다
왜!가 중요하다
- 근본에 대한 답을 알아야 올바른 대안을 찾을 수 있다. 항상. 그냥은 없다.
- 이 일은 왜 하는지.
- 왜가 왜 중요한가
- 동기부여
- 기술 역량 성장
- 제대로 된 비즈니스 이해
- 제대로 된 기술 검증
- 질문과 고민이 없으면 제대로된 성장도 없다
지금까지 너무 개발을 바로 시작했다는 반성이 들었다.
개발에 뛰어들 때, 해당 서비스와 비즈니스에 대한 이해도 소홀히 하면 안 된다는 것을 배웠다
주니어가 질문을 하기 위한 - 마법의 말
“ 고민이 있습니다 ”
공격성 없이, 왜(why)인지 물어볼 수 있다.
배경에 대한 컨텍스트가 없어도, 질문을 시작하기 좋은 말이다.
끊임없이 고민하고 항상 왜라는 근본 질문을 해라
성장하기 좋은 환경은 뭘까?
- 좋은 환경 : 일하기 좋은 환경으로 계속 바꿔나갈 수 있는 조직, 당장 좋은 것과 상관없이 앞으로 바꿔나갈 수 있는 곳인 곳. 내가 고민하고 있을 때 응원해주고 지지해주는 회사가 좋은 회사개발 구조, 최적화, 아키텍처는어설픈 최적화하지말고… 개발 생산성 저하를 조심할 것!!
최적화하지 말고 일단 오픈하고 필요할 때 적용해 나가는 거
⇒ 고민은 하되, 일단은 최대한 단순하게 시작하자 - 항상. 최대한. 단순한 것을 선택한다. 최대한 많이 해보는 것이 중요하다.
추상화와 구체화를 왔다갔다하게 될 것.
본문을 써봐야 목차를 쓸 수 있고, 목차를 쓰다가 또 본문을 써내려갈 수 있게 됨 - 생각과 고민이 너무 많은 개발자,
조급한 마음 VS 거북이 마음
멀티태스킹 : 인간의 CPU는 하나, 컨텍스트 스위칭 비용은 매우매우매우 크다.
따라서 거북이 마음이 필요하다, 거북이 마음으로 한번에 하나씩 처리하는 것이다.
속도 ≠ 깊이
하나씩 뽀개면서 가야 성장하는 느낌이 든다.
해야할 게 너무 많을 때 주욱 적고 우선순위 재정의하고 거북이처럼 **하나씩** 쪼개보자!
'News > Frontend' 카테고리의 다른 글
[TypeScript, TkDodo의 블로그 번역] 타입스크립트의 배열 타입 선언, 현명하게 선택하기 (제너릭 VS 배열) (0) | 2023.08.26 |
---|---|
[Naver-FE-News | 2023-06] React 디자인패턴, CSS Optimization, useHooks 모음 (0) | 2023.06.07 |
[ECMA 2023 살펴보기] toSorted, findLast (w/ mutation) (2) | 2023.05.21 |
[Naver-FE-News | 2023-05] 한글 자동완성을 위한 정규식, ECMA 명세 (0) | 2023.05.15 |