본문 바로가기
Life/Pause and Ponder

2020 Year Review

by zxcvber 2020. 12. 31.

요새 주변 지인들 사이에서 회고록을 작성하는 것이 유행이다. 안 그래도 새로운 회사에서 4분기 회고를 작성하면서 개인적으로도 2020년 회고를 작성해야겠다고 생각했는데, 잘 됐다.

Can I remove and reinstall 2020? I believe it has a virus!

내가 뭘 했는지 궁금하면 github commit history 를 보면 된다. ㅋㅋ

블로그 & 기록하기

기록을 남기지 않으면 많은 것들이 기억 속에서 사라지는 것을 경험했다. 어쩌면 내가 노트 필기와 자료 정리에 끔찍하게 집착하는 것도 그런 이유가 아닌가 싶다. 일을 하는 경우에도 마찬가지. 문서화의 힘은 매우 강력하다.

올해부터 기록을 남기자는 생각으로 블로그를 시작했다. 처음에는 github.io 를 사용하려 했으나 불편하다고 느껴서 tistory 로 이주했다. 좋은 시도였지만 생각보다 글을 많이 쓰지는 않았다. 다 어디로 갔는지는 모르겠지만 앞으로 더 노력하도록 하자. 회고로부터 분명 많은 것들을 배울 수 있다고 확신한다. 나중에 분명 다 귀중한 자산이 되어 있을 것이다.

Github private repo 에 logs 가 있다. 할 일 목록을 적어두었다. 들어야 할 강의라던가, 앞으로 읽을 책 혹은 공부할 주제들을 적어두었다. 추가로 곧 만나고 싶은 사람도 적어두었다. 이외에는 달 별로 마크다운 파일을 만들어서 정리를 해뒀는데, 잘 정리했다면 12개가 있어야 하지만 4개밖에 없다. ㅎㅎ. 근데 이것도 이해가 되는 게, 9월까지는 별 다른 일이 없었다. 10월부터가 '진짜'였다. 또 한편으로는 그 4개가 1, 2, 7, 11월인데, 이 네 달에 가장 많은 일들이 있었다. 왜냐면 이외의 달들은 코로나 당했기 때문이다.

1, 2월에는 코로나가 유행하기 전 많이 돌아다니며 사람들 만나는 등 개인적인 이유로 바빴고, 7월에는 이직 준비 때문에 심란했으며, 11월에는 이직을 하고 나서 정신이 없어서 10~11월을 한꺼번에 정리해 뒀다.

이제 차례차례 했던 것들을 정리하려고 한다. 학문적인 내용들은 뒤로 하고 우선 인생 이야기부터 하겠다.


육군훈련소

5/14 ~ 6/11 육군훈련소에 20-22기로 다녀왔다. 25연대 10중대 1소대 3분대 28번 훈련병 이성찬. 중대장 훈련병으로 수료했다. 딱히 뭐가 있는 것은 아니다. 다만 중대장 훈련병을 맡게 된 이유가 좀 웃기다.

훈련소에 가기 전의 나는 반드시 중간만 하고 조용히 다녀오겠다고 생각했다. 혼나기 싫었고, 나 때문에 남들이 피해 보는 것도 원하지 않았기에 맡은 임무만을 잘 수행했다. 그러면 눈에 안 띄고 조용히 지내다가 올 수 있을 것이라 생각했다. 나의 엄청난 착각이었다. ㅋㅋ. 결국 성실하고 일을 잘 처리할 것 같은 이미지가 되어버렸고, 분대원들 덕분에 때문에 학교까지 알려지게 되면서 분대장들에게 인정받게 되었다.

중대장 훈련병을 뽑을 때가 되었는데 지원자가 없자 분대장이 나를 추천했고, 훈련소를 조용히 다녀오고 싶었던 나는 당연히 거절했다. 하지만... 계속 고민하다가 어차피 4주 훈련인 거 제대로 훈련해보겠다고 다짐하고 분대장님께 의사를 밝혔다. 그렇게 하게 되었다. 아침저녁으로 점호 시간에 인원 보고하고, 행군은 맨 앞에서 하고, 기타 잡다한 일들 많이 했지만 아무튼 성실하게 임무를 수행했고 무사히 수료했다. 든든한 지원군이 되어준 분대원들에게 감사의 인사 전한다.

운동과 건강생활

19년 말까지는 아파트 내에 있던 헬스장을 다녔었다. 1~2월에는 날씨가 추워서 홈트로 대신하기 시작했는데, 2월 말에 코로나가 찾아오면서 헬스장으로 복귀하지 못했고, 그 이후로 계속 복귀하지 못하고 있다. 이거 사실 핑계다. 헬스장 가려고 생각하면 진작에 갔을 것이다. 결국 홈트로 대신했다.

링피트 어드벤처 1회차 100% 클리어

사실 링피트 어드벤처를 한 것이기에 홈트라고 하기 조금 부끄러운 면이 있지만 운동 효과는 의외로 확실하다. 몬스터 한 마리 잡아내는데 스쿼트 (+앉은 상태로 유지) 30개씩 해야 했고, 운동 동작을 하고 있을 때만 운동 시간이 측정되기 때문에 순 운동시간 40분 정도가 되면 힘들다. 게임으로 운동했을 때의 장점은 이게 RPG 형식이기 때문에 어느 정도 목표를 세우고 할 수 있고, 게임 진행도에 따라 뿌듯함도 바로바로 느낄 수 있다. 이는 보상이 뒤늦게 찾아오는 헬스장의 운동과 어느 정도 대비되는 것 같다. 다만 나는 운동의 목표가 건강이지 체중 감량 등이 아니었기 때문에 게임 진행에서 많은 즐거움을 느꼈던 것 같다. 아무튼 게임도 깨고 건강도 챙겼으니 이득이다.

아쉽게도 12월 이후로는 거의 안 하고 있다. 대신 산책은 자주 하는 편이다. 어디든 걸을 곳은 많다. 사회적 거리두기 하느라 집에만 있게 되면 답답하기도 하니 마스크를 올바르게 착용하고 바람 쐬고 오면 매우 좋다.

링피트를 안 해서 그런가 최근에 몸이 무거워지는 느낌이 있다. 내년엔 좀 건강을 챙길 수 있을까? ㅋㅋ. 이상한 음식은 많이 먹지 말고 규칙적으로 생활해야 할 것이다.

독서

연초에 영어 원서 4권을 구매했다. <Guns, Germs and Steel>, <Sapiens>, <Factfulness>, <Nudge> 이렇게 4권이다. 회사 출퇴근하는 시간에 대중교통 안에서 읽으려고 했다. 실제로 <Sapiens> 를 제외하고는 모두 읽었다. 다만 그 기간이 너무 길었을 뿐. 코로나로 인해 재택근무를 권장하게 되면서 출퇴근을 하지 않다 보니 책을 읽는 시간이 자연스럽게 줄어들었다. 그래서 안 그래도 두꺼운 <총, 균, 쇠>는 읽는데 5개월 걸렸던 것 같다.

이외에도 한국 근현대 소설을 모아둔 책을 읽기도 했으며, 중학교 때 읽었던 한국사 40권 시리즈를 하루에 2권씩 3주 컷을 하려다가 10권쯤 읽고 포기하기도 했다. 그리고 7년 만에 <멋진 신세계>를 매우 재미있게 읽었고, <하버드 새벽 4시 반>, <하버드 상위 1%의 비밀>과 같은 자기 개발서도 적당히 읽었다. 적당히 읽어야 동기 부여하기 좋다.

최근에는 기술 서적을 읽느라 교양서적(?)은 많이 못 보고 있다. 내년에는 조금 밸런스를 맞출 수 있으면 좋겠다고 생각은 하지만 항상 딜레마다. 교양서적을 읽으면 기술 공부를 안 하게 되던데... 이건 진짜 핑계 아니다. 오죽하면 출퇴근 시간에 시간 내서 독서를 하고 있겠는가! 참고로 이직하기 전 10월까지 내가 집에서 출발하는 시각은 06시 15분이었다. 05시 30분에 일어나서 피곤함에도 불구하고 읽으려고 했다. 그런데도 교양서적 읽으면 뭔가 기술 공부를 못하는 기분이 들었다.

네 변명 잘 들었습니다.

회사 생활

산업기능요원으로 대체 복무 중이며, 올해 이직을 했다. 아마 시간 순서대로 적는 것이 올바를 것이다.

전 회사 생활

로그프레소에서는 근무시간을 8~17시로 설정했다. 그렇게 해야 저녁에 약속을 잡고 사람들을 보러 다니기 편했기 때문이다. 하지만 이 결정에는 큰 책임이 따랐는데, 8시까지 출근하려면 5시 30분에 기상해야 했기 때문이다. 출근은 75분 정도 걸렸으며, 항상 30분 정도는 일찍 도착해서 업무를 준비하거나 개인 공부를 했다.

출퇴근이 생각보다 시간을 많이 잡아먹어서, 퇴근하고 운동과 공부 (+게임)를 하면 12시는 아무렇지 않게 넘겼다. 그래서 잠을 많이 자지 못했던 것 같은데, 그럼에도 재택근무를 제외하고 사무실 출근을 할 때는 단 한 번도 지각을 하지 않았다! 

로그프레소에선 하루하루가 무난했다. 주어진 일을 수동적으로 하는 기분이 좀 많이 들었다. 그래도 코딩은 좋아하니 일 하면서 주어진 문제를 해결하는 것에 재미를 느끼며 다녔다.

옆 팀에서 더 재미있는 일을 하는 것 같아서 팀을 옮기려 했지만 사내 이직 내 뜻대로 되지는 않았다. ㅠㅠ

그래도 BMW 드라이빙 센터에 가서 운전도 하고 오고, 패러글라이딩 파크도 다녀오는 등 팀장님께서 팀원들의 리프레시는 잘 챙겨주셨다. 그리고 첫 회사다 보니 사회생활 능력도 부족하고 업무 수행 능력도 부족했는데 여러 부분에서 챙겨주신 대표님과 팀원 분들께 다시 한번 감사드린다.

BMW 처음 운전해보는데 굉장히 좋다!

이직

일단, 이직 사유는 더 재미있고 의미 있는 일을 하기 위해서이다. 로그프레소에서 빅데이터 플랫폼 백엔드/인터페이스 개발자로 일하면서 재미가 있긴 했지만 회사 특성상 BTB이다 보니 내가 참여한 제품 개발이 고객(회사)에게 어떤 의미를 갖는지 나는 잘 몰랐던 것 같다.

이직 과정은 험난했다. 로그프레소에서 약 1년을 일했지만, 다른 회사 면접장에서는 1년 일한 개발자의 실력에 훨씬 못 미친다는 평가를 들어야 했다. 전 회사가 BTB라 '개발'의 느낌이 좀 달라서 그랬던 것 같기도 하다. 핵심 로직만 잘 돌아가도록 구현하면 됐다. 하지만 실제로 다른 회사에서 제품 개발을 하게 되면 해야 하는 일이 더 많다. 테스트도 상당히 신경을 많이 써야 하고, 제품이 동작하는 인프라나 컨테이너 기술에 대해서도 다루게 된다. 이런 것들을 해본 적이 없으니 실력이 부족하다는 평가를 듣는 것은 당연한 일이었다. 소프트웨어 개발에 대한 이론과 실무 둘 다 경험이 많이 부족했던 것이다.

무엇보다 CS 기초 지식에 대한 공부가 많이 부족했다. 5학기를 마치고 바로 병특을 시작하고 싶었고, 수학을 부전공하려 했기 때문에 실무에서 필요한 DB, 네트워크, 운영체제 과목 수강을 미뤘다. 이 세 과목의 부족함을 나는 알고 있었지만 전 회사에서 일하는 1년 동안 저 공부는 하지 않았기 때문이다. 그렇기에 이직할 회사를 찾기 쉽지 않았다.

정말 다행히도, 새로운 회사에서 좋은 소식을 전해주어 11월부터 합류하게 되었다. 10월에 전 회사를 정리하느라 굉장히 정신없었지만 별문제 없이 잘 마무리되었다.

현 회사 생활

새로운 회사에서의 생활은 정말 재미있다. 온보딩 과제로 Spring Boot 를 사용해 간단한 챗봇을 만들어야 했다. 처음에 과제 설명을 들을 때 솔직히 못 할 줄 알았다. ㅋㅋ. Spring Boot 를 제대로 사용해 본 적이 없기 때문... 하지만 같이 입사한 분과 이미 새 회사에 있던 나의 동기가 아낌없이 도와줬고, 주말에도 출근해서 (전 회사에선 절대 안 하던 짓을 해봤다) 치열하게 고민한 결과 온보딩 과제는 무사히 해냈다.

테스트 중 강제로 integer overflow 발생시킴 ㅋㅋ

이외에도 다른 일은 재미있게 하는 중이다. 정말 주변에 잘하시는 분들이 계시고, 또 좋은 분들이 계셔서 하루하루가 즐겁고, 계속 성장할 수 있는 환경에 있다. 내년에는 개발을 더 많이 해서 더 많은 것들을 배우길 기대하고 있다. 자발적 야근쯤이야 할 각오 얼마든지 되어있다. 주말에 대표님 너무 자주 뵈었다

회사 홈페이지에 있는 소개

게임과 여가생활

솔직히 코로나 때문에 사람들이 밖에 나가질 않아서 게임 산업이 많이 흥한 것 같은 느낌이 든다. 솔직히 말하면 나도 열심히 했다. 닌텐도 스위치로 주로 했는데, 모여봐요 동물의 숲, 포켓몬스터 소드, 그리고 10년 전 게임을 리메이크 한 구조대 DX를 주로 했다.

(모여봐요 동물의 숲) 동네 게시판에 밀레니엄 문제 붙여두기 / (포켓몬 소드) 도감 채우기 / (구조대 DX) 청정숲 클리어

그리고 메이플스토리도 했다. 주로 메이플 스토리를 한 것 같다. 좀 과하다고 느낄 정도로 한 것 같기도 하다. 아무튼 현재는 본캐를 삭제한 상태다. 더 이상 퀘스트의 노예로 살지 않고 내가 할 일은 내가 정하겠다는 큰 다짐이다.

(스누플 엘리시움 톡방) 투자했던 캐릭터 삭제에는 대단한 의지가 필요하다

게임은 딱 스트레스 받지 않을 정도로 하는 것이 좋은 것 같다. 그 이상으로 하게 되면 너무 피곤하다. 스트레스 풀러 왔다가 오히려 받고 간다. 과하지만 않을 정도로 앞으로도 할 예정이다. ㅋㅋ 아 근데 이래도 되나


이제 공부 이야기를 할 차례이다. 궁금하지 않으시다면 건너뛰기를 추천한다!

수학 공부

주전공이 컴퓨터이지만 부전공인 수학 이야기부터 적는 이유는 아쉽기 때문이다. 정말 하고 싶었으나 주전공과 다른 일들에 밀려서 하지 못했다. 냉정하게 말하면 수학 공부는 이직에 도움이 안 된다. ㅠㅠ 이직을 준비해야 했기에 내려놓을 수밖에 없었다.

(현대) 대수학

이인석 교수님의 <학부 대수학 강의 II 대수학> 을 야심 차게 시작했다. 연습문제를 풀어가며 노트에 정리해 두고 또 '와 이거 너무 아름답다' 싶을 때는 LaTeX 으로 타이핑하여 정리해 두었다. 책이 어렵고 바쁜 관계로 내려놓게 되었다... 오늘 노트를 보니 대충 4.5절 까지 본 듯하다.

(좌) 연습문제를 푼 흔적 / (우) 아름다운 subgroup lattice

내가 대수학을 공부하는 이유는 Abel-Ruffini Theorem (5차 이상의 방정식에는 근의 공식이 존재하지 않음)을 중학생 때 접하고 이를 이해하고 싶었기 때문이다. 고등학생 때 도서관에서 책을 구경하다가 <학부 대수학 강의 II 대수학>을 발견했고, 정리의 증명이 수록되어 있었으나 (심지어 짧던데) 당연히 이해할 수 없었다. 그때 언젠가 이 책으로 이 내용을 이해해 보겠다고 생각했었다. 7년이 지났지만, 아직도 이해하지 못했다. 갈 길이 멀다.

(책에 대한 이야기)

18년에 교수님의 저자 직강 선형대수학 1, 2를 들었고, 마지막 시간에 혹시 대수학 책은 개정판을 내실 생각이 있으신지 여쭤보았다. 아쉽게도 내지 않으실 것 같다고 알려주셨고, 책에 오류가 많으니 다른 책으로 공부하는 게 좋을 것 같다고 하셨다. 책이 어렵긴 해서 솔직히 말하면 포기하고 다른 책을 볼까 생각하기도 했다. 그래도 나는 교수님의 팬이므로 끝까지 도전은 해볼 생각이다.

집합과 수의 체계

책은 구매했지만 1장 조차도 끝까지 보지 못했다. 다만 책이 가벼워서 출퇴근 시간에 들고 읽기엔 굉장히 편했다. 언제 볼 수 있을지 의문이다.

MIT 18.065 Matrix Methods in Data Analysis, Signal Processing, and Machine Learning (Spring 2018)

Gilbert Strang 교수님께서 강의하신 응용 선형대수학 / 수치 선형대수학 강의이다. MIT OpenCourseWare 에서 영상 강의가 무료로 제공되어 있다. 특별한 이유가 있어서 본 것은 아니고 그냥 흥미로워서 봤다. 작은 목표지만 언젠가 SVD를 직접 짜 보고 싶다는 생각도 있고, 나름 수치해석도 재밌을 것 같았다. 선형대수학이 그냥 좋기도 하고.

학부/대학원 공통 강의라고 했는데 아는 내용도 많이 나와서 꽤 편하게 들을 수 있었다. 응용에 집중한 강의이다 보니 이론적인 부분을 탄탄하게 하지는 않아서 좀 아쉬웠다. 필기한 내용은 여기서 확인할 수 있다. 다 듣는 데에 1달 정도 걸렸다.

필기엔 역시 iPad.

수학적 증명의 기초 (수.증.기.)

공개하고 있지는 않지만 나름 여기저기서 문제를 수집하여 문제집을 하나 만들었다. 제목은 <수학적 증명의 기초>로, 이해한 수학적 개념을 바탕으로 아이디어를 떠올리고 그것을 논리적 증명으로 옮겨내며 써 내려가는 연습을 위한 문제집이다. 목적에 맞게 모든 문제가 전부 증명을 필요로 하는 문제이다. 주로 고등학교 1학년 내용을 담고 있지만, 교육과정을 벗어나는 내용도 많이 포함되어 있다. ㅋㅋ 수포자 양성 글에 있는 문제도 수록되어 있다.

책의 1단원 일부

모든 문제는 직접 풀어봤고, 풀면서 문제의 표현이 어색하거나 오류가 있는 부분은 최대한 수정하려고 노력했다. 친하신 몇 지인께는 검수를 부탁드렸지만 내가 딱히 출판에는 관심이 없으므로 앞으로 이 문제집이 어떻게 될지는 잘 모르겠다. 미적분, 기하와 벡터, 행렬 관련 내용을 추가하고 싶긴 한데 언제 해낼 수 있을지 미지수이다.


CS 기초과목 공부

백엔드 실무를 위해서는 프로그래밍 언어를 다루는 기초적인 능력은 기본이고, 시스템과 운영체제, 네트워크, DB 등이 필수적이라고 생각했다. 다 해내지는 못했지만 틈내서 공부했다.

컴퓨터 네트워크

로그프레소에서 QA팀과 함께 스터디를 진행했었다. 내 팀에선 나만 참여해서 스터디하러 가는 게 눈치가 보였다. 부산대학교의 MOOC를 함께 들었고, 강의는 다 들었으나 필기는 다 하지 않았다. 필기는 여기서 확인할 수 있다.

한 가지 아쉬운 점이 있다면 아무것도 기억이 안 난다는 점이며, 너무 high-level 에서 설명해서 대략적인 그림만 알 수 있었다. 내부 구현을 살펴본다던가, 자세히 공부하기에는 좋은 기회가 아니었던 것 같다. 그래도 회사 업무랑 어느 정도 관련이 있어서 도움이 아예 안 된 것은 아니었다. 결국 다시 공부해야 할 듯한데, 다른 책을 보거나 복학하면 네트워크 수업을 꼭 들을 것이다.

시스템과 운영체제

백엔드 개발자라면 반드시 알아야 하는 내용 아닐까? 면접에서 process 와 thread 의 차이를 묻는 질문은 이미 여러 번 들었다.

결론적으로는 운영체제 공부는 하지 못했다. 이건 좀 다른 공부하고 놀아서 그런 것 같긴 하다. 대신 학교에서 들었던 컴퓨터 구조와 시스템 프로그래밍 자료는 모두 가지고 있어서 (CSAPP3e) 그 내용을 다시 봤다. 시간이 없다는 핑계로, 출퇴근하면서 봤다. ㅋㅋ. 돌아보니 생각보다 많은 내용을 배웠고, 시스템 프로그래밍은 실무를 하기 위해 꼭 들어야 하는 과목임을 깨달았다.

프로그래밍 언어

처음에는 이광근 교수님의 책을 읽으려고 했으나, 책을 읽다 보니 이 책은 강의랑 같이 들어야 의미가 있겠다고 판단했다. 알고 읽으면 괜찮을 것 같은데 나는 책의 표기법을 이해할 수 없었다. ㅠㅠ

표기법을 이해하기 위한 노력의 흔적. ???가 있는건 뭐지...

결국 빠르게 포기하고 Stanford CS242 : Programming Languages 의 강의 노트를 참고했다. 설명도 친절하고 이해하기 쉬워서 나름 수월했다. 하지만 이 또한 다른 공부에 밀려 현재 중단된 상태이다. 이 과목도 시간이 없다는 핑계로, 출퇴근하면서 봤다. 솔직히 출퇴근 너무 힘들었다...


딥러닝과 AI

Stanford CS231n: Convolutional Neural Networks for Visual Recognition

19년 가을부터 들으려고 했는데 다 들은 것은 20년 2월 말이었다. 유명한 강의니 설명은 자세히 하지 않겠다. 역시나 필기가 있으니 필기는 여기서 확인할 수 있다.

원래는 들으면서 과제도 해보려고 했으나 귀찮다는 핑계로 하지 않게 되었고 대신 CNN을 직접 구현하기로 했다.

Deep Learning from Scratch

(Github Repo) Tensorflow 나 pytorch 같은 유명한 라이브러리를 사용하지 않고 파이썬으로 CNN을 구현하고 MNIST (ㅋㅋ 너무 쉬운 task)에 대해 훈련했다. 구현하면서 이 책을 참고했고, CNN을 이해하는데 많은 도움이 되었다.

특히 기억에 남는 것이 im2col 과 col2im 의 구현인데, 6D-tensor (???) 를 transpose 하는 등 고차원 행렬을 처리하는데 굉장히 머리가 아팠던 기억이 있다. 미치는 줄 알았다.

너무 어려워서 주석을 안 달 수가 없었다

딥러닝 좋아하기는 하는데 공부는 생각보다 많이 안 했던 것 같다. 이제 자연어 처리하는 회사에 왔으니 다시 공부해야 한다.


알고리즘과 PS

나 빼고 다 잘해! - 진짜다. 나 빼고 다 잘한다.

대회 이야기

올해에는 나간 대회가 UCPC와 SCPC 정도인 것 같다. ICPC는 휴학생이라 패스했다. UCPC의 경우 본선에 당연히 갈 수 있었는데 대회가 연장되고 절대평가가 되면서 자연스럽게 본선에 갔다. 함께해준 팀에게 정말 고맙다.

SCPC는 내가 못 푸는 대회다. ㅎㅎ. Round 2에서 탈락했고, 뭘로 준비할지 잘 모르겠다. 기회가 된다면 본선에라도 참가해보고 싶다 ㅠㅠ

BOJ/solved.ac

BOJ는 거의 나의 패시브인 편이다. 되도록이면 자주 하려고 하며, 다양한 알고리즘을 공부해보려는 편이다. 하지만 수학이 재미있어서 수학 관련된 알고리즘을 더 보는 건 어쩔 수 없는 것 같다.

20년 12월 31일 기준 1194문제를 해결했으며, solved.ac 티어는 Platinum 1 이다. 사실 Diamond 5 달성했었는데, 다시 돌아와 보니 떨어져 있었다. ㅠㅠ 사실 다이아 가겠다고 FFT와 centroid decomposition 을 공부해서 랭작을 했으며, 쉬워 보이는 다이아 문제를 골라 풀었으니, 떨어졌더라도 뭐 괜찮다. 다시 올리면 된다!

사실 안 괜찮다 쉬워 보이는 문제 절대 안 쉽고 머리 엄청 아프다 뚝배기 깨진다 

20년 11월 10일, Diamond V 달성

Codeforces

Speedforces Codeforces 는 약 3년 만에 Expert (블루)를 달아보았다. 역대 그래프를 보면 알겠지만 바닥에서 기었고 올라오지 못했으나 아무튼 결국에는 해냈다. 빨리 푸는 게 중요하긴 한데 사실 자신이 없다. 이것도 연습하다 보면 언젠가 되겠지?

친구들 나 빼고 다 블루여서 나도 블루갔다

PS의 딜레마

개인적으로 PS에는 아주 큰 딜레마가 있다고 생각하는데, 어중간하게 해서는 딱히 취업에 도움이 안 된다는 것이다.

물론 기초적인 자료구조나 알고리즘을 잘 모르면 면접에서 떨어진다. 면접을 보면서 자료구조와 알고리즘 질문 많이 받았고 이것들은 잘 대답해야 한다. 그리고 마찬가지로 알고리즘과 PS를 매우(!) 잘해서 대회에 참가하여 수상 실적이 있다면 지원자가 매우 똑똑하고 프로그래밍을 잘한다는 인상을 준다.

하지만 나는 그런 사람이 아니다. ㅋㅋ. 그래서 굉장히 어중간한 상태다. 여태 산업기능요원을 위해 봤던 면접들 중에서 알고리즘이나 코딩 테스트에서 문제가 되었던 적은 (카카오나 구글과 같이 문제가 어려운 곳을 지원한 게 아니니) 아직 없지만, 내가 현 상태에서 대회용 알고리즘이나 학부에서 다루지는 않지만 유명한 알고리즘들을 추가로 더 공부한다고 해서 취업하는데 딱히 도움은 안 되는 것 같다. 채용하는 입장에서는 이것들을 중요하게 생각하지 않았다.

물론 그런 고-급 알고리즘을 이해하고 구현할 수 있는 역량을 원하는 회사도 있지만, 대부분의 경우 회사에서는 기초만 되어있으면 괜찮고, 오히려 실무 경험과 개발 능력을 요구하는 것 같았다. (고-급 알고리즘은 라이브러리가 해결해 주니까...) 그래서 PS를 좋아하지만 내가 이걸 계속하는 게 맞나 하는 생각이 들었다. 그 시간에 개발 공부를 하는 게 맞지 않았을까 싶다. 취미나 재미로 계속할 수도 있겠지만, 선택과 집중이 중요한 시대를 살고 있는 것 같아서...

혹시 이 부분에 대해 조언을 해주실 수 있는 PS 고수 분이 계시다면 저를 일깨워 주시면 감사하겠습니다. ㅠㅠ


Guardian 동아리 활동

회장을 넘겨준 이후로도 동아리를 살리기 위해 노력하고 싶었지만 코로나로 인해 오프라인에서 활동은 거의 못 했다. 대신 Java / C 기초 자료를 만들어서 신입생들이 참고할 수 있도록 해 두었다. 이걸로 스터디도 진행했다.

자바 자료는 여기, C 자료는 여기에 있다.

포인터는 프로그래머에게 높은 자유도를 제공한다. 하지만 자유에는 책임이 따른다. 어렵다.

복학할 때쯤엔 코로나가 괜찮아질까? 그땐 부회장이라도 맡아서 살리려고 더 노력해 볼 것이다.


기타 개발

Modern Java in Action / Clean Code

올해 이 두 책을 집중적으로 읽었는데, 모두 새로운 회사 CTO님께서 입사 전부터 읽으면 많이 도움될 것이라고 추천해 주셔서 읽게 된 책들이다.

<Modern Java in Action>를 읽고 Java 8 이후 새롭게 추가된 기능을 배울 수 있었다. Stream API, Optional, CompletableFuture 등과 같은 유용한 도구들을 접하게 되었고 새로운 기능을 사용하면 유지 보수가 쉬워지고 가독성이 매우 향상됨을 알게 되었다. 자바도 계속 발전하고 있는데, 생각했던 것보다 자바는 굉장히 좋은 언어다.

<Clean Code>에서는 유지 보수하기 쉬운, 깔끔한 코드를 작성하는 방법을 배웠다. 프로젝트를 구조화하고 코드를 예쁘게 짜서 가독성을 높여야 한다고 듣기만 했지 구체적으로 어떻게 해야 하는지는 자세히 생각해 본 적이 없었는데 잘 실천하지 않았다는 이야기 책을 읽으면서 구체적인 방법들을 배울 수 있었다. 비록 한 번 읽는다고 내 코드가 갑자기 깨끗해지지는 않겠지만 새로운 회사에서 개발 고수님들의 깨끗한 코드를 보며 열심히 연습하면 내 코드도 조금씩 깨끗해지지 않을까 생각한다.

그리고... 읽으면서 내 전 회사 코드는 왜 그 모양이었는가 하는 생각을 하게 되었다. 이 책을 조금만 더 일찍 접했더라면 좋았을 것 같다.

훈련소 인터넷 편지

다음 글 참고. 다른 선배님께서 내가 이렇게 한 것을 보시고 선배님께서도 직접 인편 사이트를 제작하고 가셨다! 제작하신 사이트 footer 에 'Inspired by calofmijuck' 을 추가해 주셨다. 영광스럽다.

또 친구가 이 글을 참고하여 본인의 인편 사이트를 세팅해두고 갔다. 당연히 관리는 내가 해줬다. 중간에 서버가 한 번 죽어서 인편 사이트가 접속 안 되는 문제가 있었는데 내가 해결해 주었다. 아무튼 빨리 밥 사라.

그리고 18학번 후배님께서 훈련소 가기 전에 블로그 글을 참고하여 비슷한 사이트를 만들고 가셨고, 덕분에 훈련소 기간을 심심하지 않게 보냈다고 한다.

내가 훈련소에서 심심하지 않기 위해 입소 하루 전날 벼락치기하듯이 개발했는데 생각보다 많은 분들께서 관심 갖고 봐주시고 이용해 주셔서 감사할 따름이다. 내년에 시간이 나면 더 발전시켜 사용하기 쉽도록 만들어야겠다. Docker image 각이다.

디스코드 메이플 봇

디스코드에서 사용할 수 있는 메이플스토리 봇을 만들어 두었다. 아직은 캐릭터 정보 확인 및 경험치 확인 정도만 지원한다. 부가 기능이 좀 있긴 한데 메이플 길드원들이 사용했던 흔적을 보니 그 2개가 메인 기능이었다.

이제는 존재하지 않는 나의 캐릭터

사실 앞으로도 더 기능을 추가하고 싶다. 넥슨은 랜덤박스를 참 좋아하기에 그런 걸 시뮬레이션할 수 있을 것이고, 아이템 강화 시뮬레이션이나 각종 게임 정보를 알려줄 수 있도록 구현하고 싶었다. 하지만 내가 이미 탈메했으므로 이 일은 뒤로 미룬다.


영어 공부

Grammar In Use Advanced 를 하루에 5단원씩 풀어서 20일 컷 했다. 고등학교 때 봤던 문법 책인데 다시 봐도 좋더라.

이외에 딱히 각 잡고 영어를 공부하지는 않았다. 강의를 영어로 듣고, 책을 영어로 보고, 기사도 영어로 보고 등등 이미 생활 속에서 영어를 많이 사용하고 있다. 영어 잘해서 나쁠 건 전혀 없다고 생각한다. 단어 공부를 더 열심히 했으면 한다.


앞으로의 계획

일단 개발 공부를 더 열심히 해야 하고 회사 생활도 열심히 해야 한다. 공부할 것들은 태산이고 회사에서 할 일도 많다. 되도록이면 수학은 잠시 내려놓고 CS 기초 과목 공부, 개발 공부와 딥러닝 공부를 좀 해보려고 한다. 회사에서 빨리 1인분 혹은 그 이상을 해야한다. 같이 일하고 있는 동기의 부담을 빨리 덜어줘야 하기 때문이다.

그리고 한 달에 책을 꼭 2권 이상씩 읽으려고 한다. 출퇴근 시간만 잘 활용해도 문제없을 것이라 생각한다. 지금까지 시간을 잘 활용해 왔으니 이것도 책만 잘 고르면 문제 없을 것 같다.

최종 목표는 이론과 실무를 겸비한 사람이 되는 것이다. 할 수 있을 것 같다.

더불어 내년에는 나의 근본적인 문제를 좀 해결했으면 좋겠다. 요새 집중력이 많이 떨어져서 집중하는 시간이 계속 짧아졌고 주의가 산만한 느낌이 든다. 학교 다닐 때는 안 그랬던 것 같은데 이것 좀 고쳐서 다시 집중할 수 있으면 좋겠다. 일단 카톡, 슬랙을 비롯한 메신저부터 끄자.


2020 Review 후기

2020년 뭐했지? 라는 생각을 많이 했다. 사실 회사를 다니다 보니 대부분의 시간을 회사에서 보내서 개인적으로 뭐 했는지 잘 생각이 나지 않고 잊어버리게 되는 것 같았다. 하지만 나의 친구 github 은 모든 것을 기억하고 있었다. ㅋㅋ. 그래서 글의 개요를 잡고 나니 생각보다 쓸 내용이 많아서 언제 다 쓰나 싶었지만 아무튼 다 적었다. 빠진 내용도 있겠지만 그건 나중에 추가하면 된다.

코로나19가 2월부터 유행하게 되면서 많은 시간을 집에서 보냈고, 사람들과 자연스럽게 거리를 두게 되었다. 어떻게 보면 그만큼 시간이 확보된 것인데, 나는 그 시간을 효율적으로 사용하지 못했다. 더 시간을 효율적으로 썼다면 더 많은 성과와 성장을 이뤄낼 수 있었을 것이다. 결국 교류도 많이 하지 못하고 개인적으로 많이 성장하지 못해 많이 아쉬운 해이다. 열심히 안 한 것 같다.

그래도 이직은 했고, 집은 이사도 했다. 새롭고 더 좋은 환경에서 더욱 가파른 성장 곡선을 그릴 수 있다고 확신한다. 지금 내 옆에 NLP 책이 있는데 글 다 쓰고 읽어볼 생각에 가슴이 두근거린다.

아 ㅋㅋ 2021년 딱대.


FAQ

자주 들은 이야기, 친구들이 제게 하는 이야기입니다.

Q. 이성찬 연애 기원
A. 그런 거 없습니다. 기원만 하지 말고 소개를 해주던가

Q. 갓성찬, 킹성찬, 킹짱찬 등
A. 그건 20살에만 그랬습니다. 지금은 아니에요.

Q. 요새는 뭐 공부하세요?
A. 하고 싶은 공부 해요.

Q. 왜 수학 공부해요?
A. 재미있고 아름다워서 합니다.

기타 질문 및 피드백 환영합니다.

Update

새해를 기념하여 Diamond V 를 복구했다. 푼 문제는 BOJ13169 - Xor of Sums 이고 푸는데 2시간 넘게 고민한 듯 하다. 문제가 그래도 재미있어서 시간이 되면 풀이를 작성할 예정이다.

Diamond V 복구!

'Life > Pause and Ponder' 카테고리의 다른 글

2021 September ~ October  (0) 2021.11.02
2021 July ~ August  (0) 2021.09.06
2021 June  (0) 2021.07.05
2021 April ~ May  (0) 2021.05.30
2021 February ~ March  (2) 2021.04.05
2021 January: Pause  (0) 2021.02.01

댓글