이야기
프로그래밍을 접하다
열 살에 스크래치라는 블록 코딩 도구로 프로그래밍을 처음 접했습니다. 열두 살 때에는 방과 후 과학 활동에서 Python과 Arduino로 메추리알 부화기를 만들며, 동작하는 무언가를 만드는 것에 재미를 느꼈습니다. 중학교에 들어가서는 프로그래밍을 하는 일이 뜸해졌지만, 이때의 경험은 개발자라는 진로를 선택하는 데 큰 영향을 주었습니다.
소프트웨어마이스터고등학교
빨리 개발자가 되고 싶다는 막연한 생각으로, 광주소프트웨어마이스터고등학교에 진학했습니다. 학교는 기숙사 환경이고, 학생들 위주의 팀 활동을 권장했습니다. 덕분에 동기들과 선후배들을 만나 여러 프로젝트를 진행할 수 있었습니다. 가장 기억에 남는 것은 입학 지원 서비스인 Hello, GSM입니다. 서비스의 첫 시작부터 함께했으며, 현재까지도 후배들에게 이어져 운영되고 있는 서비스이기도 합니다. 팀 활동에서 배운 개발 지식과 함께한 사람들과의 관계는 지금도 많은 도움이 되고 있습니다. 오픈소스 활동도 이때 처음 시작했습니다. 후배의 오픈소스 활동을 보고 관심을 가진 것을 계기로, 지금은 취미가 되어 꾸준히 참여하고 있습니다.
첫 회사
본딧커뮤니티라는 10명 남짓의 작은 회사에서 2년 가까이 백엔드 개발자로 일하며, 북미 대학생 대상 커뮤니티 서비스 IGOTIN의 백엔드 전반을 담당했습니다. 첫 실무를 경험하며, 코드 품질만을 추구하는 것만으로는 좋은 제품을 만들 수 없다는 점을 배웠습니다. 결국 중요한 것은 실제로 사용되는 제품을 만들고, 사용자에게 가치를 제공하는 것이라고 생각하게 되었습니다. AI의 발전으로 그동안 쌓아온 구현 중심 역량의 가치가 낮아지는 것을 체감하게 되었고. 앞으로의 변화를 예측하기 어려운 만큼, 어떤 환경에서도 유효할 기본기를 쌓고자 퇴사 후 크래프톤 정글에 참여했습니다.
크래프톤 정글
정글에서 여러 교육을 진행하고, 기대하던 운영체제인 Pintos를 직접 구현하기도 하면서, 컴퓨터 시스템을 더 잘 이해할 수 있게 되었습니다. 제가 들어간 12기는 AI를 활용하는 방향으로 교육 과정 변화를 시도한 시기였고, OpenAI의 Pro 20x 플랜을 지원받을 수 있었습니다. 이 기회에 적극적으로 AI를 사용해 보며 여러 작업과 학습, 사이드 프로젝트에 활용했습니다. 이런 배움 외에도, 다양한 배경의 사람 수십 명과 합숙하며 함께 활동한 시간이 특히 기억에 남습니다. 또 이런 기회가 있을까 싶습니다.
현재
다시 개발자로 일할 준비를 하고 있습니다. 개인 프로젝트, 오픈소스, 코딩 테스트, 면접 준비 등의 일을 하면서 지냅니다.
최근의 관심사는 다음과 같습니다.
- RustPython: Rust, 인터프리터에 관심이 있고, 추상화 수준이 낮은 환경에서 직접 개발해 보고 싶어 참여하고 있습니다.
- 개발 책 읽기: 최근에는 편의를 위한 개인 프로젝트를 하면서 코드를 자세히 읽지 않고 진행하는 경우가 많아졌습니다. 그러다 보니 지식이나 감각이 흐려지는 것 같아, CS와 시스템 성능에 관한 책을 읽고 있습니다.
개발 경험
회사에서 어떤 일을 했는지 궁금하다면 이력서나 포트폴리오를 참고해 주세요.
웹 서비스
- Hello, GSM (팀): 광주소프트웨어마이스터고등학교의 신입생 입학 지원 서비스. 초기 개발부터 백엔드 파트 리드로 참여
- sijun-yang.com (개인): Zola로 만든 개인 사이트. 소개, 이력서, 포트폴리오를 정리하고 GitHub Pages로 배포
서버 라이브러리
- Spring Initializr (기여): YAML, Kotlin JPA 설정 지원 등에 기여 (#1576, #1670, #1682, #1797 등)
- GAuth-spring-boot-starter (개인): 교내 통합 인증 서비스 GAuth를 Spring Security에 쉽게 연동하도록 만든 라이브러리
- Spring Boot (기여): 프로파일 이름의 유효성 검증 기능에 기여 (#43176)
- Armeria (기여): HTTP 클라이언트의 JSON 직렬화 설정 오류 수정 (#5512)
데스크톱 앱
- Jungle Bell (개인): 크래프톤 정글의 출석 확인 알림과 캠퍼스 생활 정보를 제공하는 데스크톱 앱/웹 서비스
컴퓨터 시스템
- Nand to Tetris (학습): 논리 게이트부터 CPU, 가상 머신, 컴파일러, 운영체제까지 구현하며 컴퓨터의 동작 원리를 학습
- RustPython (기여): Rust로 구현된 Python 인터프리터. OSSCA 26 멘티로 참여 (#8262, #8537, #8730 등)
- Pintos (정글 과제): 교육용 운영체제의 핵심 기능을 직접 구현
- CHIP-8 에뮬레이터 (학습): C로 아주 간단한 가상 머신을 구현하기
- malloc_lab (정글 과제): 메모리 할당자 구현
- webproxy lab (정글 과제): HTTP 프록시 구현
플러그인
- Bracket Pair Guides (개인): JetBrains IDE 플러그인, 커서 스코프에 가로, 세로선 가이드 제공
- Docsify C Runner (개인): Docsify 문서의 C 코드 예제를 브라우저에서 실행하는 플러그인과 API 서버
자동화
- my-oss-contributions (개인): 여러 오픈소스의 기여 내역을 자동으로 갱신해 주는 서비스
- install.sijun-yang.com (개인): 개인 프로젝트를 위한 리다이렉트 서비스, Jungle Bell에 사용
- YTAlertDiscord (개인): YouTube 새 영상을 자동 감지해 Discord로 알림을 보내는 GitHub Actions 워크플로
프런트엔드 동작
- my-react-like-lib (학습): React의 동작 원리를 이해하기 위해 Virtual DOM을 직접 구현한 학습용 UI 라이브러리
- 프레임워크 없는 프런트엔드 (학습): "프레임워크 없는 프런트엔드" 책의 내용을 정리한 레포