OKKY
2k
2021-08-18 12:58:23 작성 2021-08-20 16:00:29 수정됨
3
22858

7월 OKKY 세미나 (개발자에게 좋은 이직/퇴사를 위한 꿀팁) 후기


7월 OKKY 세미나 (개발자에게 좋은 이직/퇴사를 위한 꿀팁) 후기

OKKY 회원 여러분 안녕하세요! 지난 7월 15일 저녁, 이경일님께서 [개발자에게 좋은 이직/퇴사를 위한 꿀팁] 에 관해 세미나를 진행해주셨는데요! 당시 진행되었던 모든 내용을 전해드릴 수는 없겠지만, OKKY회원 분들께 유용한 경험과 조언들을 요약하여 전해드리려 합니다.

연사

이경일

- CJ오쇼핑 커머스플랫폼 개발

- KAKAO 커머스플랫폼개발

- NAVER 메인플랫폼, UGC플랫폼, (현)커머스플랫폼개발

- 노가다 전문 개발자


요약


1. 남들도 다 가지고 있는 스펙 말고 나만의 비공식 스펙 쌓기

  • 개발 언어를 만들거나 유명한 개발자들까지는 아니더라도, 가까이에서 본받을 만한 사람을 찾을 수 있음.

  • 동아리 선배 추천으로 처음 시작한 아르바이트가 html, css, javascript를 본격적으로 다루게 된 계기.




2. 내게 맞는 옷을 입듯 내게 맞는 개발 업무와 회사 찾기

  • 2000년대 초반에 (규모가 작은 회사는) 모든 일을 한 명의 개발자 혼자서 다 했음. (참고: 웹마스터)

  • 하드웨어 구성부터 서버 발주, OS 설치( + Apache, php, MySQL ), IDC 입주,
    네트워크 연결 및 설정, 접근 환경 구축, 프로그램 개발, 웹 사이트 구축, DB 설계 까지 모두 경험할 수 있었음.

  • 요즘은 회사는 개발 관련 업무가 분업이 잘 되어 있음. (Frontend, Backend, App, UI/UX, DevOps 등)

  • 요즘은 Docker, Kubernetes 등 사내 플랫폼이 잘 되어 있어서 서버개발자가 입사하면 서버에 접근할 기회조차 없을 때가 많음.

  • 면접용 문제로 "서버 3대가 제공되고, ____서비스에 ____정도의 트래픽이 주어지면, 서버 아키텍처를 어떻게 효율적으로 구성할 것인 지 자유롭게 그려보세요."라는 항목을 출제한 적이 있음

  • 내가 어떤 도메인 개발에 잘 맞는 지 파악해야 함. (커머스, 커뮤니티, Tool, 솔루션, 핀테크, 금융, 게임 등)


  • 어떤 회사에서 시작하는 게 좋을 지 생각해 봐야 함.

    - SI 회사의 단점 : 납품 기한이 정해져 있으나 사람이 부족함.

    - 대기업 IT 담당 부서 : 외주 개발사 관리를 할 가능성이 높음.

    - 자체 서비스를 직접 운영하는 서비스 회사를 추천. 


  • 새로운 프로젝트를 시작하는 것 보다 나의 서비스를, 내가 오너쉽을 갖고 직접 운영하는 경험이 중요함.


3. 이직에 도움 되는 역량은 따로 있다.

  • 일단 기본기는 중요함. (면접을 통과하기 위한 컴퓨터 공학 기본 지식, 직무에 맞는 언어를 잘 다루는 능력 등)

  • 특정 언어나 프레임워크를 고집한 개발 학습은 지양.

  • 기본적인 언어를 다룰 수 있다는 전제 하에 개발 방법론과 관련된 서적은 사회 초년생 때 미리 읽어두는 것이 좋음. (도메인 주도 설계, 오브젝트 등 )

  • 유튜브에 좋은 발표 자료 등이 많음. ( 백기선님, 김영한님, 이동욱님 )


  • 발표는 크게 보면 2가지로 나뉨.


    1. 내가 공부하는 것을 발표하는 사람 ( 커리큘럼에 따라 장기적으로 차근차근 학습하는 강의 등 )

    2. 내가 업무적으로 경험한 것을 발표하는 사람 ( 드라마틱한 성능 개선 사례 등을 내 프로젝트에 써 먹을 수 있음 )


    예) 대통령 선거 트래픽 이슈를 해결한 발표를 듣고 이후에 Varnish를 이용해서 캐싱 플랫폼을 만든 적이 있음.


    - 참고 : 더 빠르고, 더 안정적인 웹서비스를 위한 Varnish!(DEVIEW 2013)

    - 참고 : Varnish 이야기(NAVER D2 Hello word)


토이프로젝트를 해보면서 새로운 언어, 프레임워크를 시도해 볼 수 있음.

  • 서비스 운영 감각을 익히는 것이 가장 중요함.

  • 서버 개발자로 근무하다가 스마트폰을 접하고, 해외 직구로 월급의 절반이 넘는 비용을 투자하여 스마트폰을 구매.

  • 서점에서 앱 개발 서적을 구입하여 학습, 직접 개발한 앱 3개를 앱스토어에 등록함.

  • 그 중 한 앱은 대한민국 앱 스토어 1위를 하기도 함. (키워드를 통한 지역 스팟 검색 앱)

  • 처음 부터 끝까지 서비스의 서버 셋팅, 앱 개발, API 개발을 한 경험.

  • 초기 서버 구성은 단순했음.

    1. 1core에 512MB의 메모리인 Cafe24 가상 서버에 Apache, php, MySQL을 설치

    2. 유저의 검색 키워드가 들어오면 php를 통해 MySQL에 접속,

    3. MySQL에 키워드를 질의하여 검색하는 단순한 방식.

    4. 데이터는 3대 포털(Naver, Daum, Yahoo)에서 Batch로 긁어서 DB에 저장.

    5. PHP를 이용해서 APP에서 사용하는 API를 만듦.



  • App Store 1위를 하니 트래픽이 폭주.

    1. 1대 더 구매한 가상서버에 MySQL을 설치하고 DB를 분리함.

    2. 사용자들이 자주 검색하는 데이터 키워드의 결과를 미리 추출하여 json 파일로 디스크에 저장.

    3. Disk I/O가 치솟자, 리눅스 공유 메모리(Shared Memory)으로 데이터를 옮김.


  • 서비스를 제로부터 만들고(기획까지 직접하고) 운영까지 해 보는 값진 경험

  • 서버 개발에서 iOS 개발까지 커리어를 확장할 수 있었음.

  • SKT에서 갤럭시용 안드로이드 앱 개발 제작 제안을 받음.
    (Android Java도 개발, 당시 월급의 여섯 배가 넘는 보상을 받음.)

  • 대량의 트래픽 대응은 포털로 진출하는 밑거름이 됨.


  • Stress Test Tool, nGrinder

  • nGrinder : Grinder라는 Java Load Test Framework를 이용해 만든 Open Source.

  • URL만 있어도 바로 테스트가 가능.

  • 편리한 UI/UX

  • 실시간 테스트 상황 조회 가능.

  • 자세한 결과를 리포팅 받을 수 있고, 테스트 스크립트를 직접 작성할 수 있음.


  • 대용량 트래픽을 받을 때 시스템이 어떻게 반응하는 지 모니터링 하기 위해서는 APM툴이 필요함.

  • Application의 상태를 한 눈에 볼 수 있음.

  • 실시간 요청의 응답 속도를 볼 수 있음.

  • 요청에 관한 상세한 정보 확인이 가능함.

OpenSource 쪽으로 역량을 습득하는 방법도 있음.

  • Hibernate validator, Handson Table에 기여를 한 경험이 있음.

  • 직접 오픈소스를 만들어서 업데이트를 하고 있기도 함. (project illuminati)

  • 오픈소스를 개발한 것에 대해 JetBrains에 메일을 보내면 전 제품의 라이센스를 받을 수 있음.


  • 역량을 습득하기 위해서는 행동을 해야함.

  • 책을 보고 공부만 하기보다 직접 만들어 보는 경험이 중요.


4. 스펙과 역량, 그 다음 면접 이야기(서류 전형, 코딩 테스트)

  • 네이버나 카카오에서 조금이지만 면접관 경험이 있음. (50회)

  • 이력서에는 프로젝트나 기술 관련 쓰는 부분이 있음.

  • 서류 전형


    1. 사용한 기술셋

    2. 내가 작업한 내용만 (혼자서 했는가 아니면 같이 했는가)

    3. 해당 내용을 그림까지 그려가며 설명할 수 있어야 함. 


    * 이력서에서 빠질 수 없는 첫번 째 키워드, GitHub

    - 책에 있는 내용을 단순히 실습한 소스는 도움이 되지 않음.

    - 개인 프로젝트를 한 지원자의 소스 코드는 유심히 보게 됨.


    * 이력서에서 빠질 수 없는 두 번째 키워드, Blog

    - 기술 블로그에 어떤 내용을 포스팅하는 지 보고, 이를 바탕으로 면접에서 질문을 하기도 함.

    - 본인이 직접 개발한 경험을 올리는 것과 남의 코드를 복사붙여넣기 한 것은 확연히 차이가 남.

    - 꾸준한 블로그 포스팅에도 본인의 생각이 들어 있어야 함.


    * 이력서에서 빠질 수 없는 마지막 키워드, 자기소개

    - 기술 위주의 요약 리스트 및 이에 대한 소개


  • 코딩테스트는 어떻게 준비해야 할까

    - 회사마다 사용하는 코딩테스트 플랫폼이 다름.

    - 목표하는 회사에 맞춰서 준비하는 것이 좋음.

    - 무조건 많이 풀어보는 것이 유리함.

    - 현업 개발자도 준비 없이 코딩테스트를 보는 것은 쉽지 않음.

    - 코딩테스트 점수가 낮다고 떨어지는 것은 아님.

    - 시간이 부족해 모든 문제를 풀지 못 했더라도 푼 문제의 코드를 보고 통과시키는 경우도 있음.

    - 코딩 테스트 스터디나 품앗이, 유료 구매 시 답안을 얻을 수도 있기에 100% 신뢰할 수는 없음.

    (참고: HackerRank, Codility)


  • 면접에서는 어떨까

    1. 기본적인 컴퓨터 공학 지식은 준비해서 가는 것이 좋음.

    2. 문제 해결(운영)능력, 경험을 묻는 질문 (창의력, 잠재력)

    예) 특정 서비스에 발생한 트래픽 문제 해결책 예) 마스크 판매 쇼핑몰이 모두 서버 장애가 났을 때 해결책



  • 면접 마지막까지 주어진 시간을 최대한 활용하기

    - 만일, 면접관이 마지막으로 궁금한 것이 없냐는 질문을 한다면?

    - 기술적 질문, 자신을 어필하는 등 주어진 시간을 최대한 활용하는 것이 좋음!

    - 본인이 직접 운영하고 있는 서비스가 있고 그 서비스를 운영하면서 느낀점

    - 복사&붙여넣기가 아닌 본인의 생각을 꾸준하게 정리한 기술 블로그

    - OpenSource Contribution 경험

    - 면접도 연습이고 면접도 경험.

    - 자신을 돌아보는 계기가 되기도 함.


  • 퇴사도 중요함. 레퍼런스 체크는 생각보다 중요함.

  • 서류 면접에서 떨어지는 케이스가 생각보다 많음. (면접 기회조차 없을 수도 있음.)

  • 평소에 동료들과 좋은 관계를 유지.

  • 너무 공과사를 구분하지 말고, 적당한 친분은 도움이 됨.

  • 퇴사하는 날까지 야근을 하는 모습 등 일을 처리하는 태도를 좋게 평가해주셨던 것 같음.



마지막으로

  • 좋은 사수, 좋은 리더를 만났을 때 가장 많은 기술적 성장을 했음.

  • 오픈 소스를 단순히 가져다 쓰지 않고 직접 API를 만드는 등 많은 것을 시도해 볼 수 있었음.

  • 일생에 개발을 해왔던 기간 중 멘토로 삼고 있을 정도로 존경할 만한 개발자를 만나기도 함.

  • 내 이야기(기술 제안 등)를 긍정적으로 들어주는 동료들을 만날 수 있는 좋은 기회.

  • 나에게 도움이 될 만한 좋은 사람들은 이미 내 주변에 있을 지도 모름.

  • 개발자들이 많이 모여 있는 SNS 커뮤니티가 도움이 되기도 함.




잘 읽어보셨나요? 경일님의 값진 경험과 소중한 조언들을 들을 수 있는 귀중한 시간이었는데요. 참여해주신 OKKY 회원 여러분과 연사 이경일님께 다시 한 번 감사드립니다. 앞으로도 OKKY에 많은 관심과 참여 부탁드립니다. 감사합니다.

21
33
  • 댓글 3

  • 팩트폭행범
    2k
    2021-08-18 13:40:49

    좋은 글 감사합니다   도메인주도설계는 저도 한 번 읽어 봐야겠네여

  • OKKY
    2k
    2021-08-18 13:51:01
  • ypk333
    2
    2021-08-27 19:11:19

    박수칠때 떠나라 맞는말이다

  • 로그인을 하시면 댓글을 등록할 수 있습니다.