필자는 코드스테이츠에서 진행하는 심화클럽에 참여하여 6주간 교육과 프로젝트를 진행했다. 이 글은 앞으로 코드스테이츠 심화클럽 2기가 보았을 때 도움이 되는 글이었으며 하며 그렇지 않더라도 프로젝트를 계획하고 진행하는 모든 초보 개발자들에게 도움이 되는 글이 되기를 바란다. 그리고 교육을 계획하고 이끌어준 모든 크루분들과 동료들에게 감사하며 생각한 목표를 이루지 못해서 죄송한 마음을 남긴다.
💡심화클럽 인터뷰 및 나의 목표
일단 거두절미하고 필자는 심화클럽에 참여를 하고 싶었던 이유가 있었다. 그 이유는 필자는 문제를 생각하는 힘이 부족하다고 생각했다. 세상에는 많은 개발자가 있지만 문제의 본질을 파악해서 해결하는 개발자는 부족하다고 생각했다. 그래서 심화클럽을 통해서 내가 생각하는 힘이 부족하다면 다른 사람들은 어떤 문제들을 생각하며 어떻게 생각하는지 이야기하고 공유하고 배우고 싶어서 지원을 하게됬다. 또한 지속적으로 블록체인을 공부하기 위한 마음도 포함되어 있다.
💡1주차
‘오픈소스에 기여' 가 단순히 코드를 잘 짜서가 아니다. 오히려 기여한다는것은 문제를 인식하고 대신 해결해줄 수 있다는 능력을 보여주는것. 회사의 관점에서 뽑고 싶은 사람은 코딩을 잘하는 사람이 아니라 문제 해결 능력이 있는 사람. 파도를 타는 서퍼가 되겠다고 하는데 바다를 안좋아한다? 바다를 많이 안가봤다? 복싱을 하는데, 처음부터 링 위에 올려주지 않는다. 셰프가 되기위해 식당에 취업하면 접시부터 닦는다. 대신 접시를 그냥 닦으라는 얘기는 아님
이와같이 어떤 문제를 해결한 것인지에 대해서 3명의 팀원 및 크루분들고가 이야기를 나누면서 문제를 찾기 위한 고민을 가지게 되었다. 여기서 우리는 크게 2가지 메타마스크에 이미지부분에 대해서 오픈소스 기여를 할 것인지?NFT를 swap하는 프로젝트를 진행할 것인가?에대해서 고민 하게 되었다. 물론 이 두가지 이외에도 다른 문제점은 있었지만 크게 공감을 이끌어내지 못하여 저기 어디 먼곳에서 ........ 문제점을 찾아서 - https://lazy-crew.tistory.com/59?category=1009243 DeepDive - https://lazy-crew.tistory.com/64?category=1009243. 참고하면 좋을 것 같다.
우리는 NFT swap 프로젝트를 먼저 진행 한다음 마무리가 되고나서 시간이 남으면 메타마스크 이미지 추가 오픈소스 기여를 하기로 합의했다. 그러나 이것은 필자의 오만방자한 생각이었으며 후반부를 보게되면 알게될 내용이다.....
💡2주차
필자의 조는 기존의 NFT swap에서는 제안을 했을 경우 제안을 받는 상대방이 직접적으로 페이지를 방문하지 않으면 알 수 없다는 문제점을 디스코드와 extension 으로 해결해 보고자 했다. 우선적으로는 NFT swap 프로젝트에 해당하는 flowChart를 만들기로 했다.
팀원들과 함께한 작업물이기 때문에 전체 사진을 올리지는 않았다. 이 그림은 figma를 이용해서 flowChart를 작성했다. 프로젝트에 전체적인 흐름을 작성하기는 했지만 그중에서도 문제점 해결을 위한 흐름도는 위에 Suggest swap부분이었다. swap을 제안하게되면 제안을 받은 유저는 디스코드를 통해서 요청이 왔다는 것을 확인 할 수 있게 만들기 위함이었다. 물론 그 때 당시에는 저 흐름도대로 프로젝트를 진행했지만, 프로젝트를 진행하면서 꼭 흐름도 되로는 되지않았으며 중간 중간 수정이 필요한 부분이 있었다. 하지만 flowChart를 작성하는 부분은 정말 중요하다고 생각이 들기 때문에 여러자료를 찾아보면서 작성하는 습관을 가지길 바란다.
만약 내 글을 참조하면서 프로젝트를 진행하는 초보개발자가 있다면 이부분을 꼭 무시하지 않고 넘어갔으면 한다. 어떤 tool을 사용하든 flowChart를 만들어서 진행하고자 하는 일련의 흐름을 만들어 놓아야 한다.
💡3주차
3주차에서 크루분들의 도움을 받아서 FlowChart를 기반으로 ToDo List를 제작했다. 필자의 조는 3명으로 이루어져 있었으며, 내 담당은 NFT swap을 제안 받았을 경우 Discord로 요청을 받을 수 있는 API를 만드는 것이 주된 임무였다. 아래 사진과 같인 내가 해야할 일을 card 형식으로 작성했으며 시작 전, 진행 중, 끝 3가지로 구분지어 진행상황을 알 수 있게 했다. flowChart를 기반으로 ToDoList를 작성하게되면 무엇을 해야하는지 고민하는 시간이 줄어들면서 명확한 목표가 생긴다. 또한 팀원들과 진행사항을 공유할 수 있기 때문에 서로가 서로에게 필요한 부분을 요청하기에도 훨씬 더 수월하다.
💡4주차~끝
지금부터는 실질적으로 code를 작성하는 시간을 갖게 되었다. Github: https://github.com/Hyun2/cupcake-swap Stack: Next.js + Express + AWS 목표 : NFT swap 웹에플리케이션 완성 및 dicord 활용 결과 : 1.cupcakeSwap proposal페이지 완성(DB로 먼저 제안을 하고 수락할 경우 실제 트랜잭션 수행으로 넘어가게 된다.) 2.discordID가 등록되어 있다는 전제하에 제안을 하게 되면 디스코드를 통해서 제안요청을 확인 할 수있으며 제안을 받은 user2는 accept / reject를 선택할 수 있다. accept를 선택하게 되면 트랜잭션을 진행하는 페이지로 이동 되고 DB는 accept상태로 변경된다. 그러나 reject를 하게되면 user1에게 제안을 거절했다는 메세지를 DM으로 보내주면서 채널은 삭제가 된다. 이 이유는 기존에는 무조건 제안을 하는 순간부터 트랜잭션 수수료와 웹애플리케이션에서 가져가는 수수료가 존재했기 때문이다. 이러한 부분을 해결하기 위해 DB를 사용해서 실제로 교환을 하고 싶은 마음이 없다면 그 비용을 절감하기 위함이었다.
지금 그림을 보게되면 태그가 되어있지만 user2가 Accept를 누르지 않으면 user1은 이 채널을 볼 수가 없다. close/Reject를 Click하게되면 channel8은 사라진다. discord 기능 개발 (비밀 채널 알림 및 초대, 버튼을 활용한(동의,거절) 채널 삭제 및 DB 변경 )
그러나 discord ID를 어느 시점에서 등록하며 채널에 들어와 있지않는 유저에게는 어떻게 초대할지에 대한 부분이 완성되어있지 않다.
👎🏽회고라고 쓰며 반성이라고 읽는다..
우선적으로 필자는 심화클럽을 통해서 내가 얻고자 했던 목표는 생각하는 방식과 괜찮은 프로젝트 결과물이었다. 결론적으로 50:50 생각하는 방식과 문제점해결에 대한 능력을 배웠다면 프로젝트는 성공적이지 못했다. 다른 조원들의 상황은 거두절미하고 실패에 이유는 취업에 대한 두려움 때문에 프로젝트에 온전히 집중을 하지 못하고 취업과 병행을 했기 때문이다. 심화클럽당시 프로젝트를 온전히 집중해서 한 후 취업을 준비하기로 합의가 있었는데....... 실상 주변에서 같이 공부했던 모든 분들이 취업이 되면서 떠나가면 참 마음을 다잡는 다는 것은 어려운것 같다. 그리고 필자는 비전공자에 나이는 30 어느 하나 특별하게 언어를 잘하지 않는 정말 일반적인 개발자 공부생이다... 거기에 블록체인을 조금더 공부를 해봤다는...? 그리고 곧 2기 3기 4기 다른 부트캠프에서도 블록체인 교육생들이 나오기 시작하면서 이런 종합적인 마음들이 불안하게 만들었다. 결국 이런 마음을 다잡지 못하면서 취업을 병행하게 되었으며 그 결과는 너무 아쉬었다. 내가 해야할 부분은 거의다 한 것 같지만 뭐랄까 볼일을 보고 제대로 닦지 않고 나온 기분이랄까...?
하지만, 심화클럽을 하면서 배웠던 문제점 인식 해결 방법에대한고민 등을 앞으로 내가 진행할 프로젝트에서 다시한번 적용을 시켜볼 예정이, FlowChart와 TodoList를 작성하는 것 또한 계속해서 적용시켜보고 연습해 볼 생각이다. 이러한 일련의 습관이 생기면 필자에게 꼭 도움이 될거라고 생각하기 때문이다.