2021 회고록

2yunseong·2022년 2월 25일
0

초록

벌써 2021년이 지나갔다. 전역 직후 했던 열심히 살겠다는 다짐도 잊혀진지 오래된 것 같다. 사회에 나오면 무엇이든 할 수 있다고 생각했는데 나도 별반 다를 것 없는 대학생이였다.

지난 2021년을 뒤돌아보며, 2022년, 또는 그 이후를 더 가치 있는 삶을 살기 위해 이 회고록을 쓴다. 지난 날을 뒤돌아보며, 나의 단점, 결점등을 가림없이 적어보면서, 다음에는 같은 실수를 하지 않도록 다짐하기 위함이며, 잘한 부분은 미래에도 가져가고 싶기에 작성한다.

회고록은 가급적 시간 순으로 작성되었다. 중간중간 생각 나는 큰 사건을 위주로 서술되었다. 개발적인 회고보다는 1년동안의 나 자신의 인생에 대한 회고를 한다. 개발적인 부분이 물론 미래를 위해서 중요하긴 하나 내 삶에 지엽적인 부분일 뿐이고, 내 삶에 모든 태도가 개발에 대해서도 투영된다고 믿기 때문이다.

이마트 아르바이트

전역한 이후, 복학하기 전까지 이마트 아르바이트를 했다. 나름 시급도 쌔고, 주휴수당도 챙겨주는 등 복지 부분이 나쁘지 않았다. 오전에는 농산 코너에서 농산물을 진열을하고 오후에는 인사파트장님이 구성한 근무표에 따라 발열체크 혹은 SEO(셀프계산대) 에서 근무를 했는데, 차라리 일을 하는 8시간 내내 진열을 했으면 좋겠을 정도로 사람을 대하는 일이 정신적으로 힘들었다. 세상에는 상식 이외에 사람이 많았다. 특히 2층에서 발열 체크 할 때 1층에서 측정했다고 보내 달라고 화를 내는 사람들이 많았다. 그 때는 막 이해가 안되고 화도 나서, 계속 들었던 말을 곱씹고 스스로 다시 돌아보니 그럴 필요가 없었다. 이미 일어난 일이고, 흘러 넘길 수 있는 부정적인 일이면 연연하지 말고 넘기는 태도를 가지자.

프로젝트

첫 프로젝트, 에코노 냉장고

학과 선배의 추천으로 에코노베이션이라는 동아리에 지원했다. 면접을 잘 보지 못했다고 생각했는데, 붙어서 굉장히 기뻤다. 막연히 꿈꾸던 개발자의 여정에 한 발짝 나아간 것 같아 불안했던 마음이 사라졌다. 첫 프로젝트 팀원은 웹개발, 프로젝트 경험이 있던 친구라서 웹 프론트엔드 뿐만 아니라 노션, 깃허브 사용법을 많이 배웠다.

처음 개발 한다고 내 자신의 안전지대(처음 하니까 이 정도면 괜찮겠지?)에 안주하는 생각을 많이 한 것 같다. 이제는 그러지 말자. 할 수 있는데 까지 해보자. 현실에 안주하지 않는게 가장 어렵지만, 해야한다고 생각한다. 해야겠다고 생각이라도 해보자. 항상 안되는 것이지만, 문제 해결을 위해 삽질을 마다하지 말자. 지금까지는 삽질이 고통스러워서 그냥 현실과 타협하고 이 정도만 구현해야지 라고 생각했었던 것 같다. 또한 첫 프로젝트 때 회고도 하다가 말았다. 리팩토링도 할 것이라 다짐했지만 결국 르블랑의 법칙을 어기지 못했다. 다시 돌이켜 보면 나 자신의 굉장히 안좋은 습관 중 하나였다고 생각한다.

두 번째 프로젝트, EggMeet

깃허브 주소 : https://github.com/JNU-econovation/EggMeet

첫 번째 프로젝트를 웹 프로젝트를 하고, 두 번째는 iOS 어플리케이션을 개발하였다. iOS는 웹에 비해 너무나도 알아야 할게 많았다. 생소한 swift 문법은 기본이고, 프레임워크 사용, 라이브러리 사용, 그리고 서버와 통신하는 코드를 작성하는게 아예 처음이라봐도 무방한 나로서 프로젝트를 진행하면서 굉장히 힘들었었다. 디자인을 넣는 것도 쉽지 않았다. 채팅 말풍선을 입히기 위해 디자인을 넣으려고 하는데 또 그대로 알아야 할 게 너무 많았고, Storyboard 방식과 코드와의 방식이 다른 점도 있었다. 자료를 찾음에도 한국어는 물론이고 영어로 된 자료도 많이 존재하지 않았고, 내가 원하는 결과를 찾기에도 많이 난해하였다.

하지만 그러면서 웹소켓, http 요청- 응답, MVC패턴등 다양한 것을 iOS 개발 외적으로 많이 공부하면서 성장했다. 또한 프로젝트를 하면서 해당 기능을 구현하려고 고민하고 삽질하는 과정에서 성장했다고 생각한다.

또한 오픈소스 기여도 했다. 비록 예제 코드와 README에 있는 오타 수정이였지만, 사람들이 쓰는 라이브러리가 더 좋아지도록 하는 마음으로 내 자신이 기여했음에 뿌듯함이 있다. 더 많은 사람들이 내 코드로 인해 좋은 삶을 살았으면 좋겠다.(그게 개발적으로든 인생으로든)
StompClientLib

느낀 점은 앞서 말했듯이, 이전 프로젝트보다 코드를 어떻게 이쁘게 짜야하는가 고민을 하다보니 코드 분할도 해보고, 변수, 함수 이름도 개선해보고, 코딩 컨벤션도 맞춰봄으로 이전 프로젝트보다 훨씬 코드가 보기 좋아진 것 같다. 물론 저번 프로젝트에 비해서이지, 절대적이지는 않다. 그래도 한걸음 한걸음 나아가다보면 이전보다 더 좋은 코드를 작성할 것이라 믿어 의심치 않는다.

1학기 수업 개요

1학기는 4.xx 으로 마무리 지었다. 높은 학점이지만, 뭔가 실질적으로 얻어간게 없는 느낌이 들어서 그렇게 큰 성취감은 받지 못했다. 개발적인 부분이나, 내가 제대로 공부하지 않았다고 생각했는데 학점을 높게 받은 과목에는 의문을 품어야 겠다. 결국 단기적으론 좋겠지만, 지금 내가 공부하고 있는 방법이 성공하는 방법은 아니라고 생각하기 때문이다.

또 한, 필요없는 공부는 없다. 라는 생각을 많이했다. 관련이 없어보이지만 상당히 많은 부분이 서로 연결되어 있었다. 또한 문제 해결을 위한 통찰력이 향상되는 것 같다고 생각한다. 배운 만큼 다양한 방식으로 생각해 볼 수 있기에.

자바프로그래밍

자바 프로그래밍은 한 과제에 4~5시간 걸리는 만큼 상당한 과제량이었다.. 과제를 보고 문제를 해결할 방법을 생각하기 보다는 속히 양치기(일단 무조건 풀기)로 접근하였다. 중간 및 기말시험은 다소 평이했다. 하지만 복습을 안하니 자바의 주요 개념들이 대부분 빠져 나갔다. 앞으로 중요한 과목이나 앞으로 쓰일 것 같은 과목은 복습을 철저히 하자. 중요개념을 정리해 두는 것도 좋은 방법인 것 같다.

소프트웨어공학기초프로젝트

Java를 이용해 학생 정보 관리 프로그램을 예제 형식으로 팀 프로젝트로 진행하였다. 팀 프로젝트를 진행하면서, 팀장을 맡았는데, 팀원들끼리의 커뮤니케이션도 없고 잘 하고 싶은 마음도 없어보여서 화를 냈다. 어떻게 해야 좋은 방향으로 진행할 수 있었는지 다시 한번 생각해 보아야 겠다.

객체 지향 프로그래밍에 대한 개념이 부족한 상황에서 개발하려드니 간단한 프로그램임에도 불구하고 코드가 많이 난잡했다. 항상 어떻게 하면 좋을 코드를 짤 수 있을지 고민해보고, 그게 옳은 방법이 아닐지라도 기록해보는 습관을 들여야겠다. 나중에 충분한 지식을 익힌 뒤 뒤돌아보면, 그 때 왜 이렇게 짜는 것이 잘못된 방법인가 알 수 있기 때문이다.

선형대수학

과제중에 LU 분해과정을 코딩하는 게 재밌었다. 시간은 오래 걸렸지만, 수학적인 개념을 직접 적용해 코딩했던 점이 생각을 많이 하게 하는 과제라서 양질의 과제라고 생각이 든다. 하지만 기말고사 범위의 공부할 때는 나태해져서 끈기 있게 하지 못했다. 수학이란 당연히 어렵고, 이해하려고 계속 도전했어야 하는데 그러지 않아서 개념 겉훑기로 시험을 쳤는데 시험이 대체로 쉽게 나와 좋은 성적을 받았다. 사실 2학기가 된 시점에 인공지능 수업을 들으며 선형대수학에 관한 개념이 나왔는데 책을 한 번 다시 보아야했다. 이는 1학기 때 공부가 제대로 되지 않았음의 반증이다. 좋은 공부 습관을 기르자.

이산수학

이산수학은 재미있는 과목이였다. 논리와 명제가 가장 흥미로웠고, 그래프 이론도 가볍게 맛볼 수 있는 예제여서 재미있었다. 이를 코드로 구현해 볼 생각을 했어야 하는데 생각만 하고 건너 뛰었다.. 말만 하지 말고 제발 좀 하자. 르블랑의 법칙을 다시금 느끼는 시간이다.

논리회로

교수님 탓을 하는 것은 아니지만 교수님 설명이 너무 축약되있어서 혼자 공부하는 법을 익히는 좋은 수업(?) 이였다. 컴퓨터구조를 듣고 다시 돌아보니 논리회로를 배우지 못했다면 컴퓨터구조를 포기하지 않았을까 싶다. 사실 수업을 들을 때는 이게 왜 필요하지 했는데, 논리회로를 기반으로 컴퓨터구조를 배우고, 컴퓨터가 동작하는 원리를 깨닫다보니 역시 기초가 중요하다는 생각을 다시 한 번 했다. 기초가 단단해야한다.

리눅스 시스템

리눅스 시스템은 상당히 도움이 많이 되었다. 다만 부족한 점은 나의 영어실력이었다. 100프로 영어 강의 였는데, 초반에는 이해가 쉬웠는데, 후반 갈수록 내 영어 듣기 실력에 한계를 깨달았다. 영어를 못하는 나여서 시간으로 때웠던 것 같다. 개발자는 영어실력이 중요하다라는 걸 다시 한번 상기 시켜주는 수업이였다. 리눅스와 맥, Git bash에서 사용하는 명령어가 매우 유사해서 상당히 도움이 많이 되었다. 기회가 된다면 다시 한 번 우분투 리눅스를 공부해야 겠다. (꼭 해보자)

2학기 수업

2학기 수업은 4.xx 로 마무리했다. 1학기보다는 낮아진 성적이지만, 1학기보다 흥미를 가진 수업도 많고, 새로운 분야를 알아가서 흥미를 가지기도 했다.

자료구조

이론 중심의 설명이였지만, 다양한 자료구조를 접해보고 알고리즘도 간략하게 접할 수 있어서 얻는 것이 많았던 수업이였다. 이 수업을 들으며 배운 내용을 그냥 지식 습득에 그치지 않고 생각해보는 과정이 중요하다고 느꼈다. 간단한 예시로 이진 탐색의 시간복잡도가 logN 이라는 것을 아는 것에 그치지 말고, 왜 이렇게 시간 복잡도가 나오는지 고민해보고 결국 이런 고민의 해답은 동작 원리를 알아야 하기에 자연스럽게 기억에 오래 남는 것이라 생각한다.

시험도 마찬가지로 이론을 바탕으로 동작원리를 알아야 풀 수 있는 문제가 나와, 좋은 성적을 받을 수 있었다고 생각한다.

네트워크와모바일기술

교양 수업이지만, 워드프레스라는 툴을 하나 알아갔다. 생각보다 기업에서 정적 웹사이트를 구현할 때 워드프레스라는 툴을 이용한다는 것을 알고 조금 놀랐다. 간단한 웹사이트 기획이더라도 굉장히 생각할 게 많았고, 누군가에게 보여준다는게 교양 수업이지만 에코노베이션 주간발표에 버금 갈 정도로 부담이 되었다.

C프로그래밍기초및실습

이 과목은 대체로 난이도가 매우 평이하였다. 개념을 요구하는 문제가 많이 출제 되었고, 과제 수준 또한 개념을 확인하는 내용위주로 나와 문제를 해결하는데 큰 어려움이 없었다.

확률및통계

거의 2년 넘게 손을 놨던 수학이라서, 처음 순열과 조합을 보는 대도 생소하게 느껴졌다... 확률 부분은 확실히 알고리즘 문제를 해결할 때 도움이 많이 될 것 같았다. 통계부분은 아예 생소한 개념이 많아 힘들었지만, 유튜브나 이것저것 찾아보아 해결하니 어느 정도 개념도 잡히고, 덕분에 좋은 성적을 받아 갔다고 생각한다.

아쉬운 점은 시험에서 나의 능력보다 더 높은 계산능력을 요구해서.. 시간이 부족했다.. 물론 다 부족했다고 말하긴 했지만 계산하는 과정을 좀 더 연습했더라면 문제를 더 많이 풀지 않았을 까 싶다.

컴퓨터구조

컴퓨터의 기본 구조를 간단히 알 수 있었던 흥미로운 수업이였으나, 난이도가 상당하였다. 수업만 들어서는 해결할 수 없는 과제가 종종 나오곤 했는데, 수업을 듣고 개념을 적용해 문제를 해결하기가 생각보다 시간대비 리소스가 많이 들었다.

프로젝트 - Simplify Assembler 구현

팀원이 8명... 이나 되는 프로젝트 였다. 간단한 어셈블러를 구현하는 것이 였는데, 생각보다 인터럽트 부분 처리가 까다로웠다. (결국 구현하지 못하였다.) 팀원은 8명인데 개발및 기획을 2명이서 전담하는 (속히 독박) 일이 발생하였다..

협업할 생각이 없는 사람들과 프로젝트를 해보는 것도 힘들었지만.. 좋은 경험이였다. 덕분에 코드를 어떻게 짜면 좋을지 고민해보는 시간을 가지고, 공책을 써서 로직을 정리한 다음 그대로 옮기는 시도도 해보았는데 생각보다 내가 의도한대로 잘 되어서 코드를 바로 작성하기 전에 정리를 하는 습관을 들여야 겠다.

객체지향설계프로젝트

말은 객체지향설계프로젝트이지만, 인공지능의 개요를 배우는 느낌의 과목이였다. 선형대수학이 나와 1학기 때 공부한 걸 다시 뒤져보는 일도 있었다. 이 과목을 공부하면서 다시금 알고리즘의 중요성을 깨달았다. (왜?) 수업 때 다이나믹 프로그래밍, 미니맥스 알고리즘 등도 있었지만 결국 코드를 작성할 때 알고리즘을 잘 알수록 더 코드를 효율적으로 짤 수 있었다고 생각한다. 컴퓨터가 무조건 이기거나 비기는 틱택토 과제가 있었는데, 나는 미니맥스 알고리즘을 모르는 상태라서 재귀함수를 사용하지 않고 사용자가 둔 수를 바탕으로 규칙을 세워서 그 규칙에 맞게 대응하는 식으로 구현하였다. (사용자가 1에 두었을 때.. 그다음 컴퓨터가 이렇게 두고 이렇게 두었는데 사용자가 3에 둔다면...)

프로젝트 과목답게 마지막이 신경망을 설계하는 문제가 두문제가 나왔는데 유전 알고리즘은 쉽게 풀었으나 다중신경망을 사용해 손글씨를 판별해 내는 알고리즘을 구현하지 못하였다.. 시도 해 볼 수 있었지만 시험도 끝나고 그 동안 공부, 프로젝트 스트레스를 많이 받아 쉽게 놓아버린 것 같다. 힘든 상황에서도 포기하지 않는 끈기를 길러보자.

좋은 개발자? 되고 싶은 개발자?

이 부분에 대해서는 고민을 많이 해봐야 될 것 같다. 사실 어떠한게 정답인지도 내 수준에서는 시시비비를 가릴수는 없지만, 많이 고민하면 되지 않을까? 라는 생각이 들었다. 이 부분은 항상 생각해보자.

개선할 점 간단 정리

모든 프로젝트에서 항상 고민하는 내용이지만, 깨끗한 코드를 짜는 고민을 해야 겠다.
부족한 끈기를 기르자. 집요하게 문제에 달려드는 습관을 길러야 한다.
자투리 시간을 의미있게 써야겠다는 생각이 든다.

2022년에는 생각해볼 것

좋은 질문을 많이 하는 개발자가 되자. 좋은 질문을 많이 하려면?

문제 해결 능력을 기르려면 어떻게 해야 하는가?

프로그래밍 언어는 사고를 옮기는 것 뿐, 제일 중요한 건 문제 해결 능력이 중요.

다양한 접근, 다양한 시도를 해보는 것도 가치있는 일이다.

profile
개발 발자국 남기기

0개의 댓글