News/Frontend

[인프콘2023을 다녀와서] 주니어의 성장과 고민에 대한 세션 (by. 김영한님)

남남이루 2024. 3. 17. 19:23

2023 인프콘을 다녀오고 정리했던 내용을 공유합니다.
김영한님 세션에서는 주니어로서 성장의 방향성을 갈피를 잡는 데 도움이 되었어요.
여러 시니어 분들과 대화하며 반복적으로 나오는 메시지는, "(기술의) 이유를 아는 것" "(첫 개발은) 단순하게 반복하는 것"이네요.
키워드 : #질문이_있습니다 #비즈니스를_이해하는_개발자 #거북이_마음

주니어의 성장과 고민에 대한 세션

by. 김영한님

김영한님의 커리어 이야기

  • Mabatis VS JPAJPA가 훨씬 코드 중복이 줄어드는데, 왜 안쓸까?라는 생각을 하게 됨 (기술 변화의 시점)⇒ 직접 사내에서 교육을 하면서 기술을 도입하게 됨
    ⇒ 국내 개발 환경을 바꾸기 위해 JPA 책까지 쓰게 되었고 현재는 JPA가 95%를 차지함
    ⇒ 교육에 문제가 있다는 생각을 했다.
  • 시장 상황 : Mabatis가 점령 중이었고, 해외에서만 JPA를 사용하고 있었음
  • 백엔드 개발자 핵심 기술 : 자바, DB, .. 기초를 확실하게 깊이있게 공부해야 한다.
  • 열심히는 하는데, 실무랑 거리가 멀거나 쉬운 것만 하는 경우가 많다.
  • 4년 동안 강의를 만들구, 2년 만에 1타강사 되어버림
  • 업계 전반의 수준이 올라갔음을 느꼈다, 뿌듯했다
💡 직접 시장의 변화를 주도했다는 게 느껴져서 인상깊었다.
  어떤 기술이 흥할 지, 어떤 기술이 잠재력 있는 지 알려면 새로운 기술에 대한 꾸준한 관심이 선행되어야 겠구나.
 + 혼자 알고 끝나는 게 아니라, 주변을 함께 성장시키면 시장을 변화시키는 거대한 힘이 되기도 하는 구나.

 


성장 기본기 - 기술과 비즈니스에 대해

  • 기술 50, 비즈니스 50 비중

회사 기술을 공부해야 하는지 뭘해야하는지

  • 기술 공부를 하지 않는 개발자
    • 팀에서 동작하는 코드를 보고 비슷하게 짜는 사람
    • 1년차 경험을 10년 동안 반복하는 시니어…? 반복만 하다가 끝남
    • 팀에서 새로운 기술을 도입할 때 주저함 (기술적 자신감이 없음, 깊이가 없기 때문)
  • 기술 트렌드 찍먹 개발자
    • 기술 공부를 하기는 하는데
    • 팀에서 사용하는 기술도 제대로 이해하지 못한 상태
    • 새로운 기술을 도입하자고 한다면, 사람에 대한 신뢰가 없기 때문에 쉽지 않음
    • 기술의 깊이가 만들어지기 어렵다
  • 팀 기술을 잘 이해하는 개발자
    • 팀에서 사용하는 기술 역량을 잘 쌓아둔다
    • 기술을 잘 이해해서 업무를 원활하게 진행
    • (기술적 자신감이 있어야 일을 잘 하게 됨!)
    • 신뢰와 기술 포인트를 둘 다 높여감
  • 팀 기술 학습의 장점
    • 동기부여 : 사람은 당장 본인이 필요한 것을 더 빠르게 학습할 수 있다
    • 학습 사이클 : 단순 학습을 넘어서 적용을 해봐야 진짜 지식으로 체득하게 됨.
    • 이론과 실습의 완벽한 조화
💡 빠르게 성장하는 주니어의 특징은 위 사이클을 잘 갖추고 있다
  • 추천하는 학습 순서 (우선순위)
    • 팀기술 → 업계 메인 기술 → 주변 트렌드

기술을 학습한다는 것

  • 기술을 업무에 사용할 줄 안다고 그 기술을 잘 아는 것은 아니다.
  • 기술의 기본원리를 이해하고 깊이 있게 학습하는 것이 중요하다.
  • 기술이 필요한 이유를 확실하게 이해하고 있는지를 점검해야 한다.

경기와 훈련

  • 운동선수가 평소에 훈련하지 않는다면?
  • 개발자도 꾸준한 훈련의 시간이 필요하다
  • 경기 = 회사 업무, 훈련 = 회사 외 공부
  • 회사 업무 외에 본인이 스스로 학습하고 훈련하는 시간을 가져야 한다.

 

비즈니스 이해

💡 아라운이 원온원 때 해주신 말이 생각이 났다,
    비즈니스에 대한 이해가 왜 중요하고, 어떻게 비즈니스 이해를 빨리 높일 수 있는지를 설명한다.

주니어 시절에 했던 가장 큰 실수 - 당시 맡았던 프로젝트가 있었는데, 자꾸만 한 퍼즐로 느껴짐

  • 기술에만 매몰되지 말고 전체 그림을 이해하는 데 투자를 해야함
    • 비즈니스를 이해한다는 것은 우리가 왜 코드를 작성하는가를 이해하는 것,
      = 내 월급은 어디에서 나오는 가를 이해하는 것
  • 비즈니스 = 개발의 원천 소스, 자원의 중심
  • 원천 소스를 이해해야 한다. 비즈니스와 개발이 어떻게 연결되어 있는지 이해하는 큰 지도를 그리는 것.
    개발은 밑바닥부터 설계할 일 보다 기존의 내용을 이해하고 변경해야 하는 일이 대부분이다.

비즈니스를 이해하는 방법

  1. 인터뷰 - 비즈니스에 대해서 듣고 이해해라, 기획자, 팀장, 문서 등등
  2. 어드민의 기능 하나하나 다 사용하기 + 사용자의 기능 사용해보기
  3. 어드민은 사용자 관리툴, 유저 플로우, 운영팀에서 쓰는 툴이기 때문에 다 써봐야 한다. 기능 다 써보면 연결해볼 수 있음. 하루 이틀이면 가능하다. 그렇지 않으면, 전체 그림을 그릴 수 없게 된다.

비즈니스 구현 이해

  1. 데이터 : 핵심 테이블 (엔티티), 핵심 필드 정리
    1. 테이블 엔티티. 1:N, N:M 관계 정의
    2. 핵심 업무 프로세스 정리
    3. 직접 정리를 해봐라
      데이터와 프로세스를 합쳐서 전체 흐름도를 직접 그리고 나면, 큰 지도를 만들어 둘 수 있음

비즈니스 이해가 약한 개발자 VS 비즈니스 이해가 강한 개발자

⇒ 혁신을 할 수 있는 사람으로 성장하게 된다.

좋은 시스템을 설계하려면?

  • 개발을 잘 하기 위해서는 비즈니스 이해가 필수
  • 비즈니스를 이해해야 좋은 아키텍처 설계 가능
  • 애플리케이션 아키텍처의 선택은 변경 가능성의 영향이 큼
  • 그런데 이게 변할지 한 별할지 선택이 필요할 때 by 비즈니스 이해를 바탕으로 할 수 있다

즉, 비즈니스를 알아야 변경 가능성에 대해 점쳐볼 수 있고 이걸 반영해서 설계할 수 있다는 것


그 외 주니어를 위한 조언

+ 약간의 용기

  • 지금까지 하던 업무 외로 도전적으로 업무를 받아올 때 잘 큰다

왜!가 중요하다

  • 근본에 대한 답을 알아야 올바른 대안을 찾을 수 있다. 항상. 그냥은 없다.
  • 이 일은 왜 하는지.
  • 왜가 왜 중요한가
    • 동기부여
    • 기술 역량 성장
    • 제대로 된 비즈니스 이해
    • 제대로 된 기술 검증
    • 질문과 고민이 없으면 제대로된 성장도 없다

지금까지 너무 개발을 바로 시작했다는 반성이 들었다.
개발에 뛰어들 때, 해당 서비스와 비즈니스에 대한 이해도 소홀히 하면 안 된다는 것을 배웠다

주니어가 질문을 하기 위한 - 마법의 말

“ 고민이 있습니다 ”

공격성 없이, 왜(why)인지 물어볼 수 있다.

배경에 대한 컨텍스트가 없어도, 질문을 시작하기 좋은 말이다.

끊임없이 고민하고 항상 왜라는 근본 질문을 해라

성장하기 좋은 환경은 뭘까?

  1. 좋은 환경 : 일하기 좋은 환경으로 계속 바꿔나갈 수 있는 조직, 당장 좋은 것과 상관없이 앞으로 바꿔나갈 수 있는 곳인 곳. 내가 고민하고 있을 때 응원해주고 지지해주는 회사가 좋은 회사개발 구조, 최적화, 아키텍처는어설픈 최적화하지말고… 개발 생산성 저하를 조심할 것!!
    최적화하지 말고 일단 오픈하고 필요할 때 적용해 나가는 거
    ⇒ 고민은 하되, 일단은 최대한 단순하게 시작하자
  2. 항상. 최대한. 단순한 것을 선택한다. 최대한 많이 해보는 것이 중요하다.
    추상화와 구체화를 왔다갔다하게 될 것.
    본문을 써봐야 목차를 쓸 수 있고, 목차를 쓰다가 또 본문을 써내려갈 수 있게 됨
  3. 생각과 고민이 너무 많은 개발자,

저의 포스팅에 루트가 주신 코멘트 🤩

조급한 마음 VS 거북이 마음

멀티태스킹 : 인간의 CPU는 하나, 컨텍스트 스위칭 비용은 매우매우매우 크다.
따라서 거북이 마음이 필요하다, 거북이 마음으로 한번에 하나씩 처리하는 것이다.

속도 ≠ 깊이

하나씩 뽀개면서 가야 성장하는 느낌이 든다.
해야할 게 너무 많을 때 주욱 적고 우선순위 재정의하고 거북이처럼 **하나씩** 쪼개보자!