물리학과를 나와서 웹 개발자이자 코치로 일하고 있습니다. 서로 다른 사람들과 함께 나아갈 수 있는 시스템을 만들어가는 사람이라고 저를 소개하고는 합니다.
B2B로 노션, 피그마 등의 SaaS 구독 비용부터, 노트북 등의 유형자산까지 관리 할 수 있는 ITAM 서비스 SMPLY를 만들었습니다. 프런트에 전문성을 가진 풀스택 클로저 개발자로 일했습니다.
2024년 2월 ~ 2026년 2월
- 클로저와 클로저스크립트를 이용한 풀스택 개발
- 처음 쓰는 낯선 언어도 금방 적응했습니다. 입사한 날부터 기여를 시작해, 3일만에 풀스택 기능 개발에 들어갔습니다.
- 프런트에 전문성을 가졌지만, 백엔드 기능 추가나 에러 수정부터 설계까지도 직접 도맡으며 백엔드와 프런트의 경계 없이 일했습니다.
- 다른 동료의 평균 3배가 넘는 커밋과 코드를 작성하고, 2배가 넘는 에러를 고쳐서 사내에서 상을 받기도 했습니다.
- 팀 내 프론트엔드 아키텍처 및 테스트 문화 정립
- 입사 당시 백엔드 개발자 둘이서 꾸려나가고 있던 코드베이스에 선언적이고 함수형 다운 아키텍처를 정립해나갔습니다.
- 프런트 테스트가 하나도 없던 코드베이스에 1200개가 넘는 unit, 컴포넌트, 페이지 테스트 케이스를 만들고 유지보수했습니다.
- 사내에서 사용하는 선언적인 siheom-cljs 테스트 프레임워크, 번역 파일 번들러, storybook compiler, test build hook, @tanstack/query reagent adapter 등의 도구와 라이브러리를 직접 개발하고 유지보수했습니다.
- 1000개의 데이터도 견디기 어려워했던 앱을 프로파일링하고 원인을 분석하며 가상화, lazy 등 다양한 최적화를 적용하여 1만 5천 개의 데이터를 한 번에 사용할 수 있도록 만들었습니다.
- 디자이너가 퇴사하고, 개발자도 많지 않은 상황에서 외부 라이브러리를 감싸고 커스텀한 디자인 시스템을 만들고 유지보수했습니다. 덕분에 프런트 경험이 없는 백엔드 개발자도 쉽게 페이지를 제작할 수 있을 정도로 생산성이 올라갔습니다.
- 도메인 주도 설계 첫걸음, 유닛 테스팅 등의 책들을 가지고 스터디를 진행하고, 기술이 아닌 도메인 중심으로 공통 언어를 만들어가기 위해 노력했습니다.
2023-04 ~ 2024년 2월
원래 예술 교육 플랫폼이었지만, 아이돌과 엔터테인먼트 신사업으로 진출한 회사입니다. 저는 신사업 팀의 처음부터 프런트엔드 개발자로 입사하여 상장 직전까지 일했습니다.
- 프롬 스토어, 메시지 webview 등의 신규 서비스 초기 멤버로 개발부터 유지보수
- 소속사의 요구에 따라 늘 일정이 당겨지고, 개발자 수도 적었지만. 많은 기능을 정확하게 적시에 출시해왔습니다.
- 기획자, 디자이너 분들과 자주 피드백과 제안을 주고 받으며 제품을 발전시켰습니다.
- 비즈니스 로직을 최대한 순수 함수로 분리하여, 기획의 변경사항에 빠르게 대처할 수 있었습니다.
- 팀에 잘 반영되진 못했지만 DDD와 애자일 스터디 등도 진행했습니다.
- 이슈 추적과 장애 대응
- 클라우드, 크로스 브라우저, 결제 대행사, 프레임워크, 라이브러리, 번들러 등의 이슈와 장애를 추적하고 해결해왔습니다.
- 직접 AWS와 sst 같은 IaC 도구를 이용해 장애극복 아키텍처를 구축했습니다.
- 테스트 문화 개선
- 수동 테스트에 의존하다보니 타입스크립트를 사용해도 스프린트마다 수 십 개의 에러가 발생했었습니다.
- e2e / component / unit test / storybook 등을 도입하고 동료 분들에게도 교육하였습니다. 플랫폼과 스타일 이슈 몇 가지 외에는 에러가 나오지 않게 되었습니다.
- 해외 초기 로드 성능을 30초에서 3초로 개선
- 이미지 최적화 400kb -> 23kb
- 다이내믹 서브셋 폰트 최적화 2mb -> 195kb
- 미들웨어를 이용해 SSG한 페이지를 사용자 설정에 맞게 미리 렌더
- 중국 UC 등 구형 브라우저 대응
- swc와 next 빌드 이슈 등의 원인을 추적하여 해결
- astro, qwik 등 vite 프로젝트에서 pandacss를 레거시 브라우저에서도 호환되게 처리
2022-02 ~ 2022-08
독일의 ERP 회사의 한국 지부에서 계약직으로 일했습니다. 클라우드 CI/CD 인프라 팀은 SAP의 ERP와 데이터베이스 개발자들을 위한 테스트 CI 자동화와 스케쥴링, 버그 기록과 추적, 배포 관리 등의 플랫폼을 유지보수하는 팀이었습니다.
저는 5개 이상의 팀을 돌면서 동료 분들과 함께 프론트엔드 UI를 개발하고, 테스트하고, 코칭을 하고 전도를 했습니다. 공식 직함은 테스트 엔지니어였지만, 팀내의 호칭은 에반젤리스트(전도사)였습니다.
러시아의 우크라이나 침공에 따른 경제 제제 인해 회사 경영이 악화되었고, 모든 계약직의 계약 연장이 취소되어 퇴사했습니다.
- Typescript GraphQL server 리팩토링과 테스트
- 비일관적이고 잘못된 타입들을 고쳤습니다.
- DB에 의존적인 구조에서 순수한 함수적 로직을 분리해냈습니다.
- 팀내 테스트 가이드 작성
- 회사 디자인 가이드와 WAI-ARIA 표준에 맞는 UI 컴포넌트 개발
- 쿠버네티스 클러스터 관리 일렉트론 앱 개발
- 매일 페어 프로그래밍을 하고 퇴근 전에 머지하는 지속적 통합을 했습니다.
- 윈도우 파워쉘 자동화
- 환경변수를 불러오지 못하는 이슈를, cjs 라이브러리를 esm으로 직접 포팅하여 해결
- 기존 express 서버를 어댑터를 이용해 IPC로 마이그레이션
- 1.2기가 번들 사이즈를 70mb로 개선
- 펄 레거시에 vue web component로 새로운 기능 추가
- vue2 js 레거시 테스트 2만줄을 @testing-library로 마이그레이션
- 커버리지에 치중한 테스트들을 기존 팀과 합의점을 찾아가며 생산성에도 도움을 주는 테스트로 개선했습니다.
- vue2의 구현 상세에 의존하는 테스트를, dom 과 같은 웹 표준에 기반한 테스트로 바꿨습니다.
좋은 기회로 그린랩스 프런트 개발자이셨던 김춘구 님과 함께 공동 제작했습니다. 이 강의는 타입과 펑터 등의 개념을 중심으로 함수형의 다양한 측면을 다룹니다. 자료조사부터 테스트 강의, 커리큘럼과 대본 작성, PPT 제작을 함께 했습니다.
2024년 6월 ~ 현재
가장 취약한 사람들에게 돈을 버는 코칭/교육 업계의 문제를 해결하기 위한 코치들의 모임입니다. 저는 대가를 받지 않고 여전히 다양한 분들을 코칭하고 있습니다. 사이트를 오픈소스로 다양한 분들과 함께 개발하였습니다. 이메일, 애널리틱스, 에러 로깅, 협업툴 등을 라즈베리파이 서버에 셀프 호스팅 하면서 인프라 관리도 직접 하고 있습니다.
2020-04 ~ 2024년 12월
저는 원래 데이터 분석을 했었는데요. 데이터 분석 스터디를 성공적으로 이끌었던 경험에서 자신감을 얻어, 개인사업자로 일을 시작한지 7년이 되었습니다.
프론트, 백엔드 개발자 뿐만 아니라 게임 프로그래머, 데이터 과학자, 기획자, 디자이너, 대학의 연구자 등 다양한 분들이 문제들을 해결해나가실 수 있게 돕고 있습니다.
다음은 피코치 분의 소감입니다.
"요즘 서로의 욕구를 이해하고 표현하려 노력하면서. 기술적인 대화나 협업 수준도 올라가고. 이렇게 도움을 주고 받는 관계는 처음이네요. 회사 다니는 게 즐거워요."
저는 학습과학과 창의적 문제해결에 특히 관심을 가지고 이론적으로도 많은 공부를 하고, 실무적으로도 연습을 해왔습니다. 누군가 문제를 이야기하면 관련된 책을 줄줄 읊을 수도 있습니다만, 학문적인 깊이는 부족한 점을 아쉬워하고 있습니다.
그보다 제가 자랑스럽게 여기는 건 제가 모르는 것을 코칭할 수 있다는 것입니다. 동료나 피코치가 가진 지식과 잠재력을 끌어내서 문제를 해결하는 것을 즐기고, 그게 더 성공적일 때가 많았습니다. 한 명의 대단한 사람보다는, 평범하지만 다양한 사람들이 모이면 더 대단한 일을 해낼 수 있다고 믿습니다.
저는 항상 의미 있는 일을 하려 하고, 그게 항상 거창한 것만은 아니라 생각합니다. 맡은 일을 잘 하는 것이죠. 어디서든 적극적으로 문제와 고통을 찾아내서 고민하고 해결하려 합니다. 고집스러워 보일 수도 있겠습니다만, 제품과 서비스가 제 생각이나 주장보다 우선이라 생각합니다.
기술자의 사회적 책임을 중요하게 생각하게 생각합니다. FOSSforAll(자유 오픈소스 네트워크)의 정회원이자, A11yKR (웹 접근성 코리아)의 일원으로 접근성 표준 문서를 번역하고, 접근성에 대한 발표와 강의를 하고 있습니다. 최근에는 성평등가족부 포용기술 자문위원으로 위촉되기도 하였습니다.
세상에 다양한 언어와 프레임워크가 있습니다만, 웹 애플리케이션이라면 같은 웹 표준 위에서 돌아갑니다. ARIA와 같은 웹 표준에 기반해서 테스트를 짜면 react에서나 vue에서나 심지어 clojurescript에서도 일관된 방식으로 테스트할 수 있고 학습 곡선이 적습니다. 상황에 맞게 unit, component, e2e 등의 테스트로 효과적인 피드백을 얻을 수 있게 하려는 편입니다.
특히 도메인의 로직을 모델링하고, 기획가 의사소통하는 도구로서 test case를 중요하게 생각합니다. 새로운 기획에 변경이 생기면 먼저 테스트 케이스를 설계하고, 하나씩 구현해나갑니다. 덕분에 기획 변경을 빠르게 반영하면서도 안정적으로 소프트웨어를 출시할 수 있었습니다. 기획 요구사항을 받은지 15분 만에 구현부터 테스트, 배포까지 완료한 적도 있습니다.
저는 스칼라나 타입스크립트, 리스크립트와 같은 정적 타입 함수형 언어를 공부하다가, 클로저 같은 동적 타입 함수형 언어를 이용한 회사에서 실무를 2년간 경험하기도 했습니다. 함수형 강의를 제작한 적도 있으며, 함수형의 여러 실용적인 개념들을 전도하고 있습니다. 함수형 컨퍼런스 LiftIO에서 순수함수 적정기술을 주제로 발표를 하기도 했으며, 최근 2년 간은 주최측 스탭으로 참여하기도 했습니다.
함수형의 좋은 점은 많지만. 저는 계산을 합성하는 흐름을 단순하게 해주는 게 좋습니다. 테스트하기도 쉽고, 들어오는 요구사항을 거의 그대로 함수로 모델링할 수 있을 때도 많습니다.