BEB 8기 코드스테이츠
- 1개월 차 ~ 2개월 차 -
블록체인 부트캠프는 기본적으로 마지막 과정인 프로젝트 세션에서 블록체인 서비스를 만들 수 있어야 하는 만큼 (매우) 가파르게 학습이 진행된다. 첫 달에는 프론트 엔드, 두 번째 달에는 백엔드의 핵심내용들을 훑게 되는데, 이 과정이 비전공자인 나에게 있어서 벅차다 못해 체하는 것 같은 기분이 들었다. 실제로 잠을 계속 줄이다가 (거의 10년만에 걸린 것 같은) 독감에 걸려 백엔드 막바지 세션에서 3일 정도를 들어 눕게 됐다. 그래도 지금 생각해 보면 3일 만에 독감을 거의 이겨낸 것이 너무나도 다행이었다.
그리고 정말 운이 좋게도 블록체인 부트캠프를 같이 듣는 사람들 중 거의 절반이 실제 개발 경험이 있거나 전공자이신 분이었다. 모두 다 친절하게 모르는 부분에 대해 자세히 설명해 주었으며 아이디어 실현에 관해서도 상당히 현실적인 인사이트를 많이 제공해 주셨다.
각각 프론트엔드 백엔드의 대략적 커리큘럼이다. 궁금하실 분들이 계실것 같아 올려본다.
- 3개월 차 ~ 4개월 차 -
그 후 3개월 차에 들어서는 본격적으로 블록체인에 대한 내용을 배우게 되었다. 이 부분부터 나는 하루하루가 벅차올랐다. 내가 믿고 원하는 무언가에 대해서 배운다는 것은 역시 너무나도 즐거운 일인 것 같다. 알면 알수록 매력적이었고, 앞으로 사람들에게 큰 영향을 미칠 기술이라는 확신이 들었다.
블록체인은 분명 구조적 한계를 갖고 있다. 그리고 이 한계를 완벽하게 극복하는 것은 트릴레마로 불리는 만큼 불가능에 가깝다는 것도 알고 있다. 그럼에도 나는 서로 다른 특징들을 가진 블록체인 기술들이 결합된다면 트릴레마는 어느 정도 해결될 수 있을 것이라 생각하며, 블록체인이 갖고 있는 지향점이 옳기에(자연스럽기에) 앞으로 반드시 필요할 것이라는 점에는 의심의 여지가 없다.
물론 이 부분은 어디까지나 개인적인 의견으로서 나와 같이 생각하지 않는 사람들도 있었다. 블록체인 부트캠프를 진행하면서 같이 수업을 듣고 있는 사람들과 끊임없이 얘기를 나눌 수 있었는데, 많은 기술적/철학적 얘기들을 나누면서 블록체인에 대한 다양한 관점과 이해를 공유할 수 있었다.
- 5개월 차 ~ 6개월 차 -
Section 3에서는 비트코인과 이더리움의 탈중앙화 시스템에 대한 개념을 설명했다. 추가적으로 이더리움 클래식, 비트코인 골드, 카르다노, 이오스, 알고랜드, 클레이튼 등등 그 외의 알트코인에 대한 간략한 설명도 있었다. 생각보다 훨씬 더 공부할 내용이 많다는 느낌을 받았지만, 그렇게 나쁜 느낌은 아니었다. 여타 다른 기술들도 마찬가지겠지만, 블록체인 기술들이 각각 독립적으로 존재하는 것이 아닌 끊임없이 서로 연결되고 파생되면서 하나의 스토리를 만들고 있다는 것이 느껴졌다. 마치 블록체인이라는 생명이 끊임없이 환경에 적응하기 위해 다양한 시도를 하는 것이다. (마치 인류가 그랬고 지금도 그런 것처럼) 나는 이 블록체인의 스토리(삶)에 나의 스토리(삶)를 연결 지으면 되는 것이다. 이는 결코 우리가 사회를 살아가는 데 있어서 (사회적 동물로서) 내가 좋아하는 사람과 친해지는 것과 다르지 않다. 이 블록체인이라는 존재/생명과 친해져야 하는 것인데, 이 친구 꽤나 특징이 강하고 그 장벽이 상당히 높다... 그러나 너무 쉬운 사람보다는 어느 정도 알 수 없는, 또는 알기 어려운 매력을 가진 사람에게 끌리는 건 누구나 같지 않는가..? (아닐 수도 있을 것이다 ㅎㅎ)
Section 4에서는 Solidity와 다양한 web3 라이브러리, 대표적인 EIP를 공부하면서 이더리움 기반의 서비스를 실제로 만들 수 있는 핵심 스킬과 역량을 기를 수 있었다. 언제나 시간은 부족했고, 글을 쓰는 지금도 공부할 것은 산더미처럼 쌓여있다.
위의 학습이 끝난 후 부트캠프 종료 50일 전부터는 총 3번의 프로젝트가 진행되었다. 첫 번째 프로그램은 1주일 간 EIP 721(NFT)을 기반으로 opensea와 같은 NFT market을 클론 코딩하는 것이었다. 두 번째는 2주일 간 EIP20(FT)를 기반으로 스팀잇과 같은 Token economy를 가진 플랫폼을 만들어보는 것이었다. 마지막 프로젝트는 한 달간 진행되는 자율 프로젝트였는데, 우리 팀은 chainlink를 활용한 DNFT 플랫폼을 만들게 되었다. 그리고 이 기간은 개인적으로 가장 실력이 빠르게 늘었다고 생각되는 너무나도 값진 시간이었다.
- 프로젝트 시작을 하루 앞둔 나는 -
'내가 정말 프로젝트를 성공적으로 마무리할 수 있을까?' '팀원들에게 폐를 끼치지 않고 최소한 1인분은 할 수 있을까?' '백엔드 / 프론트엔드 / 스마트 컨트랙트 3파트 중에 하나라도 잘 해낼 수 있을까?'라는 의구심을 전혀, 단 하나도 지울 수 없었다. 내 실력에 대한 의심이 한가득이었다. 그렇게 프로젝트에 투입이 되었고, 나서는 것을 좋아하는 나는 팀장을 맡게 되었다. 실력에 대한 자신이 없었던 내가 팀장이 된 이유는 부족한 코딩 실력을 일정관리, 기획, 자료 정리, 회의 내용 정리 등등을 하면서 메꿀 의도가 좀 있었다 ㅎㅎ 그러나 막상 역할을 나누고 계획 회의를 진행하다 보니 내가 짜야할 코드가 상당했다. header, footer, 메타마스크 로그인, mint page를 구현해야 했는데, 이게 생각보다 할만했다. 일등 공신은 단연 유튜브와 블로그에 정리되어 있는 코드 정리 글이었다. 생각보다 web3의 라이브러리가 상당한 수준으로(상당히 사용하기 편리한 수준으로) 존재했으며, 이런 라이브러리로 다양한 web3 웹을 만든 사례들이 잘 정리되어 있었다. 물론 이를 응용하기 위해서는 코드를 읽고 이해하는 실력이 필요했는데, 때마침 혜성처럼 등장한 chat GPT는 개인 선생님과 다름이 없었다. 잘 이해할 수 없는 코드를 복붙 하면 정말 친절하고 상세하게 설명을 해준다. 덕분에 나는 맡은 바 역할을 어느 정도 완성도 있게 수행할 수 있었고, 꽤나 자신감을 얻을 수 있었다. 코딩(react, web3)으로 구현해야 하는 부분을 어떻게 하면 될지 감을 잡은 듯한 느낌이었는데, 여전히 많이 부족한 느낌이었지만 막막한 느낌은 상당히 사라졌다.
- 프로젝트 2에서는 팀장은 하지 않았다. -
개인적으로 좀 더 공부하고 싶었던 스마트 컨트랙트를 맡았는데, 백엔드의 요구에 따라 코드를 짜는 것이 쉽지 않았다. 그 이유는 당연하게도 백엔드에 대한 이해가 부족해서였다. 그래서 나는 백엔드에 대한 공부도 같이 진행했으며, 스마트 컨트랙트 완성 후 백엔드의 이해를 위해 데몬 구축을 맡았다. 그러나 이 부분은 결국 실력과 시간 부족, 연결되지 않은 프론트엔드와 백엔드로 인해 구현되지 못했다. 확실히 온라인으로만 진행되는 팀플레이인 만큼 소통을 적극적으로 하지 않으면 시간에 맞춰서 각자가 만든 부분/조각들이 쉽게 하나의 작품으로 만들어지지 못한다. 그래도 나에게는 solidity 언어와 백엔드 대한 이해도를 높일 수 있었던 과정이었다.
- 마지막 프로젝트는 자율 프로젝트인 만큼 -
내 아이디어를 실현하는 부분으로 만들고 싶었다. 그래서 내 아이디어가 무엇이고, 어떻게 실제 서비스로 구현할 수 있을지에 대한 명세서를 만들어 수강생 동기분들에게 PR 했다. 나를 포함해 총 2명의 PR이 있었고 조정 끝에 5:5로 나누어져 프로젝트를 진행하게 되었다. 나는 팀장으로서 팀원들과 함께 내 아이디어를 진행하고 싶었고, 추가적인 PR을 진행했다. 내 개인적인 생각이지만 2명 정도는 내 아이디어에 동의해 주었고 한 명은 중립, 한 명은 끝까지 의구심을 갖고 있었다. 속칭 '카드깡'의 소지가 있다는 점이었는데, 사실 이 부분은 과거 변리사님께 자문을 구하면서 해결이 된 상태였다. 구매 대행이 존재할 뿐 카드깡의 저촉되는 부분이 없다는 것을 설명했지만 생각보다 팀원들은 내 아이디어를 쉽게 받아들이지는 못했던 것 같다. 무엇보다도 각자가 한 달이라는 짧은 기간 동안 이 프로젝트를 통해 취업을 위한 포트폴리오로 만들려고 했기에, 좀 더 현실적인 접근을 취하려 했던 것 같다. 그래서 결국 방향을 틀어 위에서 말했던 주제로 프로젝트를 진행하게 되었다. 조금 아쉽긴 했지만, 어차피 좀 더 공부를 하다가(아이디어 구현을 위해 더 공부하고 싶은 부분이 있었다) 만들고 싶다는 생각이 있었기에 큰 아쉬움은 없었다. 그리고 이 프로젝트를 통해 개인적으로 공부하고 싶었던 Nextjs와 typescript, 그리고 react에 최적화되어 있는 web3 라이브러리들을 학습할 수 있었다.
( 그리고 추가적으로 법적 소지에 대한 의문을 완전히 제거하기 위해 블록체인 변호사님을 찾아가 카드깡에 대한 구체적인 법률자문을 구했다. 결과적으로 어떤 문제도 없으며 해당 법과 관련된 소송이 들어올 경우 승소 가능성이 매우 높다는 결론이 나왔다. )
이렇게 총 3번의 프로젝트를 진행했고, 나는 내 아이디어로 사람들을 설득하고 같이 만들어볼 입장으로서 밑의 사항들을 깨달을 수 있었다.
개발자들과 협업을 진행하기 위해서는 확실히 어느 정도 수준의 소프트웨어/컴퓨터 공학적 지식과 사고가 있어야 한다. 프로젝트를 이끌어야 하는 입장으로서 서비스를 만들기 위한 역할 분담, 아이디어/기능 기획, 디자인, 일정 설정, 그 외 모든 소통에서 핵심적인 역할을 한다.
협업/소통 Tool을 어느 정도 사용할 수 있어야 한다. 협업에서는 최소한 GitHub과 notion을, 소통에서는 Discord, google meet, zoom 등을 사용할 수 있어야 한다. (물론 이건 최소한으로서 더 많은 tool들을 다룰 수 있어야 한다.) 또한, 사용하는 목적에 따라 각각 어떤 Schema가 필요한지도 알고 있어야 한다.
위의 두 박자와 함께 팀원들이 충분히 납득할 수 있는 근거를 기반한 아이디어/목표가 있다면 개발자들과 함께 어떤 프로젝트를 진행하는 것에 있어서 큰 문제는 발생되지 않을 것이라 생각한다. 서로에게 답답한 시간은 줄어들고 마주한 문제를 같이 해결하기 위한 시간은 늘어나게 되는 것이다.
- 이렇게 6개월 동안 블록체인 부트캠프를 하면서 -
배운 점과 느낀 점은 결코 가볍지 않았다. 나에게는 너무나도 값진 6개월이었으며, 하루하루가 매우 의미 있었다. 그만큼 나는 이 블록체인 부트캠프의 커리큘럼과 시스템이 마음에 들었다. 만약 혼자서 온라인 강의로 공부를 했다면 나는 결코 이 정도의 수준을 형성하지 못했을 것이다. (지금 수준의 30% 정도에서 머무르면서 삽질을 하고 있지 않았을까..?) 확실히 사람들과 같이 다양한 프로그램/프로젝트를 진행하는 것이 혼자서 하는 것보다 더 즐겁고 알찼다. 그리고 부트캠프가 끝났다고 해서 모든 지원들이 끝나는 것이 아닌, 추가적인 학습(git, go 언어 특강이 추가적으로 예정되어 있다.)과 '코드아일랜드'라는 커뮤니티 서비스(취업, 창업, 네트워킹, 소통, 정보 교류의 창)가 있다는 것도 매우 마음에 든다. 적극적으로 활용해 볼 예정이다.
나는 당장 한 달간은 공부한 내용을 정리하고 추가적인 학습을 진행할 것이다. 위에서 언급했던 깨달음의 영역을 업그레이드할 필요성을 느꼈기 때문이다. 그리고 한 달 후에는 바로 제작 작업에 들어갈 것이며, 같이 아이디어를 실현시킬 사람들을 적극적으로 모집해 볼 예정이다. 이 과정 속에서도 코드스테이츠는 나의 든든한 지원군이 되어줄 것 같은 느낌이 든다.
코드스테이츠의 블록체인 부트캠프를 거쳤던 나의 여정은 지금의 나에게 북극성과 같다.