사실 학교를 다니면서, 학기 회고록을 작성하는것은 이번이 처음인것 같다. 학생신분에서 부끄러운 이야기지만 나는 그렇게 공부를 열심히도, 잘하는 학생도, 동시에 신경도 쓰지 않는 학생이다.(당연히 학점도 처참하다) 단지 정말 프로그래밍에 관심이 많았고, 어렸을때부터 꿈이었기에 현재 학과를 왔고, 대학교를 와서 코딩을 시작하였다. 이런 사람이 학기 회고록을 쓴다니 의아해 하는 사람들이 많을것이다. 이번학기회고록을 작성하는 이유는, 나에게 매우 뜻깊었고, 그 어느 학기보다 가장 힘들면서 열정적으로 살았으며, 나의 다음 출발을 위한 쉼표를 찍는 학기이기 때문이다. 사실 모든 내용을 다루진 않을것이며, 간단한 나의 이야기, 이번학기 중점이 되었던 팀플들과 그와 관련된 과목들의 스토리로 이야기를 조금 해볼까 한다.
여름방학과 2학기의 시작
ETRI 부터
방학때 ETRI(한국전자통신연구원)연구연수생 인턴을 다녀왔다(ETRI 회고록은 늦었지만, 조만간 작성할것이다). 사실 처음에 ETRI를 지원할때 합격할꺼라는 생각을 하지 못했었다. 경쟁률이 높은 곳이기도 하고, 분야를 바꾼지 얼마 안된 상황에서 바꾼 분야에 대해 지원을 하였기 때문이다.당연히 경험도 부족하고, 실력도 부족했다. 합격을 하고 난 후 기쁜마음, 얼떨떨함과 동시에, 두달동안 열심히 공부하고, 배워야겠다고 스스로 독기(?)를 품었다. ETRI에서 인생에서 또 이런 좋은 사람들을 만날 수 있을까? 싶은 좋은 동기 친구들과, 좋은 석/박사님들, 교수님을 뵙게되었고, 이 분들에게 많은 좋은 영향을 받고, 많은 지식들을 얻을 수 있었다. 당연히 나도 스스로가 부족한걸 알기에 이를 발전시키기 위해 열심히 공부했다.(아닐수도 있음 ㅎ) 행복한 두달이 마침표를 찍어갈 때쯤 다시 학교로 돌아가야한다는걸 인지하였다.
헐.... 바로 개강이네?
정말 행복한 두달이었고, 스스로가 많이 성장한 두달이었다. 하지만 스트레이트로 학기를 시작하려니 스스로가 지쳐있는거 같다는 느낌이 많이 들었다. 학교갈 생각을 하니 힘이 빠지고, 휴학하면서 두달동안 배운거를 가지고 확장시킬까도 고민했었다.그래도 엇학기 복학이 싫었던 나는, 개강 주에는 여행을 가서 힐링을 하고 오기로 하였다. 같이 1년 반동안 같이 고생한 동반입대 했던 친구와 함께 여수 여행을 다녀왔다.
아름다운 풍경들과, 여러곳을 걸어다니고, 맛있는것도 먹으며, 지친 마음을 잘 씻어내고 왔다. 무엇보다, 비가 조금씩 내리던 날이었는데, 해질녘 하늘에서 엄청 아름다운 노을과, 반대편에는 카메라에 담아도 선명할 정도의 무지개가 떳던것이 아직도 기억에 남는다. 그때 나는 진짜 멍하니 5분동안 서서 하늘만 바라봤던것같다.
나의 간단한 이야기, 그리고 새로만난 후배
프로그래밍을 학교 들어오면서 시작하였다. 당연히 처음에 막막한건 매한가지였다. 뭐부터 할까? 부터 시작해서 내가 잘 하고 있는걸까? 라는 의문까지 당연히 나도 들었던 생각들이다. 내 인생에서 운이 좋은 상황중 하나는 나를 가르쳐주신 훌륭하신 선배분들을 만난것이다. 그리고 그 분들과 1,2학년때 학부생 연구원 생활을 할 수 있었다는것이 인생에서 운이 좋은 상황중 하나였다. 그분들에게 되게 많은 좋은 영향을 받았다. 그분들이 하는걸 따라하고, 그분들이 말씀해주시는걸 가볍게 여기지 않고, 몇번 곱십어가며 생각해보았다. 어떻게 보면 지금의 나는 그분들이 있었기에 있는것일것이다. 선배님들 항상 말씀드리는거지만 항상 감사합니다.
내가 결코 이분들만큼 뛰어나고, 훌륭한 선배가 되지는 못할것이다. 그리고 나는 선배님들만큼 잘하는 사람도 아니다. 개인적인 생각이지만, 현재 재학중인 학과는 선후배간의 학술적 연계가 제대로 이루어지지 않고 생각하고 있으며, 그것이 현실이라고 당당하게 말할 수 있다. 스스로 생각했을때 선후배간의 학술적 상호작용은 활발히 이루어져야한다고 생각한다. 내가 당연히 누군가를 가르칠 입장이 아니라는걸 알고있다. 선배분들이 나에게 해주신 만큼은 아니지만, 적어도 내가 만난 동기든, 후배든 나는 좋은 영향을 주고, 시야를 넓혀주며, 내 지식과 경험을 나눠주는 선배가 되고싶었다. 그리고 이것은 1학년때부터의 다짐이었다.
이번학기에 보찬이라는 새로만난 후배 한명이 있다. 지금 생각해보면, 정말 우연히 이친구를 만난거같다. 후배들 술자리에 잠시 앉았다가 만난 친구이다. 잠시 앞으로 어떤 분야로 나가고 싶은지에 대한 이야기가 나왔을때 그 친구는 데이터 사이언스를 말했다. 사실 나는 데이터사이언스를 2학년까지 공부하다가 포기한 사람이라, 옆에서 전담마크는 못해주지만, 이 친구에게 2년간 가져왔던 경험과, 지식들, 어떤 길로 가는것이 올바른지, 외적인 지식 등을 가르쳐 주기로 결심하였다. 보찬이에게 미안하면서 고마운 점은, 직접 무언가를 가르쳐준적은 없는거같다. 단지 키워드와 방향성을 잡는법, 상황에따라 문제해결 하는법만 가르쳐 줬는데 스스로 잘 해나가고 스스로 흥미를 붙이는것을 보며, 신기하고, 앞으로 없던 실력이라도 길러서 이 친구에게 알려주고 싶다는 생각이 들었다. 그리고 스스로 느꼈을때 보찬이의 열정과 노력은 누구보다 높으며, 앞으로 행보가 매우 기대되는 친구이다. 처음만난 보찬이와 회고록을 쓰고있는 지금 시점의 보찬이를 비교했을때 정말 많이 발전했다(이게 한학기에 발전할 수 있을 정도인가? 만큼). 그리고 2학기를 마치며, 나는 이친구에게 내가 가진 대부분의 지식과 경험을 나누어 주며, 제대로 키워보기로 결심하였다.
2학기 시작
다시 2학기로...
여행도 가서 지친 마음도 씻고 왔겠다, 마음 다잡고 2학기를 시작해본다. 3학년 2학기 특성이지만, 프로젝트가 많고 원래 빡센 학기로 유명하다. 근데 이 나사빠진 미친 필자는 초과학점이라는 주옥같은 결정을 내리게 된다. 뭐 어쩌겠습니까... 제가 내린 결정 제가 책임지고 악깡버 해야죠... 다시 학교를 가서 수업을 들으니, 재밌었고, 무엇보다 동기들이랑 학교를 다니는거 자체가 행복했다. 회고록에서 다룰 내용은, 가장 큰 팀플이었던 데이터베이스 및 실습 그리고 오픈소스 소프트웨어였다. 약간의 자랑이 섞인 결론을 말하자면, A+, 1등으로 좋은 성적을 얻었다.
데이터베이스 및 실습
나는 좋은 팀원들을 만났다. 모두 열정적이었고, 회의할때도 제때 참석하여 서로 머리를 맞대고 좋은 의견을 나누었다. 주제를 정하고 Database Table ERD 구상까지 완료하고 팀 프로젝트 요구사항이 나오는 날이었다. 근데 이게 웬걸....
PHP로 웹페이지를 구현하셔야됩니다.
WTF... PHP요...?? 음?왜?? 쓰기 너무 싫은데?? 나 안해~~~ (하면서 아래 같은 주제 구글창에 하루종일 검색함)
지금 다시 생각해보면, 쓰기 싫었던걸 둘째치고 가장 컷던것은, 새로운것을 받아들여야한다는것에 대한 두려움이었던것같다. 한번도 안써본 언어를 공부해서 웹을 만들어야한다라...
팀 역할 분배는 Front-End 1명, Back-End 2명으로 이루어졌다. 나는 우선 여태까지 그래왔듯이, 부딫혀보기로 결심하였다.
인터넷을 뒤져가며, 여러 개념들과, 코드를 읽고, 그것도 부족하다 생각하여, 도서관에서 PHP 책 한권을 빌려 4,5일동안 다 읽었다.대략 PHP 공부하는데 2주정도 걸린거같았다. 결과는 역시 막상 부딫히니 전반적인 구조와 solution이 머리속에서 만들어지기 시작했다. 프로젝트를 시작하기 전에 나는 팀 협업 인프라를 도커를 활용하여 구축하기로 하였고, 거기에 사용되는 되는 도커파일을 만들기로 결정하였다. 실제 서비스를 호스팅 하기 위해 만들어야 하는 환경과 동일하게 도커파일을 구성하였다. (PHP + Apache2 + OCI8 + Linux)
환경을 구축하니, 협업도 활발히 이루어지고, 생산성도 증진되었다. 그 뿐만 아니라, 다른 조에게도 해당 인프라를 서버에 올려 제공해 주었고, 도커파일을 공유하여 사용하도록 해주었다. 이번학기 오픈소스 시간에 도커에 대해 간단히 배웠다 하지만 애들은 정작 이게 그래서 왜쓰는데에 대해 의구심을 가졌지만, 도커파일에 대한 설명과 제공을 통해 도커에 대한 전반적인 개념과 어떻게 활용을 하는지 알려줄 수 있었던 기회가 된거같았다. 다들 막막해하던 상황에서 해당 방식을 제공하여 개발하는데 더 편했다라는 말을 들어 도움이 된거같다는 말을 들었을때 스스로 뿌듯했다.
한 11월 즈음일까 안드로이드 앱을 만들 수 있으면 만들어오라고 교수님께서 말씀하셨다. 애들이 단체로 멘붕이 오기 시작했다. 웹도 버거운데 안드로이드까지...?? 아 추가적으로 우리는 Laravel같은 PHP 웹 프레임워크도 사용할 수 없었다. 연초에 잠깐 안드로이드 할일이 있어서 안드로이드를 했었다. 그때 당시 공부했을때 안드로이드는 DB와 직접적인 통신이 불가능하고, API 서버를 통해 통신을 하는것으로 공부했다. 하지만 애들은 막상 API에 대한 개념을 가지지 못한 친구들도 많았고, JSON 형태로 반환을 하는거에 대한 인지를 못하고 있는 경우도 많았다.
동기들한테 대략적인 API 통신방식의 원리와 JSON 형태의 Response에 대해 알려주었다. 그리고 막상 순수 PHP로 로직을 작성하려니 코드가 더러워질 가능성도 높고, API-Endpoint 관리하는데 복잡해질것같다는 생각이 들었다. 그래서 PHP를 조금 더 깊게 파볼겸 PHP RESTful API 인터페이스를 만들었고,동기들에게 이를 배포하였다.
결국에는 실제 서버 PHP 버전이 너무 낮아 안돌아 갔지만, 직접 뭔가 준 프레임워크를 만들어 본거같아 색다른 경험을 한거같다. 그래도 이를 통해 동기들에게 API가 무엇인지, 이는 어떻게 활용되는지 등을 알려줄 수 있어서 보람찼다.
12,1월동안 인터페이스 코드를 다듬어 보고, 낮은 버전에서도 지원되게끔 범용성을 늘려볼 계획이다. 결국 우리조는 안드로이드는 결국 완전히 구현하지 못했지만, 서버를 담당하던 나는 Express로 API 까지 하였다.
아직 API Document 작성과 Pagination 기법을 PHP에 맞춰서 어색한 부분이 있는데, 이 또한 종강하고 바꿔볼 생각이다. 그리고 우리 조는 끝까지 개인의 최선을 다하며, 결과물을 만들어갔고, 그 결실을 맺었다.
우리는 이와 같은 아키텍쳐의 서비스를 작성하였고, 성공적으로 팀플을 마무리할 수 있었다.
DB 팀플 Github : https://github.com/2022-DB-502-Group2-Project
DB 팀플 최종발표 PPT : https://github.com/2022-DB-502-Group2-Project/Final-Presentation
오픈소스 소프트웨어
개인적으로 이 팀플은 난이도가 좀 어렵다고 생각이 든다. 우선 기간도 매우 짧다. 중간고사 끝나고 일주일 후부터 거의 3,4주(?)동안의 기간만 주어졌으며, 조건은 아래와 같다
- C언어 프로젝트여야합니다
- Linux에서 돌아가야합니다(Window X)
- 소스코드 아키텍쳐를 분석, 사용되는 자료구조, 전반적인 알고리즘 흐름을 파악해야됩니다
- Contribution할 내용을 추가하세요
우선 가장 큰 난관은 "Linux에서 돌아가야합니다" 이다. 대부분의 애들은 Windows를 쓴다. 당연히 Linux는 생소하고, 그나마 수업동안 PaaS인 AWS Instance로 CentOS를 생성해 연습했지만, 이는 솔직히 부족하다. 그리고 설령 소스코드를 윈도우에서 소스코드 분석, 고친다고 하더라도, 테스트를 하거나, 제대로 확인하는데 어려움이 있을 수 밖에없다. 이를 인지하고 있었기에, 팀원들이 작업할때 편하고, 리눅스에 익숙해 질 수 있도록 연습환경을 제공할 겸, 윈도우 VS Code에서 원격접속 할 수 있도록 협업 환경을 구축하였으며, 이를 처음 제안서 발표할때 같이 발표 및 코드를 공개하였다.
이렇게 구축을 하니 가장 좋았던 점은, 친숙했던 VS Code에서 사용했던 C/C++ Extension을 사용하여 코딩할 수 있을 뿐만아니라, VS Code에는 참조, 정의를 따라가는 기능이 내장되어있다.
이 기능을 활용해가며, 코드를 분석할 수 있으니 매우 편했으며, contribution하기 위한 기능을 만들때도 매우 편했다. 해당 환경을 친한 동기들이 있는 다른 조에도 제공을 하였으며, 우리 두 조는 사이좋게 전체 1,2등을 하였다. 우리조는 hstr이라는 오픈소스를 커스텀 하였다. hstr은 리눅스 CLI 환경에서 history에서 검색, 북마크 기능을 제공하는 오픈소스이다.
사실 주제를 바꿀까 많이 고민 하였지만, 생각이 난것이 여러 history중 일일히 고르는거보다, 사용자가 지정한 명령어와 연관된 history만 모아놓고 볼 수 있으면 좋지 않을까? 하는 생각이 들었고, hstr에 "focus" 라는 기능을 추가하였다. 약간의 버그가 있지만, 기능 구현을 성공하였다. 발표할때는 도커환경 두개를 미리 띄워놓고, 하나는 기존 hstr, 하나는 기능이 추가된 hstr을 설치해놓고, ssh로 각각 접속하여, 차이점을 설명하며 데모를 진행했다. 그리고 결과는 성공적이었다.
오픈소스 팀플 Github : https://github.com/OSS-501-Group2
이번학기 느낀점, 좋았던점
첫번째로 느낀것은 내가 못하고 있지는 않구나에 대한 확신이 들었다. 나는 스스로를 냉정하게 평가하는 편이다. 이번학기를 하면서, 스스로 상황에 따라 환경을 구축하고, 간이 프레임 워크를 만들고, 최적의 경우를 찾아가는 능력이 최소한은 있다고 생각이들었고, 나 자신이 앞으로 이 능력을 발전시켜 나갔으면 하는 바램이다.
두번째로 절대로 겁먹지 말자 그리고, 도구탓을 하지 말자이다. 모든 팀플을 시작할때 겁을 먹고 일주일정도 시간을 끌었던것같다. 내가 할수 있을까? 라는 마음을 가졌던것이다. 하지만, 이는 부딫혀보지도 않고 했던 생각이다. 매년 나 스스로에게 말하는것 같지만, 겁먹지 말고, 안되더라도 최대한 끝까지, 그리고 도전의식을 가지고 모든것에 부딫혀 봐야한다. 도구탓 대한것은 PHP와 관련되어있다. 사실 지금 PHP가 안쓰이는것은 맞다. 하지만, PHP 또한 웹을 구성하는 언어중 하나이다. 어떻게 생각해보면, 웹개발자가 웹에 대한 구조와 흐름을 이해하는데 어떤 언어로는 구현 잘할 자신있는데 어떤 언어는 그냥 싫어서 하기싫다고 말하는것은 무책임해 보이고 그사람의 역량에 대해 의구심을 가질만한 행동이다 라는 생각을 하게되었다. 앞으로는 그게 뭐가 됐든 주어진 상황에 최선을 다하고, 깊게 탐구하는 자세를 더 확실히 해야할 것같다.
좋았던 점은 같이 수업을 들었던 동기들에게 좋은 영향을 준 점이다. 물론 내가 가지고 있는 경험과 지식 선에서겠지만, 특정 상황에서 여러가지 해결법을 제시해 주며, 그 해결법들을 도출해내는 방법에 대해 알려주었고, 개발을 하는데 단지 코드만 작성하는게 아닌 개발을 하기 위한 환경을 구성하는 방법부터, 리팩토링 방법까지 등 시야를 넓혀줄 수있는 기회가 되어서 좋았다. 개인 인생 모토중 하나인 내가가진 지식을 나누고 모두와 함께 나아가자 라는것을 이번학기에도 실천할 수 있어서 좋았다.
쉼표 ,
나는 이제 4학년을 앞두고 있다. 하지만 나는 1년의 휴학을 하기로 결심하였다. 이번학기가 정말 재미있고 유익했지만, 스스로가 많이 지쳐있고 장기간의 휴식이 필요한 상태라는것을 깨달았다. 20살부터의 나를 돌아보면, 너무 컴퓨터 앞에만 앉아있었다라는 생각이 들었다. 물론 이걸 재밌어서 하는건 좋지만, 세상에 대한 시야를 넓히고, 컴퓨터가 아닌 다른 여러 분야에 대해 도전해볼 필요성도 있다고 느끼며, 내년이 마지노선이라고 생각된다. 1년간 휴학을 하며, 평소 공부하고싶었던 분야도 공부하고, 아직 부족한 역량들도 보충하며 여행도 많이 다니고, 많은 사람들을 만나 여러가지 영감을 얻고싶다. 이를 위해 1년이 결코 긴 시간은 아니지만, 짧더라도 앞으로 더 나아갈 나를 위해 잠시 쉼표를 찍기로 결심하였다. 나 자신에게 앞으로도 열심히 잘 달려보자 라는 응원을 남긴다.
이상으로 3학년 2학기 회고를 마친다.
2022년 12월 17일