AboutMe
2025.2
제 개인적인 흥미와 더불어 실용적인 개발을 지향하는 성향으로 인해 nix, elixir를 사용한 풀스택 개발자로 전향하고자 하는 강햔 의향이 있습니다.
특히 ash framework의 디자인 철학에 깊게 공감하고 있습니다.
현재 phoenix, ash framework를 학습하고 개인 프로젝트를 진행하고 있으며 해당 업으로는 경력과 조건들을 상당 부분 포기하더라도 가고자 하는 의지가 있으니 관심 있으신 분은 연락 바랍니다.
안녕하세요. 저는 4년 차 프론트엔드 개발자로, 리엑트, 타입스크립트를 주로 사용하며 DDD, Hexagonal 아키텍처, 그리고 Feature Sliced 패턴 등에서 얻은 통찰력을 바탕으로 한 효율적인 개발에 대해서 관심이 많습니다.
저는 개발자들이 어떻게 하면 성장하면서 효율적으로 일할지에 대한 방법을 고민하며, 논의하고 실무에 적용하는 것을 좋아합니다. 이전 회사들에서 코드리뷰, KPT, PR, 스터디 발표 등 다양한 문화를 만들고 개선했습니다.
지금까지 프론트엔드 팀에서 회사의 중요 프로젝트 구성을 총 4번을 했습니다. 늘 프론트엔드에서의 아키텍처를 담당했으며 기술 선두적인 역할을 해왔습니다. 실무자로써 공통 컴포넌트, 공통 모듈, 도메인 스키마 정의 및 활용, 회사의 핵심 비즈니스 모델 같은 여러 기능들을 작업했습니다. 프로젝트의 A-Z를 여러 번 경험하면서 유연함이 필요함을 배우고 틀에 얽매이지 않게 적용시킵니다.
제 성격은 호기심 많은 성격으로, 새로운 기술을 배우거나 깊게 파고드는 것을 좋아합니다. 반짝이는 눈으로 프로젝트에 가치를 더하는 더 좋은 방법을 찾는 것을 진심으로 즐깁니다. 내향적이지만 동료들과 협력하고 토론하는 것을 좋아합니다.
효과적으로 일하기 위하기 위해서는 협업이 필요하고, 좋은 협업은 상호 신뢰에서 나온다고 믿습니다. 그래서 저는 항상 프로젝트의 동료들과 서로 신뢰를 쌓고, 동료의 고충을 이해하며, 같이 문제를 해결하고자 하는 태도를 가지고 있습니다.
Main Tech Stack
- typescript, react, css, remix.run, fp-ts
- nextjs, prisma, tailwind, react-query, html, gsap, effect community, d3(visx)
Studying
Category theory, Elixir, Phoenix, Haskell, Rust, effect community
프론트엔드 개발자 대상으로 온라인&오프라인 합동으로 참여할 수 있는 모각코를 운영 중입니다.
참여 원하시는 분은 프론트 모각코 ← 확인해주세요 😋
경력 사항
경력 사항은 날짜 내림차순으로 작성되었습니다.
텔레스코프
기간: 2024.5 ~ 2024.11
Teck stack
nextjs, tailwind, strapi
하루 4시간 이상 프리랜서로 일했습니다.
주요 기능인 여행 플랜 관련해서 여행 플랜 작성, 여행 플랜 공유 등의 기능을 만들었습니다.
리멤버
2023.1 ~ 2023.3
퇴사 사유
개발팀에서의 현재 방향, 회사에서 개발팀에게 하는 기대와 제가 팀에 기여할 수 있는 것으로 기대 했던 것들이 맞지 않아 나오게 되었습니다.
프리윌린
계약 기간: 2023.08.08 ~ 2023.12.29 (5개월)
기존 프로젝트 리뉴얼에 대한 아키텍쳐, 프로젝트 설계 메인 담당으로 계약했습니다.
가지고 있던 문제점들을 모두와 지속적인 커뮤니케이션을 통해 해결 방법을 고안했습니다.
코딩 작업으로는 코어한 모듈, 라이브러리, 공통 컴포넌트를 작성하고 학생의 자기주도학습 프로젝트를 했습니다.
- core: domain base
- service: trait base
- ui: feature base
비즈니스 도메인을 기반으로 한 통합 Hexagonal, Onion, Clean, Feature Sliced(front단) 에 프로젝트에 맞게 partial하게 적용을 시키는 구조를 고안했습니다.
도메인 베이스를 기반으로 정의, 폴더 스트럭쳐링을 나누었습니다.
특성 기반의 패턴을 두어 Rust의 Trait, Struct의 개념을 활용합니다.
이는 비즈니스 도메인 스키마와 별도로 어플리케이션 서비스에서 주로 활용되어 집니다.
여러 도메인에서 동일 trait에 대한 비즈니스 로직을 특성 단위로 분리함으로서 작업 공수가 크게 줄어듭니다.
하위 레이어단에서 도메인 비즈니스 로직에 의존되는게 아닌 trait에 의존되는 형태로 구성할 수 있어서 융통성 있는 구성이 가능합니다.
상태관리는 유저의 use case 특성에 맞게 사례별로 나누었습니다.
앱 기반의 상태는 persist(local, session storage)
Route 기반의 상태는 스키마를 기반으로 한 RouteParams, SearchParams를 적극 활용합니다.
context기반의 상태는 기존 팀원들에게 익숙한 mobx를 사용합니다.
react-router의 DataApi를 활용하여 기존의 직렬적인 네트워크 요청을 병렬, 또는 선 fetch 후 바로 그리는 형태로 CLS를 최적화 할 수 있는 구성을 합니다. 이로 인해 비약적인 성능 개선을 할 수 있습니다.
3의 법칙이라는 말이 있습니다.
비슷한 케이스가 3번 반복된다면 추상화를 고려하자는 말인데요.
거기서 한번 더 고려해서 비슷한 패턴을 찾아서 기존의 구성되어 있던 레이어에 Trait 형태로 일반화 시키는 게 좋다고 생각합니다.
참고한 내용들)
여러 article, framework, library, programming language principle
partial DDD series, Feature Sliced, All together(DDD, Hexagonal, Onion, Clean, CQRS …)
DDD, Hexagonal, Onion, Clean, CQRS, … How I put it all together
Доклад: Feature Sliced — Архитектура Frontend-проектов / Илья Азин
젤리페이지
재직 기간: 2023.03 ~ 2023.06 (3개월)
Web Frontend 팀(4인) 테크 리드
웹 프론트엔드 프로덕트 프로젝트들 전체 설계
turborepo + pnpm 모노레포로 제작하였으며 내부의 공통 모듈, 스타일, 컴포넌트 패키지를 목적에 따라 분리
역할
- 전체 프로젝트들 구조 설계하고 내부의 코어 로직 개발 및 공용 컴포넌트 개발
- 프로덕트 전반적인 도메인에 해당하는 공통 스키마를 정의
- 코드 스타일, git 브랜치, api 테스트, 단일 테스트, 성능 최적화, 구조, 서버 컴포넌트, 클라이언트 컴포넌트, ISR, 라우팅 등에 대한 컨벤션을 정하고 적용시켰으며 팀원들을 교육하였습니다.
- 3개의 프로젝트를 동시에 진행하면서 각각의 프로젝트들이 일정에 맞출 수 있도록 유동적으로 투입되어서 작업했습니다.
퇴사 사유
입사 전부터 정해져있던 무리한 공식 일정과 여러가지 역할로 인해 주로 새벽까지 일하고 매 주말에도 일하면서 건강이 나빠져 마일스톤1에 맞춰 제작 후 퇴사했습니다.
Projects
-
JellyPage2
팀원: PO 1, 기획 1, 디자이너 2, DBA 1, 백엔드 3, 프론트 4(본인 포함), 플러터 1
Teck stack
next13 app, turborepo, tailwind, storybook, zod, zodios, react-query, valtio, effect/data개요
다양한 디바이스(모바일, pc)에서 독서를 할 수 있는 cross platform앱 입니다.
플러터 앱 안에 들어가는 웹앱으로 구성되어 있습니다.프로젝트 전체 구조, 기술스택 설계와 스키마 정의, 더불어 보안, 인증, jwt 토큰 관련 작업들을 했습니다.
6가지가 넘는 다양한 회원 전환, 회원 통합, 회원 삭제, 가입, 회원 선택에 대한 케이스를 통합하는 로직들을 구성했습니다.
보안성을 위해 nextjs 서버측에서 rest api를 통해 시크릿키를 통해 구글, 애플, 네이버, 카카오, 젤리 로그인을 구현했습니다.
추가로 온보딩 프로세스에 대한 기능, api 작업들을 하였고, 여러 케이스에 대한 온보딩 시작 분기, step 분기 처리를 하였습니다. -
JellyReading
팀원: PO 1, 기획 1, 디자이너 1, DBA 1, 백엔드 2, 프론트 2(본인 포함)
Teck stack
next13 app, turborepo, tailwind, storybook, zod, zodios, react-query, valtio, effect/data
개요
문해력을 향상시키기 위한 비문학, 문학에 대해서 지문별로 다양한 케이스의 학습을 할 수 있는 학원을 위한 솔루션 입니다.
개발사항
프로젝트 전체 구조, 기술스택 설계와 스키마 정의를 하였습니다.
구조학습 기능을 작업하였습니다.
문장, 단어와 관련된 공통 컴포넌트들을 제작했습니다.
- JellyReading CMS
팀원: 기획 1, 백엔드 1, 프론트 1 (본인)
Teck stack
next13 app, turborepo, prosemirror, remirror, tailwind
개발사항
remirror와 prosemirror을 통해 지문, 문단, 문장을 구별해서 저장할 수 있는 에디터를 만들었습니다.
두디스
재직 기간: 2022.7 ~ 2023.01 (6개월)
Front-End Engineer로 근무 (1인)
메인 프로덕트 전체 frontend project 설계 & 개발, prisma를 사용한 데이터베이스, 백엔드 비즈니스 로직 작성
turborepo를 도입하여 monorepo프로젝트로 변환
퇴사 사유
프로젝트를 성공적으로 마치고 지원사업에 통과했으며 계약상의 종료입니다.
Projects
-
소재 찾기
팀원: PO 1명, 기획자 1명, 디자이너 1명, 백엔드 1명, 프론트엔드 1명(본인)
Teck stack
nextjs appDir, ts, postcss, tailwind, ts-rest, fp-ts, zod, valtio, iron-session, storybook, visx개요
대시보드에 통계와 그래프, 최신의 트랜드를 통하여 크리에이터의 의사결정을 도와주는 AI, 빅데이터 기반의 시스템입니다.
개발 사항
매번 프로덕트에 맞는 차트 라이브러리를 찾는 수고와 디자이너에게 차트의 디자인적 제한 요소를 주기 싫어 svg, visx(d3)를 공부하여 디자이너의 요구사항에 따라 그래프를 직접 그리고 있습니다.
nextjs13의 appDir을 통한 nested layout을 활용하며 nestjs를 사용하는 백엔드 개발자와의 도메인을 맞추기 위해 공통 라이브러리를 사용하며 zod Schema, ts-rest Contrect(API Route)를 공유합니다.
Schema를 공유함으로써 백엔드단 모델과 클라이언트단의 모델과의 불일치가 발생할 수 없으며 ts-rest를 사용함으로써 RPC 방식으로 백엔드에게 요청을 typesafe하게 함수를 호출하듯 사용할 수 있습니다.
이로 인해 불필요한 커뮤니티 비용의 절감과 typesafe한 RPC 통신을 할 수 있습니다.
-
요청 프로젝트
팀원: PO 1명, 데이터 1명(devops, 인증, 약간의 비즈니스 로직), 백엔드 비즈니스 로직 (2인, 본인 기여도 80%), 프론트엔드 1인(본인)
Teck stack
nextjs, ts, prisma, trpc, chakra-ui, emotion, aws-sdk, zustand, zod, fp-ts, iron-session, 반응형 pwa, nextjs와 prisma, trpc를 이용한 대부분의 백엔드 비즈니스 로직 개발, api 설계개요
크리에이터한테 펀딩금을 걸고 글과 이미지를 통해 컨텐츠를 요청하고 다른 사람이 펀딩한 것에 펀딩하고 크리에이터의 심사 과정을 거쳐 요청이 거절되거나 승락될 수 있는 프로젝트 입니다.
개발 사항
백엔드 개발자가 따로 없어서 nextjs의 서버에서 prisma를 사용해 백엔드 비즈니스 로직들을 작성했습니다. 그리고 trpc를 통해 nextjs 서버와 클라이언트 간에 RPC 통신을 하였으며 zod schema 스키마를 통한 벨리데이션, typesafety, transform의 효과를 챙겼습니다.
각 기능을 도메인별로 분리를 하였으며 article(독립 기능 단위), contents(페이지 단위)의 컴포넌트 구분을 두어 각 기능이나 페이지를 독립적으로 사용할 수 있게 하였습니다.
그로 인해 페이지를 모달로도 띄울 수 있었으며 SEO를 위해 모달로 뜰때 URI를 바꾸어주고 새로고침을 하면 해당 URI에 해당하는 페이지를 보여주게끔 함으로써 사용자 편의성과 SEO를 둘 다 잡았습니다.
댓글 작성 및 에디터를 통한 글 작성, 이미지 aws에 업로드, 한글 검색 및 검색 결과 URL을 통한 유지. 검색 결과에 매칭되는 글들 하이라이팅 등을 작업했습니다
-
두디스 렌딩
팀원: 프론트엔드 1명(본인)
Teck stack
nextjs, ts, gsap, tailwind, google sdk사용하여 spreadsheet에 폼 데이터 저장nextjs의 SSG로 렌딩 페이지를 제작하였으며 gsap를 이용해 스크롤에 따른 fade-in 애니메이션.
tailwind를 이용한 스타일링.
프리윌린
재직 기간: 2019. 8 ~ 2022. 2 (2년 7개월)
Front-End Engineer로 근무 (총 프론트엔드 팀 6명)
초기 멤버로서 여러 문화(코드리뷰, 회고, KPT, 개발 발표회, 퇴근 후 스터디, Personal Review, 핵심 기능 개발 완료 후 리뷰 등)을 주도하에 만들고 지속적인 디벨롭을 하였습니다.
초기 앱만 있을때 입사해서 웹버전을 개발하고 알토스 시리즈A 투자를 받았으며 현재의 매쓰플랫2까지 개발 완료 했습니다.
퇴사 사유
조직이 커지면서 업무 방식이 점점 워터폴화 되고 주도적으로 일할 수 있는 파이가 점점 줄어드는 것을 느꼈습니다.
또 의사 결정 단계가 많아지고 과정이 복잡해져서 빠르게 새로운 시도를 해보기 어려운 환경이 되었습니다.
그래서 새로운 시도를 할 수 있는 문화, 주도적으로 일할 수 있는 환경에서 일하고 싶은 갈증이 느껴져서 퇴사하게 되었습니다.
Projects
-
Mathflat2 구축
팀원: PO 1명, 기획자 1명, 디자이너 2명, 백엔드 4명, 프론트 4명 - 본인 기여: 아키텍쳐∙구조 90%, 공용 컴포넌트 50%, 프로덕트 25%
Tech stack
react, typescript, mobx, emotion, storybook, react-hook-form, react-query개요
기존의 네이티브 앱을 대체하면서 기능들과 사용성을 개선하기 위해 Mathflat2를 새롭게 만드는 결정이 되었습니다.
태블릿을 통해 프린터 서버를 통해 보고서를 프린터로 바로 뽑는 케이스가 많았으므로 네이티브 앱으로 감싼 웹앱으로 했습니다.
개발 사항
전반적인 프로젝트 아키텍쳐, 구조설계와 규범을 정했습니다.
레이어단을 DTO, Api, Controller, Service, Repository를 나누고 그 내부의 모든 자료형들은 DTO를 넘기는 방식으로 하였습니다. (백엔드단과 단어 의미가 햇갈릴 수 있습니다. 자세한 내용은 여기 8번에 적어놓았습니다.)
WeekMap을 활용한 클래스의 레퍼런스 값을 통해 스토어를 활용해 각 목적에 맞는 Repository를 구분해 전역, 컴포넌트, 동적 상태 관리를 쉽고 효율적으로 할 수 있게 하였습니다.
공용 컴포넌트의 비중을 조금 높게 작업을 하였습니다. 그 과정에서 코어한 컴포넌트의 확장성, 유연성에 대한 깊은 고민을 하여 단계적, 부분적 적용하여 파생되는 컴포넌트를 생성할 수 있는 패턴을 적용하였습니다. 그 외 수업, 숙제, 진도, 채점, 출결 관리, 선생님의 권한 관리, 학생 관리, 앱 설정 등을 작업했습니다.
구형 태블릿에서 발생하는 웹앱의 성능 이슈를 해결하기 위해 강도 높은 성능 최적화를 했습니다. (번들 사이즈 최적화, 데이터 캐싱, react query 캐시, 컴포넌트 렌더링 최적화, 레이아웃 시프트 최적화 등)
-
PDF Generator 운영, 피쳐, 리뉴얼
팀원: 백엔드 1명, 기획자 1명, 디자이너 1명, 프론트엔드 1명
Tech stack
puppeteer, react, typescript, emotion, c3개요
매쓰플랫으로부터 학생의 교재, 학습지 진도와 성적을 기반으로 종합 보고서를 만드는 puppeteer를 이용한 보고서 pdf 제네레이터입니다.
개발 사항
처음에 유지 보수를 하면서 자잘한 차트와 내용 수정을 했습니다.
점차 새로운 피쳐들이 추가 및 리펙토링을 하였으며 오래된 패키지들을 업데이트 하였습니다.
그 후 보고서 리뉴얼을 하며 디자인을 개편하였고 기존의 레거시를 전부 리펙토링하여 컴포넌트를 분리하고 스타일을 모듈화 해서 유지보수 하기 쉬운 구조로 바꾸었습니다.
-
Mathflat2 렌딩 페이지
퍼블리싱 외주 작업 된 것에 반응형과 모션을 추가, 모션 애니메이션을 작업하고 그 외 수정, 유지 보수 작업을 하였습니다.
기여
반응형•모션 80%, 그 외 30%
Tech stack
react, gsap, tailwind
-
Mathflat1 구축
팀원: 기획•디자이너 1명, 백엔드 2명, 퍼블1∙프론트엔드 2명 - 본인 기여 40%
Tech stack
react, styled-component, mobx개요
Mathflat이라는 수학 선생님을 위한 웹 종합 솔루션을 제작하였습니다.
기존에 앱으로 있던 것을 웹버전으로 만들면서 웹 환경에 적합하게 앱과 다르게 디벨롭되었습니다.
학생, 반, 선생님 관리, 출결 관리, 문제 관리, 학습지 만들기, 교재 만들기, 숙재내기 (학생 앱으로 숙제 나감) 학생의 진도와 점수 채점, 관리. 학생의 성적에 대한 보고서를 출력할 수 있는 프로덕트 입니다.
수천개의 수학 학원 및 학교에 사용되었습니다.
개발 사항
입사하자마자 프론트엔드에 단 1명 있는 사수가 바로 다음날 퇴사를 해서 고생을 했습니다. 기존에 redux와 mobx를 섞어 사용하고 있어 redux를 mobx로 변환하였으며 create-react-app v1을 eject해서 사용 중이라 최신의 cra로 바꾸는데 고생했습니다..
스크립터로 활동하다 리엑트를 사용해 회사에서 사용한 처음 프로젝트라 우여곡절이 많았지만 이 프로젝트로 인해 리엑트에 대한 숙달을 하게 되었습니다.
공용 컴포넌트 제작, 학생 채점 및 수업 진도 관리, 학생 출결관리, 학생 관리, 선생님 관리 등을 작업하였습니다.
이트라이브
재직 기간: 2016. 11 ~ 2018. 11 (2년 1개월)
UX팀의 Scripter 프로젝트에 스크립트 로직, 사용자 인터렉션에 대한 스크립트, 애니메이션에 대한 스크립트로 활동을 했습니다.
퇴사 사유
재직 당시 SPA라는 개념이 대중화되면서 프론트엔드 직무에 대한 관심이 생겼습니다.
그 동안 퍼블리싱 한 페이지에 스크립트를 짜고 백엔드 로직과 섞이면서 굉장히 많은 커뮤니케이션 비용이 들었습니다.
백엔드 로직과 한 페이지 내에 섞이지 않는다는 점과 컴포넌트를 통해 재사용한다는 것이 제 심금을 울렸고, 해당 직무로 커리어를 발전시키고 싶어 퇴사했습니다.
-
Tech stack
gsap, jquery, javascript, swiperux팀의 scripter로 활동하며 20개 이상의 프로젝트를 하였습니다.
모든 프로젝트는 프로젝트당 스크립터 1인(본인 기여 100%)로 참여했습니다.그 중 작업량이 많았던 프로젝트들 위주로 포트폴리오에 담았습니다.
학력 사항
동양미래대학교 (2011. 3 ~ 2016. 2)
컴퓨터 소프트웨어정보과 졸업 (학점 4.04/4.5)
-
2015 삼성전자 SCSC-C 창의공학 경진대회 최우수
원격 조종하며 웹으로 영상 결과물 공유하는 라즈베리 CCTV 제작 - 웹 파트 담당.
-
동양미래대학교 2015 스마트 SW 개발 경진대회 최우수
스토리맵이라는 작품으로써 스마트폰으로 GPS로 실시간 사용자의 위치를 찍으며 사진을 찍으면 현재 위치에 사진이 등록되게 한 위치기반 SNS이며 구글맵 임베디드로 타 사이트에 배포 가능하게 제작.
팀장 역할 담당
Python 웹서버 Framework인 Django 사용, MariaDB Django ORM 연동 후 운영
Side Projects
덮집회의 (2022. 7 ~)
백, 프론트 개발 모든 분야를 맡아서 했습니다.
도메인 기반으로 폴더 구조를 구성했고 데이터 모델링을 적극적으로 하되 가벼운 프로젝트니 레이어단을 복잡하게 구성하지 않고 API, domain, view단 정도로 구성했습니다.
remix.run을 통한 nested layout을 사용하여 각 페이지간에 공용 데이터를 상위 레이아웃으로 받아와 기존의 nextjs의 페이지처럼 페이지마다 필요한 데이터를 전부 가져올 필요가 없습니다.
그 동안 postcss만으로도 충분하다고 생각했는데, 호기심이 생겨 tailwindcss를 시도했습니다. 생각 외로 좋더라구요.
postgresql을 supabase에 올린 후 prisma를 통해 서버리스 서버단에서 컨트롤했습니다.
tailwind랑 잘 맞는 조합은 radix-ui인 것 같습니다. headless-ui가 기능이 부족해 headless한 ui라이브러리를 찾는 중에 발견했는데 정말 좋았어요.
fp-ts를 통한 함수형, 타입클래스를 적극 활용했습니다.
리펙토링하며 fp-ts가 3버전으로 올라 fp-ts/schema, fp-ts/core를 통해 domain schema 정의를 하였습니다. 사용에 대한 자세한 내용은 이 글을 봐주세요.
구성원: 디자이너 1, 개발자 1(본인)
기여: 개발 전체 100%
Tech stack
remix(ssr), immer, prisma, postgresql, fp-ts/schema, fp-ts/core, supabase, valtio, postcss, tailwindcss, vercel, headless-ui, radix-ui
Posted (2022. 3 ~)
fp-ts의 TaskEither, TaskOption, IO 등을 활용한 Railway programming 패턴을 활용해 서버사이드에서의 에러처리에 중점을 두었습니다.
비즈니스 로직에도 Monad기반의 functional한 프로그래밍 로직을 주로 사용하였으며, 각각의 큰 개념을 도메인으로 묶었습니다.
remix 특유의 nested layout을 활용하여 outlet context로 상태를 관리했습니다.
데이터 전달은 주로 remix server side의 쿠키 세션 스토리지를 통해 했습니다. (쿠키 세션 스토리지는 클라이언트의 쿠키를 통해 서버에 있는 세션 데이터를 암호화하여 헤더에 httpOnly로 넘겨 서버 - 클라이언트간에 데이터를 유지, 전달하는 방법입니다. )
백엔드 개발자가 회사 업무가 바빠 중단되었습니다….🥲
구성원: 디자이너 2, 백엔드 1, 웹 프론트 1(본인), IOS 개발자 1, 안드로이드 개발자 1
기여: 웹 100%
Tech stack
remix(ssr), fp-ts, chakra-ui, emotionjs, postcss, vercel
장기 학습 프로젝트
추상대수학
elixir
Rust in Action and The Rust Programming Language
get programming with haskell
ETC
TMI Info
age: 31
mbti: INTP-A
email: rjcnd123@gmail.com
tel: 010-5300-3***
동양미래대학 소프트웨어정보과 수료
육군 만기 전역
instagram
자격증
정보처리기사(2020)
정보기기운용기능사(2012)
그래픽스운용기능사(2012)
학원
패스트 파이브 리엑트 과정 수료(2019)
그린 컴퓨터 아카데미 프론트엔드 과정 수료(2016)