7월의 첫날이다. 나만의 무기를 갖기 팀 형성 기간이라 반이 어수선하기도 하고, 공부도 영 손에 안잡혀서 간만에 글로 생각을 좀 정리해보려 한다.
입소한 날이 언제인지도 가물가물하다. 블로그에 쓴 첫 글을 찾아보니까 내가 입소한 날은 4월 4일!! 정글에 입소한 이후 벌써 3개월이라는 시간이 지나버렸다. 미니 프로젝트부터 알고리즘, Red-Black Tree
, Malloc Lab
과 Web Proxy Lab
, 정글의 꽃PintOS
까지.. 매주매주가 새로운 어려움의 연속이었고, 성장할 수 있는 기회였다.
잠깐의 숨 고를 시간이 난 지금, 지금까지의 정글에서의 나를 되돌아보려 한다. 얼마나 성장했고, 무엇을 배웠으며, 앞으로 어떻게 하고 싶은지.
심심풀이로 예전에 알고리즘 주차에 내가 썼던 글들을 읽어보았다. 아주 힘들다고 징징징.. ㅋㅋㅋ 지금은 그때가 차라리 선녀였다란 말이 절로 나온다. 적어도 저때는 문제를 마주하면 해당 개념들을 공부하면서 헤쳐나갈 수 있었으니까, 최소한 활동하는 필드가 알고리즘 문제 하나 였으니까 😂
알고리즘 주차를 진행하면서, '이러한 공부는 밖에서도 할 수 있는거 아닌가? 굳이 정글에서?' 싶은 생각이 들었다. 사실 이 생각은 아직도 변함없긴 한데, 그렇다고 해도 알고리즘 주차가 정글 커리큘럼에서 불필요한가? 라는 질문에는 아니라고 답할 것 같다. 조금 길다는 느낌을 지울 순 없어도 돌이켜 보면 알고리즘 주차가 나에게 알려준 것은 생각외로 많거던.
내 생각에 정글 알고리즘 주차의 가장 핵심은, 문제를 해결하는 즐거움에 대해 귀뜸해준다는 것이다. 혹자는 말한다. 엔지니어는 세상의 다양한 문제를 해결해 나가는 사람이라고, 따라서 필연적으로 엔지니어는 문제를 마주하고, 풀어내는 것에 두려움과 막힘이 없어야 된다고 생각한다. 이러한 두려움을 없애주고, 본격적인 코딩에 앞서 손을 풀어주는 역할을 톡톡히 해주는 것이 알고리즘 주차의 역할이 아닐까 싶다. 간단한 문제들부터 시작해 꽤나 어려운 문제들까지, 내 손으로 작성한 코드를 두근두근 떨며 제출해보고, 초록색 글씨 맞았습니다!!를 만나는 것은 원초적인 문제 해결의 재미를 느끼게 해주고, 앞서 말한 코드를 써 내려가는 것에 대한 두려움을 나도 모르게 천천히 털어낼 수 있게 해준다.
우리 반 동기들 중에선, 알고리즘 주차에서 두각을 드러냈던 사람도 있었고, 뒤쳐지는 사람도 있었다. 이 땐 잘하는 사람들이 부럽기도 했고, 차후에도 앞서나가는 반의 리더들이 되겠구나~ 하고 막연히 생각하곤 했었다. 하지만 전혀 아니었다. 알고리즘 문제를 이 때 잘 풀고 못 풀고는 아무 상관이 없었다. 제일 중요한 것은 몰입하는 것! 알고리즘 주차부터 본격적으로 주어진 주제에 몰입하고 꾸준히 노력해왔던 사람들은, 지금까지도 그 열정을 매일 불태우며 성장하고 있다.
이후부턴 Python
이 아닌 C
로 코딩을 진행하게 된다. 속칭 '파이써닉'한 코드에 익숙해져 있던 생뉴비 정글러에겐 청천벽력같은 소식이었다. C
에 대해 딥하게 공부해보고 싶기도 했고, 앞으로 꾸준히 쓸 언어였기에 첫 주차에 많은 시간을 언어 공부에 할애했었다. 결과적으로 이는 탁월한 선택이었다. 이 때 C
의 기본기를 탄탄하게 잡지 못한 사람들은 많이 힘들어했거든.
이어지는 이 세 개의 프로젝트에선, 방대한 코드 사이를 헤엄치며 내가 원하는 기능을 완성해나가는 경험을 했다. 기존에 존재하는 코드를 찾아내고, 분석하고, 이용하는 것은 마치 퍼즐맞추기를 연상케 했다. 코치님이 말씀해주신 바로는, 현업에서 일하는 방식도 이와 일맥상통하는 부분이 많다고 한다. 압도적인 코드의 양 앞에 겁먹지 않고 하나하나 구현해 나갈 수 있는 능력을 기를 수 있는 주차였다.
Red-Black Tree
주차는 본격적으로 C
를 다루는 재미를 느낄 수 있게 해준 주차였다. C
의 문법 공부에 많은 시간을 할애하고, 직접 공부한 개념들을 사용해보면서 C
의 매력과 난점에 대해 알 수 있었다. 그리고 무엇보다, 삽입이 잘 되는지, 삭제가 잘 되는지 알아보기 위해 필연적으로 C
의 디버깅 툴에도 익숙해질 수 있었던 것 같다. 구현이 잘 되었는지 그때그때 확인해보며 눈으로 확인할 수 있는 부분이 컸기 때문에 3인방 중에서는 가장 재밌게 했던 프로젝트인듯?
Malloc Lab
을 진행하면서는 Python
이 그렇게 그리울 수가 없다. 끊임없이 드는 생각.. 파이썬이라면.. 파이썬이라면!! 내가 지금까지 개발을 공부하면서 다뤘던 언어는 JavaScript
와 Python
. 모두 Garbage Collection
기능이 존재하는 언어였다. 내가 코딩을 진짜 편하게 하고 있었구나.. 하는 생각을 정글러 모두가 했을듯? 사실, 고급 언어만을 사용하여 코딩하다 보면 이 메모리 관리의 중요성을 잊기 쉽다. 설령 Garbage Collection
의 존재를 알고 있더라도 딱 그 정도? 하지만 메모리 관리는 프로그램의 성능과 직결되는 중요한 개념이다. 이러한 중요성에 대해 깨치고 동적 메모리 할당기를 직접 구현해보고, 개선해보는 Malloc Lab
은 유독 기억에 남는 주차였다.
Web Proxy
는 그냥 한마디로 난해했다. 정보통신과를 졸업한 나도 처음 보는 내용이 많았고, 그러한 개념들을 C
를 통해 구현한다는 것은 정말 난해함 그 자체. 이해하지 못한 코드를 가장 많이 적은 주차가 아닌가 싶다. 다만 배운 것은 많다. 소켓을 필두로 한 인터넷 통신이 어떻게 구성되는지, 프록시가 무엇인지와 같은 네트워크 지식을 많이 공부하고, 확인할 수 있었다. 차후 취업을 준비한다면 어차피 다시 한번은 공부해야 될 내용이라, 블로그에 정리해놓기도 했다. 네트워크.. 역시 쉽지 않다!!
PintOS
를 진행하며 배운 것과 생각했던 것들은 이전 회고들에서 정리한 바가 있어서 딱히 적을 건 없다. 이 지옥을 후에 헤쳐나갈 후배 정글러들을 위해 기도할 뿐 😀 후배들이 이 글을 볼지는 모르겠지만, PintOS
를 꼭 끝까지 마쳤으면 좋겠다는 이야기를 해주고 싶다. 특히나 이제 막 개발에 뛰어든 햇병아리라면 더더욱. 딱 내가 그랬는데, PintOS
를 끝까지 완주하고 배운 점이 정말 많았다. 그래도 두번은 안할듯? 🤣
이제 정말 정글의 마지막 주차, 나만의 무기를 갖기 주차에 돌입한다. 속칭 나만무는 팀을 이뤄서 실제 서비스를 만들어 내는 프로젝트를 하게 된다. 포트폴리오 - 취업에 직결되는 부분이기도 하고, 정글에서 실무적으로 배울 것이 있는 유일한 주차이기에 상당히 뜨거운 감자라고 할 수 있겠다.
지금은 팀 형성 기간인데, 팀장 지원을 받고 선발하며, 팔로워들과 컨택을 하는 기간이 존재한다. 난 팔로워로서 팀 매칭에 뛰어들게 되었는데, '리더를 해보면 좋겠다' 하는 생각이 없었던 것은 아니다. 빈말일 수도 있지만 리더 자리를 추천해준 고마운 동기들도 있었고. 다만 지금으로썬 팀을 이끄는 자리에 내가 많이 부족하다는 것을 누구보다 잘 알고 있었다. 그렇게 팔로워를 고려하던 참에, 마침 친한 전공자 친구 한 녀석이 팀장에 지원할 것이라고, 함께하지 않겠냐고 하는 고마운 제안을 해주었다. 거절할 이유가 없었다.
팀 형성 결과는, 결국 팀장 친구가 원하던 드림팀이 성공적으로 꾸려졌다!! PintOS
때 항상 같이 밤을 함께했던 동기들 😁 이 팀원들과 함께라면 무조건 성장할 수 있고, 많은 것을 배울 수 있고, 무엇보다 재밌게 같이 으쌰으쌰 작업할 수 있다는 확신이 든다.
프로젝트에서는 우선적으로 프론트엔드 쪽을 작업하기로 했다. 고른 이유는 간단하다. 팀이 나에게 원하니까. 백엔드를 하고 싶은 생각도 있지만, 결국 나만무에선 프로젝트의 성공이라는 공동의 목표를 가지고 나아가야 한다고 생각했다. 그래서 기존부터 계속 무엇이든 나를 믿고 맡겨준 작업에 임하기로 생각하고 있었기도 했고.
하지만 아직 개발초출인 우리들이기에 완전히 독립된 작업을 하는 것은 불가능하다고 판단했고, 같이 공부해야할 부분이 많다. 어느 부분이 일찍 끝날지도 사실상 미지수라 인구 배분이 언제든 바뀔 수 있기도 하고..
결국 내가 해야 할 일은 같다. 팀원들이 믿고 맡겨준 일을 성공적으로 수행해 내는 것 ❗ 프론트엔드쪽도 완전히 무지렁이라 해야 할 공부가 산더미다. 아마 한동안 글은 못 쓸듯 😂
팀장분이 어떤 분인지는 모르겠지만, 같이 하게됐다니 잘 됐네요! 팀장 분 고기라도 사드려야겠네요! 🍗