야곰닷넷 테크캐스트 [#4 지속가능한 개발자로 성장하기] 요약

Updated:

OOO한 개발자입니다 (이화랑님)

  • 스피커 이화랑
  • 2년차 웹 프론트엔드 엔지니어 (퀄슨)
  • 리얼 클래스 개발
  • 유튜버 개발 화라리

내가 일하면서 재밌어하고 잘하는 것을 찾으면 지속가능한 개발자가 되지 않을까?

내가 개발하면서 재밌다고 느낀 순간

  • 신규 서비스의 결제 페이지 개발
    • 결제 실패시 실패 페이지로 가는게 아닌 재결제 요청 페이지를 만들었더니 재결재 률이 올라갔음
    • 코드가 비지니스에 도움이 될 때 느꼈음
  • 리얼 클래스 웹
    • 세션이 만료되거나 권한 필요시 로그아웃되고 로그인 페이지로 리다이렉트
    • 어떤 이유로 로그인이 필요한지 안내 후 로그인 페이지로 리다이렉트
    • 비 구매유저가 구매유저만 이용 가능한 페이지에 접근하는 경우 근거 알려주기
  • 리팩토링 하면서 코드가 개선되는게 보일 때

나를 관찰하며 독창성을 발견

  • 재미있어 하는일 == 잘하는 일이면 베스트
    • 이제 곧 나의 강점, 무기가 됨

나의 동료들이 좋아하고 잘하는 개발

  • CSS 코드를 정발 빠르고 깔끔하게 짠다
  • 기능을 계속 붙이면서 코드가 복잡해지는 순간 리팩토링으로 구조 개선
  • 라이브러리의 업데이트 경향 주시하고 프로젝트에 적용
  • 자바스크립트 기본기가 탄탄해서 자연히 리액트 탄탄으로 이어짐
  • 타입스크립트 해결사
  • 고품질 코드를 위해 렌더링 횟수 등의 성능 문제를 신경 ㅅ씀
  • 디버깅을 잘해서 이슈를 빠르게 해결

지속성을 더 이어가는 방법

  • 나의 장점은 타인 입장에서 타인의 단점
  • 타인의 장점은 내 입장에서 나의 단점
  • 장점과 단점을 동일선상에서 비교하면 스스로를 힘들게 함
  • 내가 좋아하고 잘하는 일을 찾아서 하면 되겠다!
  • 팀원들이 각자 서로 다른 장점을 가지고 있을 때 시너지가 난다

개발 이외의 팀적 기여

  • 개인의 성향이 팀적 기여에도 영향
    • 기획/디자인 리뷰: 제품 관심이 많고 감각 있는 사람
    • 코드 리뷰: 꼼꼼하고 기능적 완성도 우선인 사람, 클린 코드가 중요한 사람
    • 기술 문서 작성: 공유 문화를 중요시하는 사람

OOO한 개발자

꿈이이 단순히 만화가가 아니라 OOO한 만화가 이렇게 되어야한다.

  • 윤태호 피디의 말

단계적 기술 성장 (조은님)

  • 스피커 조은
    • 버킷 플레이스 (오늘의 집)
    • 프론트 엔드 엔지니어
  • 주어진 일을 잘 하는 단계에서 주지않은 일도 잘 하는 단계로
    • 주니어에서 시니어로 가는 단계

개발자의 세가지 영역

  • 코드를 파악하는 영역
    • 말 그대로 이 코드가 어떻게 동작하고 앞으로 어떤 식으로 고쳐야할지 이해한다는 것
  • 코드를 구현하는 영역
    • 요구사항이 주어졋을 때 그에 맞게 코드를 구현하고 실제로 동작하는 제품을 만들 수 있어야 함
  • 코드를 개선하는 영역
    • 기존 코드를 분석한 결과를 바탕으로 모두가 개발하기에 좋은 방향을 이끌어낼 수 있어야 함

성장을 위한 작은 실천들

  • 90 days 5분 일기
    • 90일 동안 하루에 5분만 투자해서 일기 써보기
    • 오늘 한 것, 감정, 성공, 실패를 기록
    • 이게 누적되면 어떤것에 강하고 약한지 알게 됨
  • 30 days TIL
    • 30일동안 무언가를 계속 습득하면서 습득했던 내용 정리하기
  • 10 days project
    • 10일 정도만 투자해서 작은 토이프로젝트 해보기
    • 정확한 스케줄을 세우고 정확한 스펙에 맞추어 현재 가능한 수준에서 최선을 다해보기
  • Study with strangers
    • 모르는 사람과 스터디 해보기
    • 아는 사람과 스터디하면 서로에게 맞춰줄 수 있음

여러분의 프로젝트에 모든 것이 다 있습니다 (안정민님)

  • 스피커 안정민 (민소네)
    • 카카오뱅크 iOS 개발자

내 시간을 만들자 (생산성 끌어올리기)

  • 어떤 부분에 시간이 많이 걸리는지를 검토하는 것이 중요
  • 도구, 방법론 등을 적절하게 이용하여 PainPoint를 줄이거나 제거
  • 코드 작성 -> 빌드 -> 테스트 과정에서 빌드와 테스트 시간이 많이 차지함
  • 프로젝트를 분리하고 개발하여 주기를 단축 (모듈화)
  • 프로젝트 생성이 손이 많이 간다면, 도구 이용 (XCodeGen, Tuist)
  • CI/CD를 구축하고 컴퓨터의 리소스 사용을 극대화
    • 일관성 있는 코드 유지를 위해 lint를 도입하여 CI에서 하상 검증
      • Local에서 빌드 할때마다보단, git의 pre commit hook에 등록하여 사전 검증
      • SwiftFormat, SiwftLint 추천
    • CI에 정적 코드 분석 도구(SonarQube 등)를 연동하여 중복 코드, 버그 등을 정기적으로 코드의 안전성을 강화
    • Fastlane을 이용해 Build, Archive 작업 및 적절한 스크립트를 같이 이용하여 사내 배포, 앱 스토어 배포 등에 활용
  • 애플리케이션이 배포 된 후, 어떻게 버그없이 잘 운영할 것인지
    • 고객정보가 없는 적절한 로그를 통해 원인 분석
    • 크래시 리포트 분석(Crashlytics 등)을 이용하여 빠르게 이슈 대응
  • 디버깅 및 개발 도구를 잘 활용할 것
    • LLDB, Chisel, Flex, Reveal, OHTTPStubs, wtfautolayout.com 등
  • 디자인 시스템을 활용하여 컴포넌트 조립으로 빠르게 화면을 생성
    • 통일성 있는 화면 및 비지니스 로직에 좀 더 집중

똑같은 실수를 방지 하자 (트러블 슈팅 정리)

  • 겪은 문제는 미래의 나 또는 동료가 겪을 수 있음
    • 정리해서 공유하자
  • 커밋을 얼마나 공들여서 작성하는지
    • 커밋은 프로젝트의 역사이므로 잘 작성해야 함
    • 깃 브랜치 전략
  • 테스트가 가능하게 코드를 작성 중인가
    • 결합도를 낮추기 위해 프로토콜 지향 프로그래밍 추구
  • 유지보수 시 시간이 많이 걸리나요? 기능을 추가하는데 어렵나요?
    • 응집도가 높은 구조이면서 예제가 잘되어있는 아키텍처 선택
      • VIPER, Clean Architecture, RIBs 등
    • 현재 프로젝ㅌ의 상황에 따라 방향을 선택해야 함

질문/답변

  • 지속 가능한 개발자가 무엇인가요?
    • 오랫동안 업계에 있으면서 존경 받는 개발자, 나 스스로의 성장에 대해 생각하는 사람
    • 흥미를 지속하는 개발자
  • 하고 싶은 일과 해야하는 일의 비율을 어떻게 잡는게 좋을까
    • 해야할 일을 9로하고 하고 싶은 1로 두어야 좋을 듯. 잘 해야 재밌어지기도 한다.
  • 초보 개발자로서 공부해야 할 분량이 많다면 어떻게 우선순위를 정할지?
    • 현재 당장 하고있는 프로젝트 부터
    • 초보라면 우선순위를 정하는게 불가능할 것. 도움을 받자. 강의나 책의 목차 참고
  • 새로운 지식을 효율적으로 공부할 수 있는 팁
    • 공부 시간을 정해서 하기

Leave a comment