본문 바로가기
세미나 관련

[인프콘 2023] 주니어 시절 성장과 고민들

by 딱구킴 2023. 8. 19.

주니어 시절 성장과 고민들

영한쌤 이야기

  • JPA
    • JPA를 사용하지 않는 이유 중에, 교육의 문제가 있다는 문제를 파악함
    • 더 나은 환경에서 일을 하는 방법을 고민 → JPA 저서 출판
  • 기본기
  • 기술 학습의 어려움
  • 실무에 꼭 필요한 내용이 있음
    • 어려운 내용을 쉽고 단순하게 만들어서 설명
  • 가치
    • 삶의 가치를 고민
    • 나만의 성장 vs 업계 모두의 성장
    • 다음 세대의 개발자를 성장시키는 것을 선택
    • 많은 강의를 준비하신다… 설렌당..

성장 기본기 - 기술, 비즈니스

  • 기술

    • 성장을 위해 어떤 기술을 배워야 하는가?
      • 현재 팀에서 사용하는 기술
      • 최신 유행 기술
    • 3종류의 개발자
      • 기술 공부를 안하는 개발자 → 기술을 이해하고 사용하는게 아님
        • 기술적인 근본 원인을 파악하기 어려움
        • 깊은 이해 없이 업무 반복
        • 새로운 기술을 도입할 때 주저함
        • 1년차 경험을 10번 반복하는 10년차가 되기 쉬움 (비슷한 업무의 반복)
      • 기술 트렌드 찍먹 개발자
        • 기술 공부를 하긴 하는데, 팀에서 사용하는 기술도 제대로 이해하지 못한 상태
        • 새로운 기술을 도입하자고 한다면?
        • 기술의 깊이가 만들어지기가 어렵다.
      • 팀 기술을 잘 이해하는 개발자
        • 팀에서 사용하는 기술 역량을 잘 쌓아둠
        • 기술 이해 → 팀 업무 진행 수월
        • 팀에 기술 문제가 발생했을 때 원인을 정확히 파악하여 해결
        • 신뢰와 기술 포인트
        • 팀에서 점점 중요한 업무를 맡을 수 있게됨
    • 팀 기술 학습
      • 동기부여 → 본인에게 필요한 것을 빠르게 학습
      • 학습 사이클
        • 학습 → 업무에 학습 내용을 활용 → 활용하면서 고민되는 부분을 학습
        • 이론과 실습의 완벽한 조화 가능
      • 잘하는 주니어 엔지니어는 학습 사이클을 잘 만들어낸다.
    • 결론
      • 팀 기술 학습 → 업계 메인 기술 → 주변, 최신 기술 순서로 학습하자.
    • 기술을 학습한다는 것
      • 사용할 줄 안다고 그 기술을 잘 아는게 아니다.
      • 기술의 기본 원리를 이해하고 깊이있게 학습하자
      • 그 기술이 왜 필요한지를 이해하자
      • 해당 기술을 사용해서 밑바닥부터 스스로 완성할 줄 알아야한다
    • 경기와 훈련
      • 개발자도 운동선수 처럼 꾸준한 훈련의 시간이 필요하다
        • 경기 == 회사 업무
        • 훈련 == 업무 외 학습의 시간
  • 비즈니스 이해

    • 기술 50, 비즈니스 50 정도로 중요하다.
    • 퍼즐의 조각으로써 일을 하지 말자. 전체적인 그림을 그릴 줄 알아야 한다.
      • 비즈니스를 이해하고 정리하도록 노력하자
    • 우리가 왜 코드를 작성하는가?
      • 비즈니스를 하기 위함이다.
      • 내 월급이 나오는 부분이다.
    • 개발자가 비즈니스를 이해한다는 것은 ?
      • 비즈니스와 개발이 어떻게 연결이 되어있는지 이해하는 큰 지도를 그리는 것이다.
      • 비즈니스가 변경되면 어느 부분을 봐야하는 지 알 수 있게 된다.
    • 비즈니스 이해
      • 비즈니스에 대해서 듣고 이해하자. → 기획자, 팀장, 문서 등등을 이용
      • 어드민의 기능 전부 사용해보기
      • 사용자의 기능 전부 사용해보기
    • 비즈니스 구현 이해
      • 데이터: 핵심 테이블(엔티티), 핵심 필드 정리
        • 테이블을 확실하게 이해하자. 에너지를 부어라.
        • ex: 주문 상태 필드 등을 정리
      • 핵심 업무 프로세스 정리
  • 비즈니스 이해가 약한 개발자

    • 큰 그림에서 전체 상황을 이해하지 못함
    • 어디까지 질문해야 할지를 모름
    • 요구사항을 제대로 처리하지 못한다
  • 작업 영향 범위가 어디까지 영향을 미치나

    • 중요 메인 업무가 있을 때, 영향 범위를 잘 알아야 한다.
    • 영향 범위를 알아야 개선을 할 수 있다.
    • 점진적인 아키텍처 변경 가능
    • 도전적인 업무 가능
  • 좋은 시스템을 설계하려면?

    • 개발을 잘 하기 위해서는 비즈니스 이해가 필수
    • 비즈니스를 이해해야 좋은 아키텍처를 설계할 수 있다
      • 아키텍처 설계는 trade-off이다.
    • 애플리케이션 아키텍처의 선택은 **변경 가능성의 영향이 크다.**
    • 변할지 안 변할지에 대한 선택이 필요한데...
      • 이는 비즈니스에 대한 이해가 있어야만이 가능하다.
    • 중요도와 변경 가능성은 비즈니스에 대한 이해가 있어야만한다.
      • 변하지도 않을 곳에 과도한 추상화를 하게 되어버림
      • 모호함이 너무 증가 해버린다. (추상화는 비용)

성장 부스팅 - 용기, why

  • 약간의 용기
    • 중요한 일을 도전하는 것이 필요하다.
    • 과감하게 업무를 가져가는 자세
  • 컴포트존에서 벗어나 자신의 영역을 확장 해나가야 한다.
    • 완전히 다른 업무에 대한 도전
  • 기술 역량 필요
  • 왜?
    • 왜?는 가장 중요하다
    • 근본적인 이유를 알아야 본질적인 답을 찾을 수 있다.
    • 기술, 비즈니스 모두 근본적인 이유를 알아야 올바른 대안을 찾을 수 있다.
      • 이 기술을 왜 사용해야 하지?
      • 기술적으로 왜 이렇게 해야하지?
      • 왜 코드를 이렇게 짜야하지?
      • 더 나은 방법은 없을까?
      • 이 기능을 왜 만들어야 하지?
    • 비교를 해보고, 트레이드오프도 알게되고, 자신만의 기준을 만들어 가야..
    • 질문과 고민이 있어야 성장
  • 왜?가 중요한 이유
    • 동기부여
    • 기술 역량 성장
    • 제대로 된 비즈니스에 대한 이해
    • 제대로 된 기술 검증
  • 왜? 커뮤니케이션
    • 공격 조심ㅋㅋ
    • 기획자에게
      • 이거 왜이렇게 해야 돼요? 보다는…..
        • 뉘앙스가 중요하다.
        • 위와 같이 말하면 당연히 방어적이 된다.
    • 개발자에게
      • 코드리뷰
      • 코드를 왜 이렇게 짰어요?
        • 듣는 사람 입장에서 뉘앙스가 중요…
    • 마법의 단어!!
      • “고민이 있습니다.”
        • 존중하지 않는 사람에게 절대 하지 않을 말
  • 내가 리더라면?
    • 100번 질문해도 100분 대답할 준비가 돼있어야 한다.
    • 이 일을 “왜 해야하는지” 잘 풀어서 설명
    • 팀장만 리더가 아니라 모두가 리더다.
    • 기술, 비즈니스 모두 설명을 잘해야 한다.

끊임없이 고민하고, 항상 왜?라는 근본적인 질문을 하자.

주니어 시절의 고민

  • 내가 성장하기 좋은 환경

    • 좋은 환경
      • 지금 당장 좋다기 보다는, 일하기 좋은 방향으로 바꾸어 나가려고 노력하는 조직
      • 도전하고 고민할 때 응원해주는 조직이 아주 좋은 조직
    • 안 좋은 환경
      • 변화를 하지 않는 조직은 좋지 않은 조직
  • 생각과 고민이 너무 많은 개발자

    • 생각과 고민을 하는 것은 굉장히 좋다.
    • 개발 속도가 안난다..?
      • 개발 구조
      • 최적화
        • 최적화는 조심해야 한다.
        • 어설픈 최적화는 개발 유지보수 비용을 폭발적으로 증가시킨다. → 개발 생산성 감소의 원인
        • 오버 엔지니어링을 주의하자.
        • 제일 좋은 것은 최적화를 안하는 것
        • 최적화는 필요에 의해 하자
      • 아키텍처
        • 최대한 단순하게 시작하자.
        • 넘어서는 가치가 있을 때 도입하는게 맞다.
    • 고민은 많이 하되, 항상 최대한 단순하게 시작하라.
      • 뭔가 실제로 만들어 봐야 더 나은 구조가 보인다.
      • 하면서 고민하는게 더 빠르다.
    • 추상화와 구체화를 넘나들어야 한다.
      • 개발을 해두면 추상화하기가 쉽다.
      • 그렇다고 첨부터 엉망으로 짜두면……
  • 조급한 마음 vs 거북이 마음

    • 멀티태스킹
      • 인간의 CPU는 하나, 컨텍스트 스위칭 비용은 매우 크다.
      • 이공부 했다가 저공부 했다가… → 전진하는 느낌이 안든다.
      • 성장하고 전진하는 느낌이 들어야 즐겁다.
    • 거북이 마음
      • 한번에 하나씩 처리하자.
      • 속도와 깊이는 다르다. (속도 ≠ 깊이)
        • 속도가 빠른게 좋은게 아니다. → 겉핥기만 하게 된다.
        • 학습을 할 때는 깊이에서 원리를 배우면서 실무에 연결이 되어야 한다.
      • 뭐부터 할지 쭉 정리하고, 위에서부터 하나씩 해나가자.
      • 고민하고, 뜯어보고, 만들어보고 해야 한다.

댓글