개발자의 핵심 역량 - 기술력

alsoj·2024년 2월 29일
post-thumbnail

인프런 백기선님의 강의(더 개발자, 커리어 가이드)를 듣고 정리한 내용입니다
강의 링크 : https://www.inflearn.com/course/개발자-커리어-가이드


꾸준히 수준 높은 해결책을 만들어내는 능력


  • 해결하고자 하는 문제를 명확하게 이해
    • 많은 경우, 문제를 빨리 진정시키려고만 한다.(mitigation, 불을 끊다)
    • 원인까지 파고들어서 근본적으로 해결하도록 노력
    • 둘 다 필요한 방법이지만, 한쪽으로 치우치면 안된다.
  • 여러가지 해결 방법을 제안할 줄 알아야 한다
    • 단기적으로 빠른 해결 방법
    • 중장기적으로 근본적인 해결 방법
    • 장단점, 복잡도 등을 정리하여 설명 & 제안
    • 텍스트 위주의 문서 한 장이면 충분
      • 문제원인
      • 해결 방법1
      • 해결 방법2
      • 해결 방법3
      • 해결 방법 분석
      • 최종 의견 제안

💡 Case Study) 새로운 버전을 배포하는 중인데 버그를 발견한다면?

  • 해결 1 : 근본적인 문제를 찾는다
  • 해결 2 : 이전 버전으로 되돌린다
  • 해결 3 : 현재 배포되고 있는 버전을 막는다
  • 3 → 2 → 1 순으로 진행한다
  • 버그만 찾는 것이 아니라, 왜 버그를 막지 못했는지까지 파악하고 해결 방법을 제안


엔지니어링 원칙과 업계의 베스트 프랙티스 받아들이기


  • 엔지니어링 원칙 예시
    • DRY(Don’t Repeat Yourself) : 기존 코드를 재사용하라. 반복하지 마라
    • KISS (Keep It Simple, Stupid) : 가능하면 간단하게 구현하라. 오버엔지니어링 하지 마라
    • YAGNI (You Aren’t Gonna Need It) : 필요로 하지 않을 것을 미리 구현하지 마라
    • SOLID …
  • Best Practice 예시
    • 테스트 코드
    • 리팩토링
    • 클린 코드
    • 클린 아키텍처

🔥 이런 원칙들을 공부하는 것보다, 적용하는 것이 훨씬 어렵다!
🔥 우선 순위에서 밀려나기 마련인데, 시간을 내서 적용 해야 한다!

💡 Case Study) SQL DB를 NoSQL DB로 바꾼 사례

  • Read와 Write의 테이블이 따로 있는데, 복제하는데 시간이 오래 걸려서 장애 발생
  • 개발자들은 방어적인 코드를 작성하기 시작
  • 근본적인 문제를 해결하기 위해 NoSQL DB로 변경
  • 업계의 Best Practice를 따르는 것은 트렌드를 따르는 것이 아니다


지속적으로 개발 방법과 품질을 증진시키려는 노력


  • Java, Spring 등의 기술은 기술력의 극히 일부분이다
  • 개발 방법과 프로세스를 학습하고 개선하는 것이 훨씬 중요하다

💡 Case Study : 개발 프로세스에서 병목 구조를 찾는 것

  • 왜 빠르게 개발해서 배포하는데 오래 걸리는가?
    • 코드 리뷰가 빨리 되지 않는 것
    • Safe Deploy Policy로 인해 배포 느림 : 그 중에서도 줄일 수 있는 방법을 찾는 것

💡 Case Study : 시스템 장애가 발생했을 때 확인하는 것

  • 장애 사후 리뷰(postmoterm)
    • 장애 상세 정보
    • 장애 범위, 일시
    • 장애 처리 방법, 일시
    • 장애 근본 원인
    • 장애 방지 대책
  • 변경 사전 리뷰(변경심의)
  • 이런 프로세스가 존재하지 않는다면, 팀원들을 설득해 적극 도입


기술력을 증진시킬 수 있는 방법을 적극적으로 찾기


  • 다양한 학습 방법
    • 스터디 : 다양한 커뮤니티에서 사람들과 교류
      • 서로 다른 환경을 간접적으로 경험
    • 책 : 근본적인 자료 찾아 읽기
      • 공식 기술 문서 & 원천적인 소스를 읽는 것이 좋다.
      • 영어로 된 자료가 많지만, 천천히 읽어보는 것도 추천!
      • 처음에는 조금 느릴 수 있지만, 익숙해지면 빨라진다.
      • 영어로 된 원본 문서를 읽지 못해서 가공 문서를 읽는 것과, 편의 등을 위해 가공 문서를 읽는 것은 다르다
      • 가공 문서를 본다면, 비판적 & 검증하는 마인드로 읽으면 좋다.
      • 검증은 코딩을 해보면 된다!
      • 글을 눈으로 읽으면서 보는 공부는 학습이 아니다. 손으로 직접 코딩을 해본 것만이 학습한 것이다
    • 인터넷 온라인 강의
    • 멘토링
    • 사이드 프로젝트


동료 또는 다른 개발자의 기술력을 증진시키는 것을 돕기

  • 팀 내에서 멘토링, 사수의 역할을 하는 것
    • 다른 사람들이 놓치고 있는 것들을 잡아주고 도와주는 것
    • 굉장히 중요한 활동임에도 불구하고, 일이 바쁘다는 핑계로 미루는 경우 있다.
    • 동료를 도와주면 그만큼 돌아오는 것이 있다.
    • 나의 일이 지연되더라도, 긴급한 것이 아니라면 동료들의 문제를 풀어주는 역할을 하는게 좋다
  • 세미나 또는 컨퍼런스에서 발표
    • 연사로 참여하는 발표나 세미나는 정말 기억에 많이 남는다
    • 준비하는 발표자가 가장 많이 배운다. 청중보다 발표자가 더 많은 학습을 한다.
    • 공부하는 것 + 전달하는 것까지 연습

0개의 댓글