아직 실무 경력은 없습니다.
대신 만든 것과 막힌 지점을 전부 적어 뒀습니다.

구직 중 · 2026년 상반기 입사 가능 · 서울 출근 가능

프론트엔드를 배운 지 11개월째입니다. 프로젝트마다 무엇을 하려다 어디서 막혔고 어떻게 넘겼는지, 다음엔 뭘 다르게 할지까지 함께 적었습니다. 잘된 것만 적은 포트폴리오는 저도 잘 안 믿기더라고요.

프로젝트 보기

만든 것들

Moving boxes and furniture 이사 견적 비교 React · TypeScript · Vite

막힌 곳 — 조건이 늘어날수록 상태가 엉켰습니다. useState 일곱 개를 useReducer 하나로 합치고 나서야 정리됐습니다.
배운 것 — 상태를 언제 합쳐야 하는지 감이 생겼습니다.
다음엔 — 폼 검증을 직접 짜지 않고 라이브러리를 쓰겠습니다.

↗ 링크 열기
Open book 읽은 책 기록장 React · IndexedDB · PWA

막힌 곳 — 같은 책을 두 기기에서 고치면 하나가 사라졌습니다. 마지막 수정 시각으로 이기는 규칙을 넣어 막았습니다.
배운 것 — 동기화는 "언제 충돌하는가"를 먼저 정하는 일이었습니다.
다음엔 — 충돌을 지우지 말고 둘 다 보여 주고 싶습니다.

↗ 링크 열기
My bus stop 버스 도착 알림 Vanilla JS · 공공 API

막힌 곳 — API가 하루에 한 번씩 502를 뱉었습니다. 재시도와 캐시를 넣고, 실패해도 마지막 값을 보여 주게 했습니다.
배운 것 — 실패했을 때 화면이 뭘 보여 줄지가 기능만큼 중요했습니다.
다음엔 — 오래된 값임을 더 분명히 표시하겠습니다.

↗ 링크 열기
Mac Keyboard 접근성 다시 만들기 HTML · CSS · ARIA

막힌 곳 — div로 만든 버튼이 탭으로 잡히지 않았습니다. 결국 대부분을 시맨틱 태그로 되돌렸습니다.
배운 것 — 접근성은 나중에 붙이는 게 더 비쌌습니다.
다음엔 — 처음부터 키보드로만 한 번 써 보고 시작하겠습니다.

↗ 링크 열기

숫자로

11만든 프로젝트
11배운 개월
842커밋(작년)

이렇게 일합니다

혼자 만들었지만 협업을 염두에 두고 습관을 들였습니다.

커밋 메시지는 무엇을 왜 바꿨는지 한 줄로 씁니다. 브랜치는 기능 단위로 자르고, 머지 전에 스스로 한 번 리뷰합니다.

README에는 실행 방법과 화면 캡처를 꼭 넣습니다. 남이 클론해서 3분 안에 돌리지 못하면 실패로 봅니다.

막혔던 것들

프로젝트 상세에도 적어 두었지만, 특히 오래 걸렸던 일곱 가지는 따로 모았습니다. 문제 → 접근 → 결과 순으로 씁니다.

  1. 상태가 일곱 갈래로 흩어짐문제: 견적 조건이 늘 때마다 useState가 하나씩 늘어 일곱 개가 됐고, 하나 바꾸면 다른 게 어긋났습니다.접근: 서로 같이 변하는 값끼리 묶어 useReducer 하나로 합쳤습니다.결과: 조건 추가가 액션 한 줄로 끝나고, 어긋나던 버그가 사라졌습니다.
  2. 두 기기에서 고치면 하나가 사라짐문제: 같은 책 기록을 폰과 노트북에서 고치면 나중 것이 앞의 것을 통째로 덮었습니다.접근: 문서 단위가 아니라 필드 단위로 마지막 수정 시각을 저장해 비교하게 했습니다.결과: 서로 다른 필드를 고친 경우 둘 다 남습니다.
  3. API가 하루 한 번 502문제: 버스 도착 API가 불규칙하게 502를 뱉어 화면이 빈 채로 멈췄습니다.접근: 지수 백오프 재시도 3회와 마지막 성공값 캐시를 넣고, 오래된 값임을 표시했습니다.결과: 실패해도 화면이 비지 않고, 문의가 없어졌습니다.
  4. div로 만든 버튼이 탭으로 안 잡힘문제: 키보드만으로 페이지를 쓸 수 없었습니다.접근: 대부분을 button·nav·main 같은 시맨틱 태그로 되돌리고 포커스 링을 살렸습니다.결과: 키보드만으로 전체 흐름이 가능해졌습니다. Lighthouse 접근성 68 → 100.
  5. 목록을 내리면 이미지가 튐문제: 이미지가 늦게 뜨면서 아래 내용이 밀렸습니다.접근: 가로세로 비율을 미리 지정해 자리를 잡아 두었습니다.결과: CLS 0.21 → 0.01.
  6. 번들이 1.4MB문제: 첫 로딩이 느려 확인해 보니 날짜 라이브러리 전체가 들어가 있었습니다.접근: 쓰는 함수만 가져오고 큰 화면은 지연 로딩으로 잘랐습니다.결과: 1.4MB → 320KB, 첫 화면 2.6s → 1.1s.
  7. 오프라인에서 앱이 죽음문제: 인터넷이 끊기면 흰 화면이 됐습니다.접근: 로컬 DB를 먼저 읽고 네트워크는 갱신용으로만 쓰게 순서를 바꿨습니다.결과: 비행기 모드에서도 기록을 읽고 쓸 수 있습니다.
  8. 새 항목

매일 쓰는 것

HTMLCSSJavaScriptReactTypeScriptGit

써 본 것

Next.jsZustandViteIndexedDBVitestFigma

올해 목표

테스트 코드App Router접근성 WCAG팀 협업 흐름CS 기초

자격 · 수료

딴 것과 준비 중인 것을 구분해 적었습니다.

  1. 정보처리기사 — 취득2025년 8월. 필기·실기 한 번에 붙었습니다.
  2. SQLD — 준비 중2026년 상반기 응시 예정. 실무에서 쓸 쿼리를 먼저 익히는 중입니다.
  3. 프론트엔드 부트캠프 수료2025년 9월. 6개월 과정, 팀 프로젝트 2건.

여기까지 온 길

경력을 부풀리지 않으려고 날짜와 함께 적었습니다.

  1. 2022–2024물류회사에서 배차 업무를 했습니다. 엑셀 매크로를 짜다가 프로그래밍에 관심이 생겼습니다.
  2. 2025년 3월부트캠프 등록. 처음 두 달은 자바스크립트 문법에서 계속 막혔습니다.
  3. 2025년 9월수료. 팀 프로젝트에서 상태 관리를 맡았고, 여기서 처음 코드 리뷰를 받았습니다.
  4. 2025년 10월 ~매주 하나씩 작은 걸 만들어 올립니다. 지금 열한 번째입니다.
  5. 앞으로팀에서 리뷰를 받으며 일하고 싶습니다. 테스트 코드를 제대로 배우는 게 올해 목표입니다.

연락 주세요

주니어 프론트엔드 자리를 찾고 있습니다. 인턴이나 계약직도 좋습니다.
코드 리뷰나 피드백만 주셔도 감사히 받겠습니다. 답장은 하루 안에 드립니다.

dohyun.yun@example.com 서울 · 출근 가능