우테코 프리코스

우테코 8기 프리코스 오픈미션 회고

exena 2025. 11. 24. 16:08

이번 8기부터는 오픈미션이라는 과제가 추가되었다. 제한 없이 본인이 하고 싶은 것을 2~3주간 수행하고 그 결과를 제출하는 것이다. 심지어 코딩과 관계가 없더라도 상관이 없다. 아니 이게 무슨...

이 말을 듣고 느낀 것은, 이전까지의 미션과 같은 프로젝트를 수행하면 안 될것 같다는 느낌이었다. 뭔가 임팩트가 있어야 할 듯 했다. 결과적으로 내 결과물이 임팩트가 있다고 할 수 있을지는 모르겠다. 오픈미션 제출 후에 사람들이 디스코드에서 본인의 프로젝트를 소개한 것을 몇가지 봤는데 단순한 게임을 만든 사람부터, 25년 노벨 물리학상 주제였던 양자회로를 프로그램으로 시각화한 사람, 농구 슛폼 분석, 노래 추천 등 2주만에 했다곤 믿기지 않는 프로젝트들이 꽤 있었기에. 

 

https://github.com/exena/ProtoEditor

 

GitHub - exena/ProtoEditor

Contribute to exena/ProtoEditor development by creating an account on GitHub.

github.com

나는 위지윅 에디터를 제작해서 제출했다.

프론트엔드쪽을 잘 모르다보니 그저 막연하게 어려울 것 같다고 느꼈는데, 내가 목표로 삼은 Toast UI Editor(모바일 게임 만들던 토스트가 맞다)에 대해서 검색하다 보니까 아예 기초부터 만든 것이 아니고 ProseMirror라는 라이브러리를 사용해서 만들었다고 하더라.

이 라이브러리가 거의 유일한 위지윅 에디터 제작용 프레임워크 같은 것임에도 불구하고 인지도가 낮고 온라인에서 많은 자료를 찾아보기가 힘들다. 공식 문서와 구글 검색만으로는 거의 제작이 불가능하다고 느꼈다.

솔직히 챗지피티가 없었다면 2주만에 어느정도 기능을 완성하는것은 불가능했을 것이다. 챗지피티 덕분에 막막하게 나오지도 않는 자료를 찾아보는 과정을 거칠 필요가 없었다. 도대체 어디서 ProseMirror 관련한 코드를 그렇게 많이 학습한건지는 모르겠는데 아무것도 없는 상태에서 일단 코드 작성하면서 시작하기엔 이만한게 없더라. 학습의 문턱을 엄청나게 낮춰준 느낌이었다. 일단 코드를 작성하다 보면 어떤 식으로 돌아가는 건지 감이 오고, 그 이후에 공식 문서를 보면서 학습하면 이해가 확실해진다.

그리고 프리코스를 진행하면서 배운 부분을 적용도 하고 어필도 할 겸 리팩토링과 테스트 코드 작성을 진행했다. 프론트엔드 테스트 코드 작성은 순수 자바와는 달리 DOM이 실제로 작동하는지 검사해야 하고, 라이브러리에 대해 많이 알아야 해서 쉽지 않은 부분이었다. 하지만 Jest나 Vitest같은 라이브러리를 사용한다면 아주 어렵지만은 않다. 강력한 모킹 기능 덕분에 내부 함수를 강제로 작동시키는 것에 대한 부담이 덜해진다.

내가 위지윅 에디터를 개발하게 된 이유는 나무위키에 문서를 작성해본 경험 때문이다. 나무위키는 오직 마크다운 언어로만 문서 수정이 가능한데, 이게 처음 문서를 작성할 때 진입장벽이다. 그래서 위지윅 에디터로 글을 작성한 이후 마크다운으로 변경할 수 있다면 사람들이 많이 사용하지 않을까 하는 생각을 했다.

위 문서는 실제로는 이런 형태이다. 아마 위키 편집이나 작성의 90%는 이 나무마크 문법이 막고있지 않을까.

사실 내 에디터에 마크다운 변환까지 구현하진 못했다.

 

아무튼 이번에 오픈미션이라는 것이 갑자기 추가되서 굉장히 곤혹스러웠던 사람들이 많을 것 같다. 오픈미션에서 유리한 사람은 평소에 개인 프로젝트 주제에 대해서 많이 생각해봤거나, 이런저런 관심사가 많은 사람이라고 생각한다. 나는 되려 하고싶었는데 취업준비때문에 미루고 못하고있던 프로젝트를 이번 기회에 수행할 수 있어서 좋았다. 그리고 정말로 다른 사람들이 사용하도록 만들어야 한다는 생각으로 에디터를 만들었다. 외부에서 이미지 업로드 훅이 가능하도록 만들었으며, 글자색 버튼은 토스트에서 만든 컬러 팔레트 라이브러리를 가져와서 사용했다. 표를 조작하는 것이 꽤 난항이었는데, ProseMirror 에디터가 구조상 표 자체를 선택하지 못하도록 되어있기 때문에 표 선택과 정렬, 복사, 이동 등을 코드를 통해 다른 요소와 비슷하게 구현해줘야 했기 때문이다.

마지막으로 코드샌드박스라는 사이트에서 미리보기가 가능하도록 만들었다.

아직 에디터가 완성되었다고 생각하진 않지만 또 코딩테스트 준비를 해야해서 일단 이정도로 마무리지었다.

 

이번 프로젝트를 진행하며 이런 일련의 채용 과정이 지원자에게도 도전이지만 회사 혹은 캠프 운영진의 도전이기도 한 것 같다는 생각이 들었다. 그냥 프로그래머스에서 문제를 달달 외워서 창의력 테스트 하듯이 사람을 걸러내는 채용 과정이 아니라 오랜 시간을 들여서 사람을 찾아내는 것이 다른 회사들과는 완전히 다른 길을 간다고 느꼈다. 특히 이번 오픈 미션은 더더욱 그렇다. 회사의 신념이 뚜렷하게 느껴지는 느낌이었고, 이런 활동이 결실을 맺으면 업계의 관행을 부수고 채용의 개념을 뒤바꿀 수 있을지도 모른다는 생각을 했다. 나 또한 챗지피티를 이용한 학습 효율성의 비약적인 발전을 이뤘고, 2주간 하고싶은 프로젝트를 하며 몰입했기에 값진 경험을 했다고 생각한다.