프로젝트를 지속적으로 유지하는 비결 : 늘 미완성으로 두기
2025-02-176 분 소요0
꼭 거창한 프로젝트가 아니더라도, 무언가를 만들고 이를 공개 하면서 다른 사람들의 피드백도 받아보고 또 개선하는 활동은 에너지를 필요로 합니다. 생업으로 하는 프로젝트는 월급이나 기타 수익을 기대하는 마음으로 시간을 쏟을 수 있지만, TSBOARD처럼 그냥 기대 이익 없이 하는 프로젝트의 경우 동기 부여가 없다면 지속하기 어렵거든요.
사이드 프로젝트를 진행하면서, 생업과 크게 관련없는 작업물을 만들어가는데 시간을 무한정 쓸 수는 없습니다. 개발자도 사람이고, 사람은 기계가 아니기 때문에 전기만 넣어준다고 언제나 풀파워로 작업 할 수는 없거든요. 오히려 계속 작업하는 게 해당 프로젝트를 빨리 끝내버리는 기폭제가 될 수도 있습니다.
그렇다면, 생업에 직결된 것도 아니고, 그저 남는 시간에 재미로 혹은 그저 내가 만들어 쓰고 싶어서 진행하는 사이드 프로젝트를 오래도록 유지할 수 있는 비결이 있다면 무엇이 있을까요? 저도 사실 정답을 알고서 쓰는 글은 아니지만, 나름의 생각을 공유해 보려고 합니다.
완급 조절하기 : 100m 전력 질주 하지 않기
프로젝트를 진행하다보면 어느 시점(예를 들어 v1.0.0)에 이르러 프로젝트의 초기 목표를 달성 했거나, 최소한 기본적인 기능은 나름대로 동작하게 됩니다. 그 때가 오면 당장 새로운 기능을 추가하지 않는 한, 기본적인 버그 수정 등을 거친 후에 프로젝트 개발 속도가 조금씩 감소하게 됩니다. 사실 지금의 TSBOARD 역시 v1.0.3을 지나고 v1.0.4부터는 템포가 조금 느려지고 있습니다. 이런 현상은 자연스럽다고 생각하고, 열심히 TODO 리스트를 지워가던 시기가 있다면 지금처럼 새로운 TODO 리스트를 상상하는 시간도 있어야 한다고 생각합니다.
운동도 사이드 프로젝트도 완급 조절이 중요합니다. 처음에 프로젝트를 시작했을 때의 열정과 에너지는 무한히 지속되지 않습니다. 이를 인정하고, 빠르게 달릴 때와 속도를 늦추고 새로운 가능성을 탐구하는 시간이 꼭 필요합니다. 저도 마찬가지지만 우리의 프로젝트가 하루 이틀만에 완성되는 초단기 프로젝트가 아니라면, 호흡을 너무 바삐 가져갈 필요는 없습니다.
기대 금지 : 다른 사람은 이 프로젝트에 관심이 없다
이건 정말 중요한데, 다른 사람들이 내가 진행하고 있는 프로젝트에 대해서 큰 관심이 없다는 당연한 사실을 받아들여야 합니다. 누가 봐도 내 프로젝트는 정말 중요해! 라고 할 수 있는 건 정말로 드물다고 할 수 있습니다. 정말로 중요했다면, 누군가가 이미 했을 것입니다. 그리고 진짜 많은 관심을 받아야 마땅한 프로젝트라면, 누군가가 이미 알아봐 주었을 것입니다. 개인이든 기업이든 후원을 해주고 이 프로젝트가 진심으로 계속 될 수 있도록 여러분의 시간에 마땅한 투자를 해주었을 겁니다. 그렇지 않다는 것은, 이 프로젝트가 객관적으로 다른 사람들에게까지 중요하거나 관심을 받을 수 있는 건 아니라는 것입니다. 이 점을 받아들여야 합니다.
그렇다고 해서 저나 여러분이 하고 있는 사이드 프로젝트가 가치 없다거나 무의미한 것이라는 뜻은 결코 아닙니다. 다른 사람들이 알아봐 주지 않더라도, 적어도 그 프로젝트를 진행하는 여러분들에게 있어서는 큰 가치가 있습니다. 저만 하더라도 TSBOARD 프로젝트를 통해서 현대적인 웹 개발에 대해 배울 수 있었고, 타입스크립트라는 언어를 통해서 풀스택 개발을 해보는 경험을 빠르게 쌓을 수 있었습니다. 지금도 조금 생소한 Bun 런타임을 먼저 써보면서 장단점을 배울 수 있었고, Go 언어에 대해서 배워가면서 백엔드를 더 안정적으로 운영하는 길도 찾아가고 있습니다. 사이드 프로젝트를 통해서 저는 많은 것을 배웠고, 배우고 있습니다. 그리고 저에게 있어 그것 만으로도 이미 충분합니다. 여러분들도 마찬가지일 거라 생각합니다.
늘 미완성인 부분을 남겨두기
마지막으로 가장 중요한 비법, 프로젝트를 끊임없이 지속하는 방법은 바로 미완성인 부분을 늘 코드에 남겨두는 것입니다. 예를 들어 // TODO : 추후 구현할 것(개선할 것) 처럼요. 새로운 기능들을 추가할 때 한 번에 작업하려고 하지 말고, 우선 설계만 잡아둔 상황에서 빈 함수들이나 혹은 인터페이스만 선언해 둡니다. 새로운 기능들이 UI 상에서 드러나지 않거나 어딘가로부터 요청되지 않는다면, 해당 코드는 사실상 코드 관점에서는 아무 일도 하지 않습니다. 사실 없어도 그만인 코드니까요.
하지만 앞서 계속 언급한 것처럼, 개발자인 우리는 사람이고, 사람은 그렇게 미완성으로 남은 코드 조각들을 편한 마음으로 볼 수가 없습니다. 비어 있는 함수들은 계속 생각이 나고, 언젠가 시간이 좀 나면 이렇게 저렇게 채워둬야지 정도의 생각이 머리 속 한켠에 늘 남아있게 됩니다. 그러다가 문득 시간이 비는 날이면, 아 맞다! 그 // TODO 부분이나 좀 채워둬야지 하고 에디터를 열게 됩니다. 일종의 스스로에게 넛지(옆구리를 슬쩍 찌르기)하는 셈이죠. 이렇게 미완성인 채로 계속 신경 쓰이게 만드는 코드를 남겨두면, 언젠가 그걸 채우게 되고, 또 다시 새로운 미완성 조각들을 남겨두면서 프로젝트가 죽지 않고 계속 살아있게 만들 수 있습니다. 사실 프로젝트에 완성이라는 건 없지만, 좀 더 현실적으로 코드 관점에서도 미완성인 영역이 눈에 보이게 만드는 게 핵심입니다.
지속 가능한 사이드 프로젝트를 위하여
사이드 프로젝트는 개발자에게 배움의 기회와 무언가를 만들어가는 재미를 선사합니다. 이 배움과 만드는 재미를 오래도록 누리기 위해서는 좀 더 느긋하게 마음 먹고, 다른 사람으로부터의 관심이나 인정에 목매지 않으면서, 늘 미완성인 부분을 코드에 남겨두는 지혜가 필요합니다. (사실 이 글을 쓰면서 스스로에게 하는 조언이라고 생각하며 썼습니다 ㅎㅎ) 우리 신나게 느긋하게 사이드 프로젝트 개발해봐요. 😊
