김대현 (vimkim), 백엔드 개발자

DAEHYUN KIM

-이력서 웹사이트: https://vimkim.github.io
-이력서 PDF: https://vimkim.github.io/files/resume.pdf
-GitHub: https://github.com/vimkim
-이메일: kimdhyungg@gmail.com
-전화번호: 010-3284-0075


안녕하세요. 어떤 문제든 집요하게 해결책을 찾는 백엔드 개발자 김대현입니다. 쉽게 해결하지 못한 문제를 결국 해결하면서 큰 성취감을 느낍니다. 남들보다 좀 더 쉽고 빠르게 해결책을 찾을 수 있다는 믿음과 자부심을 가지고 있습니다.

금융공학 과제를 최적화하면서 자료구조와 데이터베이스에 대해 공부하기 시작했습니다. 그 과정이 너무 재미있어서, 원래 주 전공이었던 경제학보다 이 분야에 더 많은 시간을 투자하게 되었습니다. 결국, 컴퓨터 과학도 전공하게 되었고, 서로 다른 두 대학으로부터 경제학과 컴퓨터 과학 학사 학위를 받은 웹 개발자가 되었습니다.

경제학을 공부하며, 채용 시장에서 정보의 비대칭성 문제에 대해 배웠습니다. 고용주와 피고용인 간의 정보가 완전히 공유되지 않아 종종 잘못된 결정이 내려진다는 이론입니다. 이러한 문제를 방지하기 위해, 이력서와 웹사이트에 가능한 많은 정보를 담으려고 노력했습니다. 😄

이 깃헙 아이콘 버튼은 웹사이트와 이력서 PDF 둘 모두에서 마우스로 클릭하실 수 있습니다.

EDUCATION

timeline

🎓 고려대학교, 컴퓨터학과 학부 졸업 (2019.3 ~ 2023.2)

  • 📍 위치: 서울시 성북구 안암동
  • 📅 학업 기간: 2019년 3월 편입학 후, 2020년 2월까지 학업. (2020년부터 2021년까지 🪖 군 휴학), 이어서 2022년 3월부터 2023년 2월까지 학업 재개 및 졸업.
  • 📊 GPA: 4.03 / 4.5
  • 📚 수강 과목 (총 이수 학점: 60):
    • 🗓️ 2019년
      • 전공 필수:
        • 자료구조 (A+)
        • 알고리즘 (A+)
        • 운영체제 (A+)
        • 네트워크 (A)
        • 컴퓨터 구조 (A)
        • 데이터베이스 (B+)
      • 전공 선택: 이산수학, 논리설계, 공학수학
        • 프로그래밍언어(론): 함수형 ML계열 언어 OCaml로 인터프리터 언어와 타입체커, GC 구현
        • 오토마타: DFA, NFA, PDA, 튜링 머신과 촘스키 위계
    • 🗓️ 2022년
      • 전공 선택: 인공지능, 머신러닝, 딥러닝, 임베디드 시스템, 컴퓨터 그래픽스, 컴퓨터학 콜로키움, 기업과 정신과 리더십, 인터넷 프로토콜, 전산학 특강
  • 🔬 연구 활동:
    • 💾 데이터베이스 연구실 학부연구생 (2022.02 - 2022.05)
      • 🏅 2022 한국컴퓨터종합학술대회 학부생/주니어 논문경진대회 학부생부문 우수상
        • 연구 제목: 학습된 색인 구조에서 편중된 삽입 문제와 해결책
  • 🏢 동아리 활동:
    • 🔒 정보보안 동아리 KUICS (2019)
    • 🎮 게임개발 동아리 Cat&Dog (2019)
    • 💻 컴퓨터 동아리 KUCC (2022)
    • 🏊 수영 동아리 수호회 (2022)

🎓 McGill University, 경제학과 학부 졸업 (2014.9 ~ 2018.6)

  • 📍 위치: 캐나다 몬트리올
  • 🏆 입학 당시 QS 세계 대학 랭킹 18위, 캐나다 1위
  • 📅 학업 기간: 2014년 9월 입학, 2018년 6월 졸업
  • 📊 GPA: 3.11 / 4.0, 총 이수 학점: 121
  • CS 관련 수강 과목: COMP 102 Computers and Computing, COMP 202 Foundations of Programming, COMP 206 Intro to Software Systems, COMP 250 Intro to Computer Science, FINE 452 Applied Quantitative Finance, FINE 547 Advanced Finance Seminar, etc.

  • 졸업 논문 link

    • 제목: Empirical Research on Skewness in Individual U.S. Stock Log Returns at Different Investment Time Horizon
    • 내용: 본 연구는 투자 기간에 따라 변하는 주식 수익률 분포의 3차 모멘트(비대칭성)에 대해 실증적으로 분석했습니다. 1960년부터 2015년까지 미국 내 3200여 개 기업의 주식 수익률 변화를 상세히 조사하여, 최고 점수를 받았습니다.

      데이터의 크기가 워낙 커서, 코드를 한 번 실행할 경우 적어도 5시간 이상의 많은 시간이 소요되었습니다. 능력이 닿는 대로 최적화를 진행했으나, 운영체제와 데이터베이스에 대해 잘 몰랐기에 한계가 있었습니다. 이 경험은 CS 전공 역량의 중요성을 깊이 인식시켜 주었고, 컴퓨터학과에 진학하는 계기가 되었습니다.

🎓 EIB The Victor Hugo School 졸업 (2011.9 ~ 2014.6)

  • 프랑스 파리 소재 국제고등학교
  • 국제 바칼로레아 (International Baccalaureate) 디플로마 학위 취득. 맥길 대학교에서 1학년을 면제받고 2학년으로 입학했어요.

🚶‍♂️🏫 휘️문고등학교 (2011.03 ~ 2011.07)

  • 1학기가 끝나고 부모님의 3년 장기 해외 출장이 결정되어, 가족 구성원 모두 프랑스로 이사했어요.

🎓 네이버 커넥트재단 부스트캠프 웹・모바일 8기 수료 (2023.06 ~ 2023.12)

  • 교육 기간 활동:

    • Vanilla TypeScript로 운영체제, 버전 컨트롤 시스템, 인터프리터 언어, 데이터베이스, WAS 구현
    • 프레임워크를 쓰지 않고 Vanilla TypeScript로 스스로의 힘으로 React와 Express.js 구현
    • 웹 서비스 스스로의 힘으로 처음부터 끝까지 설계 및 배포
  • 프로젝트 기간 활동:

SKILLS

대표 기술

  • 영어: 오픈 소스 라이브러리에서 버그가 발생할 시 공식 문서와 GitHub Issues를 빠르게 훑고 메인테이너를 컨택하는 역할을 담당해요. 공식 문서에 없는 문제가 생길 경우 해당 레포에 관련된 디스코드, 슬랙, 레딧, 위키, Customer Support, 유튜브, 유트랙, 미디엄 등 가능한 모든 커뮤니티에서 해결책을 찾아요.
  • Git: 협업 시 팀에서 Git으로 인해 발생하는 모든 문제를 도맡아 해결해요. 커밋 그래프 해석, 생성, 수정 및 삭제를 마음대로 할 수 있어요.
    • 자주 사용하는 명령어: fetch --prune --all, reset --hard, reflog, stash -u -k, rebase --onto, submodule, etc.
  • TypeScript: 대표 언어 1 - 대부분의 프로젝트를 진행한 언어이며 Type Narrowing (guard, predicate), Interface Merging, Object Literal, Decorator에 대한 이해가 있어요.
  • Java: 대표 언어 2 - 프로그래밍을 처음 시작한 언어이며 Modern Java (Stream, @FunctionalInterface, Lambda, Optional)에 대한 이해가 있어요.
  • Python: 스크립팅과 크롤링 용도로 빠르게 PoC를 만들어낼 수 있어요. 600개 이상의 알고리즘 문제를 풀어 구현 속도가 특히 빨라요.

익숙한 기술

  • Spring NestJS NodeJS MySQL JavaScript C++ Bash

경험해 본 기술

  • GitHub Actions TypeORM Docker Redis Nginx Postgres AWS JPA React Socket.io PowerShell

PROJECTS

대표 프로젝트: 백준룸즈

⚔️ 백준룸즈 (개발 기간: 2023.11 ~ 2023.12, 유지보수: 2024.1 ~ 현재)

  • TypeScript NodeJS NestJS TypeORM MySQL Redis Socket.io Docker Nginx GitHub Actions React React Router React Query TailwindCSS Vite
  • 백준문제로 대결하는 실시간 알고리즘 경쟁 플랫폼입니다.
  • 팀원: 프론트 3명, 백엔드 2명
  • 담당 업무: SocketIO, NestJS Gateway, OAuth2, Passport.js, GitHub Actions CI, User / Room / Auth Domain, Logger, Redis
  • 기술적 도전 & 고민 사항:
    • NestJS:
      • 어떻게 모듈 간 결합도를 낮추고 Circular Dependency를 피할 수 있나요? forwardRef 사용을 피하는 방법은?
      • NestJS에서 isNil 타입 구현이 잘못된 것 같은데 어떻게 해결할 수 있나요? NestJS 개발자에게 직접 연락해서 물어본 결과는 무엇인가요?
      • NestJS에서 기본 TS 설정 말고 좀 더 Strict하게 사용하는 방법의 장단점이 무엇일까요?
    • TypeORM:
      • TypeORM이 EntityRepository를 deprecate했는데 대안은 무엇인가요?
      • TypeORM이 Transactional 데코레이터를 deprecate했는데, 가장 적절한 트랜잭션 관리 기법은 무엇인가요?
      • TypeORM의 Lazy Relations가 무엇인가요? 왜 사용하지 말아야 할까요? N+1 문제를 어떻게 해결할 수 있나요?
      • 우리 프로젝트는 Active Record, Data Mapper 패턴 둘 중 무엇이 어울릴까요?
    • Auth:
      • Session or JWT 무엇을 선택할까요? 꼭 Session을 도입해야 하는 이유가 무엇인가요? NestJS 공식 문서에는 Session을 Passport.js와 연동해서 사용하는 예시가 부실한데 어떻게 해결할 수 있나요?
      • OAuth2 Access Token을 누출하지 않고 보호할 수 있는 방법이 무엇인가요?
    • WebSocket:
      • WebSocket은 쿠키를 안 보내는데 어떻게 세션을 통한 인증/인가를 처리할 수 있을까요?
      • Https에서 WebSocket이 작동을 안 한 버그의 원인은 무엇인가요?
    • Git:
      • 중간 점검을 해보니 Git Graph가 너무 복잡한데 브랜칭 전략을 어떻게 수정해야 협업에 더 효율적일까요?
  • 배포 링크: https://baekjoonrooms.com/intro
  • Go to GitHub:

📝 SurveyIT (진행 중) (2024.2 ~ )

  • TypeScript NodeJS NestJS TypeORM Postgres Redis Docker Nginx GitHub Actions React React Router React Query TailwindCSS Vite
  • 설문조사 및 리워드 관리 플랫폼입니다.
  • 팀원: 프론트 2명, 백엔드 2명, 기획 1명, 디자인 1명
  • 담당 업무: JWT, Docker, GitHub Actions CI, 배포 자동화, CRUD
  • 기술적 도전 & 고민 사항:
    • JWT를 어떻게 사용해야 가장 보안에 덜 위협적일까요? Cookie, Auth Header 등 다양한 방법이 있는데 무엇이 좋을까요?
    • JWT 토큰을 어디에 저장해야 할까요? Cookie, LocalStorage, SessionStorage?
    • 토큰으로 인한 CSRF, XSS 공격을 예방할 수 있는 방법이 무엇일까요?
    • Frontend, Backend간의 API 형상 관리를 할 수 있는 방법이 무엇일까요?
  • Go to GitHub:

🏨 Yanullja - Yanolja BE Clone (2024.1)

개인 포트폴리오 홈페이지 제작 (2024.2)

  • CSS3 GitHub Pages

  • 현재 보고 계신 사이트입니다.
  • 개인 프로젝트
  • 💎 Jekyll과 Ruby Gem, Bundler를 이용한 acamedicpages 템플릿을 이용해 제작
  • 원본 사이트를 참고했으나, 결국 CSS를 처음부터 끝까지 스스로 작성했습니다.
    • CSS 애니메이션 (Link, Skill Badge, GitHub Button)
    • 목차 레이아웃, 유저가 현재 읽고 있는 섹션 시각화, 모바일 환경 가시성 고려
    • Pretendard로 폰트 교체
    • PDF 변환이 용이하도록, @media print 설정 (ctrl+p로 웹에서 pdf 형식으로 출력 가능)

연세대학교 객원교수 개인 홈페이지 제작 외주 (진행 중) (2024.2 ~ )

  • Go Hugo GitHub Pages

  • 개인 프로젝트
  • 🐹 Go언어와 Hugo로 제작 중

CS STUDIES

기술서적 완독 스터디

23년 1월부터 매주 일요일마다 꾸준히 여러 기술서적 완독 스터디에 참여했어요. 전 팀장님이셨던 Hellojihyoung님께 24년 1월에 스터디를 물려받아 스터디장을 맡고 있어요.

아래 순서대로 4명이서 개인당 매주 약 10페이지씩 정리해서, 총 40페이지를 발표 요약하는 식으로 진행했어요. 랜덤 요소와 커피값 벌금도 도입하는 등 참여율을 높이기 위해 다양한 시도와 실험을 병행해서 노하우가 많이 쌓였어요.

  • CS study: ParkRio님께서 진행하신 CS 전공지식 스터디 완료
  • Modern Java in Action: hongxeob님께서 시작하시고 제가 물려받은 스터디 완료
  • Real MySql 8.0: Hellojihyoung님께서 진행하신 스터디 완료
  • HTTP 완벽 가이드: Hellojihyoung님께서 시작하시고 제가 물려받은 스터디 완료
  • Operating System Concepts: TaehwanGo님께서 진행하신 공룡책 완독 스터디 완료
    • 추후 내용 업로드 예정
  • Learning MySQL (현재 진행 중)

명절을 제외하고는 한 주도 빠지지 않고 모두 꾸준히 성실하게 참여해 주셨어요.

동아리 스터디

  • 정보보안 동아리: 시스템 보안 스터디, SICP (마법사책) 스터디, 64비트 운영체제 직접 만들기 1권 완독 스터디
  • 게임개발 동아리: 언리얼 스터디, 게임 개발을 위한 비동기 C# 스터디
  • 알고리즘 동아리: 알고리즘 고급 스터디 (4주)
  • 컴퓨터 동아리: 웹개발 세미나 (8주), linux & bash & zsh & vim 스터디 (7주)
  • 네이버 부스트캠프: 멤버십 대비 타입스크립트 스터디 (9회)

BLOG

  • 구글링 실패한 개발자가 남들의 시간을 아껴줌 이라는 블로그를 운영하고 있어요
    • 구글링을 해도 도무지 해결책을 찾을 수 없었고, 결국 직접 여러 시도 끝에 스스로 해결한 이슈들만 정리해서 글을 쓰는 구글링에_실패한_개발자 블로그를 운영하고 있어요.

기술적 역량

🚀 CI와 배포 자동화에 익숙해요

  • Docker compose를 통해 손쉽게 배포할 수 있어요. link
  • Nginx와 Caddy를 통해 리버스 프록시를 설정할 수 있어요.
  • Let’s Encrypt를 통해 HTTPS를 설정할 수 있어요.
  • GitHub Actions를 통해 PR을 검증하는 CI와 성공 시 자동 배포를 설정할 수 있어요. link
  • 필요하다면 bash, zsh, fish, powershell 어떤 쉘이든 쉘스크립트를 작성할 수 있어요.

🌿 팀원의 Git 문제를 해결해 줄 수 있어요

  • 협업할 때 발생한 모든 Git 문제를 도맡아 해결했어요.
  • Git 구조를 잘 알아요. git cat-file 로 Tree와 Blob을 보면서 Git의 구조와 원리를 이해하고, Git을 스스로 구현해 본 적이 있어요.
  • 다양한 Git branch strategy에 능숙하고 협업 시 Git Graph를 깔끔하게 관리할 수 있어요.
  • reset, stash, rebase --onto, worktree를 잘 쓰고, squash merge를 좋아해요.

🔑 인증, 인가를 제대로 구현할 수 있어요

  • OAuth2를 통한 회원가입을 구현할 수 있어요. Access Token과 Client Secret를 프론트로 보내지 않고, 백엔드에서 모든 작업을 처리하는 방식으로 구현해요. link
  • Session, JWT 두 가지 방법 모두 로그인을 구현할 수 있어요. link
  • Spring Security와 Passport.js 사용 경험이 있어요.
  • OWASP 가이드라인에 대해 인지하고 있어요.

💬 웹소켓을 통해 채팅을 구현할 수 있어요

  • Socket.IO와 NestJS Gateway를 통해 실시간 채팅방을 구현했어요. link
  • 웹소켓 통신을 위한 Nginx 프록시 업그레이드 설정을 할 수 있어요.

🏠 NestJS를 자유롭게 사용해요

  • 모듈 시스템과 의존성 주입에 익숙해요.
  • Filter, Pipe, Guard, Interceptor와 같은 코어 기능들의 공식 문서를 모두 읽었고 잘 다뤄요.
  • E2E Test 코드도 수월하게 짜요. link

🌐 HTTP를 필요한 만큼 공부했어요

  • HTTP 완벽 가이드를 완독했어요. link
  • Cache-Control과 If-Modified-Since, If-None-Match 등의 동작 원리를 알아요. link
  • XSS, CSRF의 개념과 예방책을 알아요.
  • HTTPS의 동작 원리를 알아요.
  • 1.1과 2.0의 차이를 설명할 수 있어요.
  • Preflight, CORS의 필요성에 대해 설명할 수 있어요.
  • HATEOAS에 관심이 있어요.

💾 Database 이론을 깊게 공부했어요

  • 정규화에 대한 공부를 많이 하고, ERD를 설계할 때마다 정규화를 신경 써요.
  • Phantom Read와 같은 Anomaly가 왜 발생하는지 DB시스템 자료구조를 그리면서 설명할 수 있어요.
  • 트랜잭션 격리 수준에 대해 잘 알아요. Real MySQL 1권을 읽고 격리 수준에 대한 설명에서 오류를 찾아냈어요. link

🧮 ERD를 읽고 작성하는데에 능숙해요

  • 연관 관계가 복잡하더라도, 괜찮은 ERD 초안을 만들어올 수 있어요. link

🔄 Spring Data JPA, TypeORM 등 ORM에 익숙해요

  • ManyToOne 연관 관계를 설정하고, N+1 문제를 막을 수 있어요. link

☕ 모던 Java에 능숙해요

  • 모던 자바 인 액션을 완독했어요. link
  • 스트림을 좋아해요. Short-curcuiting과 Loop fusion이 매력적이라고 생각해요.
  • 소스 코드의 Binary Compatibility, Source Compatibility를 생각하면서 코드를 작성해요. invokevirtualinvokeinterface 등의 바이트 코드 명령어에 대해서 깊게 파고 들어본 경험이 있어요.

📘 TypeScript를 좋아해요

  • 타입스크립트는 Null Check가 잘 되는 우아하고 모던한 언어라서 좋아해요. Matt Pocock의 영상을 자주 봐요.
  • Enum을 싫어하고, 정적 분석이 잘 되는 Object Literal을 좋아해요. link
  • 타입스크립트 스터디를 진행했고, 공식 문서와 TSConfig Reference를 읽고 많은 버그를 해결하며 산전수전을 겪었어요.

⚛️ 간단한 React 코드 작성과 디버깅을 할 수 있어요

  • 프론트엔드 개발자가 작성한 리액트 코드를 해석하고 디버깅 할 수 있어요. 기존 코드를 모방하여 간단한 컴포넌트를 만들 수 있어요.
  • 프론트엔드 개발자의 입장에서, 프론트엔드 개발자를 배려하는 코드를 작성할 수 있어요.
  • 신입 프론트엔드 개발자를 위해 API를 사용하는 React 코드를 대신 작성해 줄 수 있어요.
  • Velog 개발자 김민준님의 ‘React를 다루는 기술’을 완독했어요.

➕ 그 외 다양한 언어를 사용할 수 있어요

Python C C++ OCaml Octave

HOW I WORK

🤖 인공지능은 저의 최고의 비서에요

  • 유료 ChatGPT를 적극 활용해서 시간을 많이 아끼고 있어요.
  • ChatGPT에게 코드의 퀄리티를 더 높일 방법이 있는지 항상 물어보고 있어요.

📁 Git & GitHub은 제가 책임지고 관리해요

  • main 브랜치에 대한 Branch Protection은 필수이고, PR은 적어도 1명 이상의 리뷰를 받아야 한다고 생각해요.
  • GitHub Project와 연동하여 GitHub Issue → Branch creation → Pull Request → Squash Merge 워크 플로우로 일하는 것을 선호해요.
  • Git Graph의 모양을 깔끔하게 유지하는 것을 중요하게 생각해요. 항상 적절한 rebase와 squash merge를 통해 그래프의 모양을 정리해요.

🤝 협업 습관: 팀의 성공을 위한 필수 요소

  • 함께 정한 기한은 반드시 지키려고 노력해요.
  • 문제가 생겨도 그 상황 안에서 일을 진행할 수 있는 방향을 찾으려고 노력해요.
  • 협업 할 때마다 구성원의 건강 상태를 공유하는 것을 중요하게 생각해요.
  • 영리함 보다는 가독성이 중요하고, 코드 품질보다는 기능 구현이 더 중요하다고 생각해요.
  • 금전적인 인센티브보다, 내가 얼마나 의미 있게 기여할 수 있는지가 더 중요하다고 생각해요.
  • 신기술은 필요하다면 도입하지만, 예상치 못한 버그에 책임지고 해결할 수 있도록 스스로 충분한 공부와 단단히 대비를 해둬야 한다고 생각해요. 제 의견대로 팀프로젝트에 MapStruct 매퍼 라이브러리를 도입했다가 발생한 버그에 대해 끝까지 책임을 지고 해결한 적이 있어요. link

EXTRA

🌏 해외 경험

  • 미국 워싱턴 D.C.(2년), 프랑스 파리(3년), 캐나다 몬트리올(4년)에서 거주했어요.
  • 영국, 스위스, 독일, 이탈리아, 크로아티아, 체코, 헝가리, 스페인, 멕시코, 일본 등 다양한 나라를 여행하면서 문화를 체험하고 이해할 수 있었어요.
  • 🪖 카투사로 입대해서 미8군 대구기지사령부에서 18개월동안 복무하면서 부대원 20명의 관리책임을 가진 본부중대 선임병장을 역임했어요. 미군과 한국군 간의 통역과 회의 중재, 행사 진행 등 연락관 역할을 수행하며 모범카투사상과 육군용사상을 받았어요. 이 시간 동안 미군 문화와 용어에 익숙해져, 미군이 등장하는 영화나 넷플릭스 시리즈를 볼 때 특별한 재미를 느껴요.
  • AIESEC 국제 인턴쉽 프로그램에 참여하여, 멕시코 파나메리카나 대학에서 2달간 금융학 Research Assistant로 근무했어요. 홈스테이를 하면서 만난 멕시코 친구들과 주말마다 멕시코 전역을 여행하며 견문을 넓힐 수 있었어요.

🏊🏻 수영

  • 어린 시절 수영 선수반에서의 꾸준한 훈련과 경쟁은 저에게 끈기와 인내를 가르쳐 주었어요. 4년 동안 꾸준히 주 7일, 주말을 포함해서 매일 2시간 이상 수영했고 하루에 6km씩, 왕복 50미터 수영장을 120바퀴 돌며 훈련했어요. 수영에 대한 열정은 제 삶의 중요한 부분을 차지해요.

    힘들고 포기하고 싶은 순간이 무척 많았지만, 이러한 과정에서 많은 대회에 출전하고 입상하는 성과를 이루었고, 아무리 힘들어도 결코 포기하지 않는 강인한 정신력을 길렀어요.

  • 대학교 수영 동아리 소속으로 서울시 수영 대회에 여러 번 출전하며, 건강한 체력을 유지했어요.

🏔️ 산책

  • 산책과 트래킹을 좋아해요. 22년 12월부터 1년 이상 매일 꾸준히 부모님과 1시간씩 관악산 둘레길을 산책하고 있어요. 처음에는 숨이 벅차올라 말 한 마디 하기도 힘들었지만, 이제는 가파른 언덕을 오르면서도 태연하게 일상적인 이야기를 주고받을 수 있을만큼 익숙해졌어요. 덕분에 다져진 지치지 않는 체력이 최고의 장점이에요.

⌨️ 개발 관련 취미

Vim Neovim Obsidian

CONTACT

궁금하신 사항이 있으시면 아래 연락처로 편하게 문의해 주세요. 이른 시일 안에 답변 드리겠습니다!