- 5개월간 개발자 프리랜서로 일하면서 느낀 장단점
- 업무분야 : 최신 암호기술(e.g. tECDSA) 분석 및 자문, 블록체인 기술(e.g. ZK coprocessor) 적용 및 최적화, 윈도우/자바스크립트 리버싱, C/C++/Rust 최적화, 게임 개발 등
프리랜서로 일하게 된 계기?
1년 전부터 와이프가 대략 5개월 간의 장기간 여행 프로젝트를 계획했다. 나와 와이프가 직장을 퇴직하고, 다른 일을 시작하기 전에 다녀오기 위해서였다. 많은 고민끝에 나는 이런 여행을 할 수 있는 기회는 젊을 때 흔치 않기 때문에 같이 다녀오기로 했다. 여행하면서 생길만한 크고작은 사건사고에 대해서도 걱정이 있었지만, 나는 그것보다도 돈과 미래에 대한 불안감이 사실 더 컸던 것 같다. 와이프와 대화를 나누면서 한동안 유투브를 통해 보고 들었던 디지털노마드처럼 살아보는게 어떨까 하는 생각이 들었고, 그때부터 적절한 프리랜서 플랫폼을 찾기 시작하면서 업워크를 선택하게 되었다.
프리랜서로의 경험은 전무하기 때문에 일단 테스트 삼아서 여행가기 한달쯤 전부터 업워크 계정과 프로필을 만들고, 아주 작은 일이라도 한번 해보고 싶었다. 프로필을 완성한다고해서 일이 바로 들어오지는 않았다. 내 경우에는 일주일 정도 지나서 $30짜리 작은 일이 들어왔던 것 같다. 그것이 프리랜서로서 첫 시작이었다.
운이 좋았다?
처음으로 내게 연락한 고객은 터키에 사는 남자였다. 비트코인 트랜잭션을 분석해서 트랜잭션 서명이 어떻게 이루어지는지 직접 구현해가며 알려달라는 것이었다. 고객은 나에게 비트코인 트랜잭션을 파싱하는 파이썬 샘플코드를 공유해주었고, 그것이 잘 동작하도록 만들어달라고 요청했다. 돈보다는 일단 작은 일이라도 한번 해보자는 마음으로 시작했으며, 심지어 일도 재밌어보여서 적극적으로 도와줬다. 당연히 대화는 모두 영어로 했지만 기술적, 비즈니스적인 대화라서 오히려 일상대화보다 하기 쉽게 느껴졌다. 지금도 기억나는 것은 고객이 비트코인의 Segwit 서명 기술을 이해하지 못해서 내가 잘 설명해주었고 일은 원만히 잘 마무리되었다.
두번째 일은 여행가기 직전 2주 전쯤에 들어왔던 것 같다. 두번째 고객은 호주에 사는 블록체인 스타트업 개발자였다. 이번에는 시간당 $10로 일을 시작했다. 지금 생각해보면 엄청 적은 금액이었지만 나는 여전히 아주 적게 받더라도 일을 하는 경험을 쌓아보는게 중요하다고 생각했다. 이 스타트업은 블록체인에서 요즘 뜨는 기술은 Zero-Knowledge 기술을 이용해서 ZK coprocessor를 만드는 일을 하고 있었다. Internet Computer라는 최신 블록체인 네트워크에서 스마트 컨트랙트를 만들고 ZK coprocessor를 활용해 off-chain에서 작업한 데이터를 on-chain으로 올려주는 서비스였다. 두번째 일 역시도 너무 관심있고, 재미있는 분야였다. 심지어 Zero-knowledge 기술을 내가 직접 만져보고, 적용해볼 수 있다는 점에서 나에게 정말 좋은 경험이었다. 이 개발자는 기존에 나와있는 ZKSnark/ZKStark 기술을 활용해서 off-chain에서 일어난 notary TLS 인증을 on-chain에서 증명하고 싶어했고, TLS 인증 과정이 너무 복잡해서 Proof의 크기가 너무 커지는 문제를 해결하고 싶어했다. 나는 notary TLS 인증과정에서 사용된 hash commitment의 크기가 너무 커서 쓸데없이 proof의 크기를 증가시킨다고 판단해 commitment를 proof에서 제외시키면 문제가 해결될 것이라고 제안했고, 이를 적용한 결과 굉장히 작은 proof와 빠른 verification을 얻을 수 있었다. 이를통해 2주만에 이번 고객은 시급을 두배인 $20로 올려주었다.
두번째 고객과 일을 같이하면서 사용한 협업 툴은 Git(Git Flow), Notion, Linear 였다. 모두 잘 사용해보지 않던 것들이라서 정말 좋은 경험이 되었다고 생각한다. Linear의 경우 온라인 협업관리에 정말 괜찮은 툴이라고 느껴졌고, Git Flow, Notion은 혼자 연구하고 개발할 때도 아직 유용하게 잘 사용하고 있다.
두번째 일은 대략 두달 조금 안되는 기간동안 했던 것 같다. 해당 일을 통해 처음부터 운좋게 꽤 많은 돈을 벌 수 있었다. 참고로 클라이언트와 계약/면접을 시작할 땐 솔직하게 자신의 상황을 말하는 것이 좋다. 나의 경우 Zoom으로 면접을 봤는데 내가 현재 장기간 여행을 다니고 있고, timezone이 자주 변할 수 있으며, 파트타임(주 20~30hrs)으로만 일할 수 있다고 말했다. 여행다닌다는 것이 안좋게 보일까봐 걱정했는데, 오히려 더 좋게 봐주는 것을보고 놀랐다. 심지어는 해당 스타트업에 나처럼 온라인으로 일하는 사람이 대부분이었고, 그들은 모두 각기 다른 나라에서 다른 timezone에서 일하고 있었다.
두번째 일은 생각보다 깔끔하게 마무리하지는 못했다. 내가 처음 최적화했던 코드는 Rust기반 영지식 코드였는데 해당 task가 끝난 이후에 Internet Computer기반 스마트 컨트랙트(Rust 기반)를 다루는 일을 시켰다. 그때 하필 내가 미국서부를 여행하면서 렌트카를 타고 캐니언들을 보고 다닐때라서 인터넷을 할 기회가 마땅하지 않았고, 업무의 연속성을 유지하기가 어려웠던 것 같다. 클라이언트도 나의 상황을 알고 일이 지지부진해지는 것을 느꼈고, 결국 여행끝나고 다시보자는 말로 계약이 마무리되었다. 계약이 끝날때 나는 로스앤잴레스 숙소에서 Zoom으로 대화를 나누었다.
프리랜서의 숙명인가
나는 고정된 월급을 받는 일만 해왔었고, 프리랜서로 일을 하다가 갑자기 일이 끊기는 경우를 처음 경험했다. 두번째 일은 그런 의미에서 또 새로운 경험이었다. 갑자기 수입이 끊기는 경험은 아직 익숙하지 않아서 약간의 불안감이 몰려왔다. 나는 아직 멘탈이 강하지 않았기에 돈을 벌때는 좋아라 하다가도 일이 끊기고나니 프리랜서는 역시 할게 못되나보다 라고 생각했다. 하지만 지금와서 보면 그렇지도 않다. 수입이 불규칙한 것은 프리랜서 뿐만 아니라 모든 자영업이 그럴 것이다. 그리고 또 하다보면 초연해지기도 한다. 자유롭고, 하고싶은 일을 골라할 수 있다는 점에서 장점도 있기 때문에 내가 감수해야할 단점도 존재하는 것이다. 그것이 프리랜서의 숙명이니까. 주기적인 월급을 받는 것도 좋지만 불규칙한 수입 속에서 멘탈잡고 일을 계속해 나아가는 것도 나쁘지 않은 경험이다. 그래야 프리랜서로 살면서 쉽게 돈버는 환상을 깨고, 나에게 맞는 더 현명한 선택을 할 수 있을테니까.