note_taking

2024-12-24

시작이 어렵다

일단 머릿속에만 있는 상태인 것을 구현하려는 첫 시도를 해야만 무언가가 일어난다. 그런데 아무 계획도 없으면 그것조차 어렵다.

옥죄는 규칙과 탄탄한 계획, 그건 종이 한 장 차이인 걸까? 기획한 것을 구현하기 전에 늘 저 둘 사이에서 줄타기를 한다. 가이드라인도 물론 필요하지만 일단 시작하면 따라오는 패턴이 초기의 가이드라인보다 가치있다. 그래서 언제 계획을 멈추고 구현을 시작할 것인가?

결론: ‘이제 시작해야하나’라는 생각이 들면 일단 시작은 하고, 시작했는데 너무 휘청거려서 도저히 진척이 안 된다 싶으면 계획과 조사를 더 하고, 그냥저냥 되는 것 같으면 계속 진행한다.

시작도 전에 너무 많이 벌려놓았단 생각이 든다면? 그 벌려놓은걸 당장 한톨도 남기지 않고 끌어모아서 사용해야 하는 건 아니니까 일단 시작한다.

시작을 한다 해도 정상 궤도에 진입하기까지 시간이 걸린다

solmee.xyz를 만들기로 결심하고, 종강을 해 자유의 몸이 되자마자 어떻게 구현할 수 있을지 조사를 시작했다. 바로 웹사이트를 만드는 작업을 시작할 수 있을 줄 알았는데 프로젝트의 궤도에 진입하는 것조차 터무니없이 멀게 느껴졌다. 조사를 시작한 첫 한 달 동안은 원래 목표인 웹사이트 만들기는 시작도 못한 채 나도 모르는 사이에 우후죽순 생겨나는 사이드 퀘스트 깨기에 바빴다. 예를 들어 Obsidian 테마를 만들면서 CSS와 사투를 벌이고, 플러그인을 사용해 웹사이트를 만들어 보면서 url 때문에 일어나는 에러와 사투를 벌였다.

당시에는 삽질한다고 생각했는데 신기하게도, 그렇게 사이드 퀘스트들이 이끄는 대로 끌려다니다 보니 메인 프로젝트의 궤도에 점점 근접하고 있었다. 텍스트 에디터에서 Markdown을 편집하는 것이 어느새 매끈한 노션 UI 위에 글 쓰는 것보다 익숙해지고, chatGPT에게 하는 질문 중 CSS 관련이 줄어들고, 두루뭉술하던 파이프라인이 종이 위에 도식으로 그려졌다. 그래도 아직 추상적이고 어렵게 느껴지긴 마찬가지였다. 빌드할 때 이뤄져야 하는 일들, 예를 들어 Markdown이 언제 어떻게 파싱되어 JSON이 되고, 프론트매터와 내부링크가 걸러지고, 언제 어떻게 페이지와 그래프가 렌더되는지, 이런 걸 생각하면 꼬인 실타래를 앞에 둔 것처럼 막막했다.

일단 궤도에 진입하면 잘 풀린다

그래서 개발하는 것을 계속 미루다가 10월 말쯤, 이제 정말 시작하지 않으면 안될 것 같아 Astro 튜토리얼을 해봤다. 그걸 기점으로 갑자기 모든 것이 쉬워졌다. 튜토리얼이 정말 친절하게 쓰여 있었던 덕도 있지만, 내가 할 코딩이 생각보다 훨씬 하이레벨에서 이루어진다는 것을 알게 되었기 때문이다. 위 문단에 써놓은 과정들은 다 빌드할때 한꺼번에 처리되는 것이었다. 그래도 c++수업 첫시간에 교수님이 컴파일러가 뭘 빌드해서 뭔 실행파일을 내뱉는지 눈으로 직접 보게 하셨듯이, 원리를 대충이라도 알아서 나쁜 건 없었던 것 같다.

개발이 어려워서 방학 내내 해야 할거라는 예측과 달리, 결과적으로 이 프로젝트에서 가장 어려운 부분은 기획이었다. 개발은 Astro 튜토리얼을 기점으로 일사천리로 진행됐다. 내가 하려는게 실험적인게 아니라 대부분의 사람들이 블로그에 넣고싶어하는 기능들이라서 더욱 그랬다.

시작할 즈음에 유튜브에서 ‘프로젝트 멱살잡고 끝내는법’라는 영상을 봤는데 완벽을 추구하지 말고 최소한으로 기능하는 제품(MVP)를 목표로 하라는 말이 촉발제가 되었다.