00:00:00프로젝트를 직접 만드는 것보다 더 답답한 게 뭔지 아세요? 바로 무엇을 만들지 모르는 겁니다.
00:00:04개발자로서 성장하다 보면 어느 순간 기묘한 단계에 접어들게 됩니다.
00:00:08자바스크립트 프레임워크로 또 다른 CRUD 앱을 만드는 건 지루하게 느껴지는데,
00:00:11운영체제를 맨바닥에서 만드는 건 불가능해 보이죠. 중간에 끼어버린 겁니다.
00:00:16너무 쉬운 건 싫고, 불가능한 것도 원치 않죠. 그저 의미 있는 무언가를 원할 뿐입니다.
00:00:21실력을 키워줄 만큼 도전적이면서도, 도중에 포기할 정도로 막막하지는 않은 그런 것 말이죠.
00:00:26저도 그런 경험이 있기에 잘 압니다. 그래서 이번 영상에서는 정말 괜찮은 프로젝트 아이디어들을 소개해 드리려고 합니다.
00:00:32이 프로젝트들을 세 단계로 나누었습니다. 1단계는 기초 다지기, 2단계는 저장소,
00:00:38데이터베이스 및 데이터 시스템, 그리고 3단계는 고급 시스템과 내부 구조입니다.
00:00:44이 프로젝트들을 완성하면 단순히 코딩 실력만 느는 게 아니라, 엔지니어처럼 사고하기 시작할 겁니다.
00:00:491단계부터 시작해 보죠. 첫 번째 프로젝트는 HTTP 서버를 처음부터 직접 만들어 보는 겁니다.
00:00:55이 영상을 보고 계신다면 HTTP 서버가 무엇인지 아마 아실 겁니다. 매번
00:01:01웹사이트를 열거나 API를 호출할 때마다 보이지 않는 곳에서 요청과 응답이 일어납니다.
00:01:06하지만 지금까지 여러분은 Express 같은 프레임워크를 통해서만 이를 접해왔을 겁니다.
00:01:12미니 HTTP 서버를 직접 만들어 보면 밑바닥에서 실제로 어떤 일이 벌어지는지 이해하게 됩니다.
00:01:19TCP 소켓이 데이터를 주고받는 방식, HTTP 요청을 파싱하는 법, 응답 형식 구성 및
00:01:25여러 요청을 동시에 처리하는 법을 배우게 되죠. 만약 벌써 이런 프로젝트를
00:01:30어떻게 감당해야 할지 막막하시다면, 영상 마지막에 해결책을 준비했으니 놓치지 마세요.
00:01:35이제 두 번째 프로젝트로 넘어갑시다. 바로 자신만의 쉘(Shell) 만들기입니다.
00:01:40cd, ls, pwd 같은 명령어를 수백 번씩 써보셨을 텐데, 과연
00:01:46무엇이 그 명령어들을 실제로 처리하는지 생각해 보신 적 있나요? 직접 쉘을 만들면 그 시스템을 스스로 구축하게 됩니다.
00:01:52사용자 입력을 읽고 파싱하는 법, 프로세스 실행과 시스템 호출 처리,
00:01:58그리고 프로세스와 명령어 같은 OS 레벨의 개념을 배우게 됩니다. 쉘을 밑바닥부터 만들면서
00:02:04컴퓨터를 아주 깊은 수준에서 이해하게 될 겁니다. 이제 흥미진진해지네요.
00:02:092단계 프로젝트들을 살펴보겠습니다. 여기서 첫 번째 프로젝트는 자신만의 Redis를 만드는 겁니다.
00:02:15Redis는 캐시, 데이터베이스, 메시지 브로커 등으로 쓰이는 인메모리 데이터 저장소입니다. 정말 빠르죠.
00:02:21하지만 직접 만들어보기 전까지는 왜 그렇게 빠른지 진정으로 이해할 수 없습니다. Redis 클론을
00:02:26구현하면서 인메모리 데이터 구조가 어떻게 작동하는지 배우게 될 겁니다. 기본적인 Redis 명령어를 구현하고,
00:02:32Redis 프로토콜을 이해하며, 이벤트 루프를 사용해 여러 클라이언트 연결을 효율적으로 관리하게 됩니다.
00:02:38이건 빙산의 일각일 뿐입니다. 작업을 시작하면 배우게 될 것들이 훨씬 더 많습니다.
00:02:43소프트웨어 엔지니어링이 단순히 CRUD 앱을 만드는 것 이상이라는 걸 깨닫게 될 겁니다.
00:02:48다음 프로젝트는 자신만의 Git을 만드는 겁니다. 매일 Git을 쓰시죠? 하지만 정확히 어떻게 작동하는지 아시나요?
00:02:54간소화된 버전 관리 시스템을 직접 만들어 보면 모든 게 명확해집니다. 커밋이
00:03:00내부적으로 어떻게 저장되는지 이해하고, 해싱과 콘텐츠 주소 지정 가능 저장소(CAS)를 구현하게 됩니다.
00:03:05파일 스냅샷을 커밋 트리로 구성하게 되죠. 그 외에도 배우고 구현할 것이 정말 많습니다.
00:03:11처음부터 직접 만드는 것의 장점은 본인이 원하는 방식으로 수정해서 쓸 수 있다는 점입니다.
00:03:16마지막으로 세 번째 프로젝트는 자신만의 SQLite 데이터베이스를 만드는 겁니다.
00:03:22SQLite는 모든 데이터를 단일 파일에 저장하는 서버리스 데이터베이스 엔진입니다. MySQL이나 Postgres와 달리
00:03:29별도의 서버 프로세스가 없죠. 가볍지만 믿기지 않을 정도로 강력합니다. 직접 버전을 만들어 보면
00:03:34B-트리 같은 구조를 통해 데이터가 어떻게 조직되는지 알게 됩니다. 간단한 쿼리를 파싱하고 실행하며,
00:03:39빠른 검색을 위한 인덱싱도 구현하게 될 겁니다. 개발자로서 데이터베이스를 피할 수는 없습니다.
00:03:45하지만 내부 작동 원리를 이해하고 나면, 여러분은 상위 몇 퍼센트의 개발자가 될 것입니다.
00:03:52이제 3단계에서는 더 깊이 들어갑니다. 첫 번째 프로젝트는 미니 프로그래밍 언어를 만드는 겁니다.
00:03:58네, 여러분만의 언어입니다. 코드를 읽고 이해하며 명령을 실행하는 무언가를 만드는 거죠.
00:04:04듣기엔 위협적으로 느껴질 수 있지만, 가장 보람찬 프로젝트 중 하나입니다.
00:04:10렉서(Lexer), 파서(Parser), 추상 구문 트리(AST) 등을 배우고 구현하게 됩니다. 무엇보다도
00:04:17인터프리터와 컴파일러가 실제로 어떻게 작동하는지 이해하게 되죠. 우리가 컴퓨터와
00:04:22소통하는 방식을 마침내 이해할 수 있는 훌륭한 프로젝트입니다. 또한 프로그래밍 언어를
00:04:27만들었다고 뽐낼 수도 있고 이름도 마음대로 지을 수 있죠. 두 번째 프로젝트는
00:04:32자신만의 BitTorrent 클라이언트를 만드는 겁니다. 여기서 분산 시스템이 등장합니다. BitTorrent는
00:04:38단일 서버 대신 여러 피어로부터 파일 조각을 다운로드하는 피어 투 피어(P2P) 파일 공유 시스템입니다.
00:04:44이걸 만들면서 피어 탐색을 구현하고, 노드 간 연결을 관리하며, 파일을 조각으로 나누고,
00:04:50파일 무결성을 확인하고 분산 통신을 처리하게 됩니다. 결코 쉬운 프로젝트가 아닙니다.
00:04:57아마 제가 방금 말한 것들의 절반도 이해하지 못하셨을 겁니다. 하지만 대규모 분산 시스템이
00:05:02실제로 어떻게 작동하는지 가르쳐 주죠. 그리고 마지막 프로젝트는 자신만의
00:05:08코딩 어시스턴트를 만드는 겁니다. Claude Code 같은 것 말이죠. 현대적인 AI 도구들은 훌륭하지만,
00:05:14내부적으로는 대규모 언어 모델(LLM)을 전통적인 소프트웨어 아키텍처와 결합한 시스템입니다.
00:05:20직접 만들면서 LLM API를 애플리케이션에 통합하게 됩니다. 프로젝트 파일을 파싱하고 인덱싱하여
00:05:27문맥을 제공하고, 프롬프트를 관리하며 응답을 제어하게 되죠. AI와 실제
00:05:32엔지니어링 원칙을 결합한 시스템을 설계하게 됩니다. 작업을 시작하고 나면,
00:05:38인기 있는 AI 코딩 도구들이 내부적으로 어떻게 작동하는지 이해하게 될 겁니다. 그뿐만 아니라,
00:05:44오늘날 AI가 큰 화두인 만큼, 여러분을 돋보이게 해줄 아주 훌륭하고 도전적인 프로젝트가 될 겁니다.
00:05:50솔직히 말씀드리면, 이 프로젝트들 중 일부는 어렵습니다. Redis, Git, BitTorrent 클라이언트를
00:05:55주말 동안 가볍게 뚝딱 완성할 수는 없죠. 벽에 부딪힐 것이고 스스로를 의심하게 될 겁니다.
00:06:01가끔은 제대로 구현하고 있는 건지도 모를 수 있죠. 보통 그 지점에서
00:06:05대부분의 사람들이 포기합니다. 이를 돕기 위해 CodeCrafters라는 플랫폼이 있습니다.
00:06:11Redis, SQLite, DNS 서버, HTTP 서버 같은 도구들을 단계별로 다시 만들어 보는 프로젝트 기반 학습 플랫폼입니다.
00:06:19정답을 그냥 주지 않습니다. 테스트 케이스와 구조화된 마일스톤을 제공하고,
00:06:23여러분 스스로 모든 걸 구현하게 합니다. 저도 이런 프로젝트들을 할 때 직접 사용해 봤는데,
00:06:29솔직히 그런 구조화된 가이드가 있느냐 없느냐가 포기와 완주를 갈랐습니다.
00:06:34그러니 이 아이디어들이 마음에 들지만 실전적인 도움을 받고 싶다면, 설명란에 링크를 남겨두겠습니다.
00:06:39하지만 플랫폼을 쓰든 독학을 하든, 중요한 건 실제로 직접 만들어 보는 것입니다.
00:06:45다음에 만들 프로젝트를 찾아 인터넷을 헤매고 계셨다면, 이 영상이 명확한 답이 되었길 바랍니다.
00:06:51처음에는 무섭게 느껴질 수도 있지만, 찬물도 일단 뛰어들어야 따뜻해지는 법입니다.
00:06:57이런 영상이 좋으셨다면 좋아요와 구독 부탁드리고, 어떤 프로젝트부터 시작할지 댓글로 알려주세요.
00:07:02그럼 다음 영상에서 뵙겠습니다.