1월에는 별 생각없이 겨울 계절 수업을 들으며 보낸 것 같다. 이때 쯤에 진로에 대해 본격적으로 고민을 해보기 시작했다. 하지만 그리 진지하게 생각한 건 또 아니었다. 학교 다니며 들었던 코딩 관련 수업에서 성적을 잘 받고, 안드로이드와 유니티를 다뤄보면서 코딩에 대해 꽤 흥미를 갖고 있던 차에 개발자에 대한 생각이 들었다. 해볼까?라는 마음에 개발자 되는 법을 검색하고 알아보니 코딩 테스트라는 걸 봐야 됐었다. 나름 코드 많이 짜보면서 오류랑도 많이 씨름을 해봐서 자신이 있었는데 막상 예제를 보니 알고리즘은 또 다른 신세계였다.
문제들을 보고 조금 쫄긴 했지만, 그래도 공부를 시작해봐야겠다는 생각이 들었고 여러 합격 후기, 특히 비전공자 출신으로 공부를 어떻게 했는지 알려주는 글을 자세히 보면서 계획을 짜기 시작했다.
2월에 파이썬 알고리즘 인터뷰라는 책으로 자료구조를 공부하기 시작한게 첫 시작이었다. 코테용 언어로 가장 유리한게 파이썬이라 해서 파이썬으로 준비하기로 마음먹었다. 머신러닝 딥러닝 수업을 파이썬으로 했었기 때문에 어느 정도 익숙한 상태였다. 그래도 그동안 몰랐던 자료구조, 알고리즘을 공부하는 건 매우 새로웠고 어려운 부분도 많았다. 리트코드라는 사이트에서도 처음으로 문제를 접해봤고 수능 공부 이후로 그렇게 문제를 풀어내려고 씨름해본건 오랜만이었다.
그렇게 3월에 개학해서도 쭉 책을 보며 자.알을 익히고 문제를 풀었다.
4월에는 처음으로 코딩 테스트를 봤다. 지금 생각해보면 정말 아무것도 모르는 상태였는데 당시에는 왜 전부 다 풀어제낄 수 있을 것 같은 느낌이 들었는지... 네이버 코딩테스트를 봐서 1문제 간신히 풀고 광탈했다. 처음이라 잔실수도 많이 했고 무엇보다 다양한 유형을 충분히 많이 풀어보지 못했다. 변명의 여지가 없는 연습 부족, 실력 부족이었다. 그래서 그 유명한 백준 사이트에 처음 가입을 해봤는데 시간 제한도 까다롭고 리트코드에 비해 인풋 데이터 받기도 까다로워서 괜히 풀기가 싫어졌다. 그래서 프로그래머스에서 문제 풀이를 시작했다. 이전의 리트코드보다 훨씬 많은 유형과 문제를 접할 수 있었다. 그렇게 5월까지 쭈욱 문제를 풀었다. 근데 이때 쯤에는 학교 마지막 학기를 다닐 때라 프로젝트 팀 과제도 있었고 졸업 논문도 써야 해서 엄청 바빴다. 나름 학교 도서관에 다니면서 시간을 쏟았으나, 문제풀이를 많이 하진 못한 것 같다. 그러다 중간에 카카오 인턴 코딩테스트를 봤다. 사이트도 프로그래머스라 심리적으로도 편한 것도 있었는데 결과는 탈락.. 2.5솔로 처음 코테보다는 많이 성장했지만 남들 다 풀 줄 아는 것만 푼 느낌이었다. 딱 그 정도 실력이었다.
프로그래머스를 풀다 다익스트라, dfs 같은 중급 알고리즘 문제를 많이 풀고 싶어서 백준 문제를 다시 풀기 시작했다. 학교 관련 일은 6월 초에 미리 미리 끝내두고 정말 문제만 엄청 풀었다. 그러다 7월이 되었는데 어느덧 하반기도 코앞으로 다가왔던 시기였다. 상반기에는 네이버, 카카오만 지원했었고 그렇게 욕심이 있던 것도 아니어서 프로젝트 부분을 별로 신경을 안썼다. 2년 전에 혼자 끄적이면서 만들어본 어플이 낼 만한 프로젝트로는 전부여서, 그렇게 안드로이드 분야에 지원을 했었는데 이번에는 좀 더 프로젝트 부분을 채우고자 7월부터는 조그만 토이 프로젝트를 진행했다. 물론 문제 풀이도 병행했다. 앱이 그나마 자신이 있던 분야라 코틀린을 배우고 파이어베이스를 활용한 앱을 만들어보았다. 2주 남짓한 짧은 시간에 코틀린 책도 살펴보고 앱도 다시 만들어봤으나 지금 생각해보면 역시 기술적으로 무언갈 어필하기엔 너무나 역부족이었다.
그러다 8월도 다 가고 9월이 왔다. 하반기 시즌이 왔고 2주 잠깐 플젝했던 것 빼고는 하루 종일 문풀만 잡고 있었기 때문에 이번에는 코딩테스트는 통과해보자라는 생각이 있었다. 아직도 기억나는 건 토요일 오전에 라인, 오후에 카카오 코테를 봤고 그 바로 다음주에는 네이버 코테를 봤다. 문제를 다 풀어내지는 못했지만 그래도 연습했던 건 충분히 발휘했고 결과적으로 라인, 카카오 코테에 통과했다. 근데 네이버는 다 풀었는데도 떨어졌다. 다풀고 엣지케이스도 충분히 검사를 해봤는데 떨어졌다. 네이버는 1차때 코테와 서류를 함께 보기 때문에 내가 추측하기로는 서류에서 발목을 잡힌게 아닌가 싶다. 아무튼 붙은 곳이 있다는 사실에 정말 기뻤는데 곧바로 다음 전형이 기다리고 있었다.
라인은 필기테스트, 카카오는 2차 코테가 있었다. 근데 나는 필기 공부를 거의 안한 상태였다. 3, 4월 쯤 cs를 해야한다는 얘기를 듣고 운영체제 책을 사서 간단히 한 번 읽어본 정도가 전부였다. 필기 테스트까지 일주일 남짓한 시간이 주어졌던 걸로 기억하는데 현실적으로 준비할 시간이 없었다. 급한 대로 기술면접 유명 깃허브 사이트에 들어가서 요약본을 열심히 읽어봤지만, 전체 내용을 모르고 마음만 급하니 도통 무슨 소린지 이해가 가지 않았다.
그래서 필기 테스트는 아는 문제만 몇 문제 건드는 수준이었고, 카카오 2차는 준비를 나름 했지만 점수를 쌓지 못해서 잘 보진 못했다. 결과는 둘다 탈락이었다. 또 이후에 다른 기업 코테를 몇 번 봤는데 이상하게 다 풀었는데도 계속 떨어졌다. 이것도 서류때문으로 추측 중이다.
10월이 되고, 난 나의 다음 공부 방향을 탐색했다. 지금 급한 건 CS 지식이었다. 어쨌든 코테는 합격을 해본 경험이 있었으니 CS 지식을 빨리 채워야 했다. 이 시기에 느낀 건 코딩 테스트가 중요하긴 하지만 전체 프로세스에 있어서 코딩 테스트는 그저 첫 관문에 불과했던 것이었고 정작 중요한건 그 이후의 cs, 면접이었다. 이때부터 백준에 들이는 시간을 확 줄이고 kocw라는 대학 인강 사이트에서 닥치는대로 컴퓨터 전공 수업을 듣기 시작했다. 수업 듣고 정리하고 블로그에 올리고를 그렇게 10월~ 11월 중순까지 무한 반복했다. 네트워크, 데이터베이스, 운영체제, 자료구조, 알고리즘 등등 과목마다 전공 서적도 하나 씩 구매를 해서 좀 더 깊게 들어갔다. 강의 + 전공 서적으로 공부를 하니 어느 정도 깊이 있는 지식이 들어오게 되었다. 뿐만 아니라 자바에 대해서도 깊게 공부했다. 지금 생각해보면 클래스에 대한 깊이있는 지식도 제대로 없던 상태에서 어떻게 앱을 만들었나싶다. 물론 그렇기에 유지보수는 생각도 하지 않았다.
그렇게 12월이 될 때까지 두 달 정도되는 시간동안 정말 오랜만에 수험생처럼 인강을 듣고 필기하고, 정리했다. 공부는 역시 하다보면 재밌어지는 법이다. 생소했던 네트워크, 데이터베이스도 재미가 붙었다. 자바라는 언어에 대해서도 더욱 더 흥미가 생긴 상태였다. 그러다 디자인패턴에 대해 공부해보고 싶은 아주 강한 욕구가 생겼다. 앱이나 유니티로 게임을 만들어보면서 내가 짠 코드가 동작을 하긴 하는데 이게 정답인가?라는 생각이 자주 들었다. 뭔가 어떤 기능을 만든다고 했을 때 그 최상의 방법을 사람들은 이미 고안해냈을 것 같은데.. 라는 생각이 들었었는데 디자인패턴이 그 질문에 답을 줄 것만 같았다. 그래서 헤드퍼스트 디자인패턴이라는 책을 사서 공부하기 시작했다. 다형성을 활용한 아주 멋진 패턴들을 많이 배웠고 이때 깃허브도 좀 관리하기 시작해서 디자인패턴 레퍼지토리를 깔끔하게 정리해보았다. 이건 조금 뿌듯했다.
12월 중순, 디자인패턴까지 공부를 다 하고 나니 그래도 CS 지식에서도 약간의 자신감이 생겼다. 이 시기 쯔음 안드로이드 분야에 대해 좀 고민해보기 시작했다. 앱 제작 경험이 있어서 처음엔 단순히 앱개발자를 생각했지만 안드로이드에 흥미도 사실 많이 떨어졌고 CS 공부를 많이 하다보니 오히려 데이터베이스와 서버 쪽에 관심이 생겼다. 그래서 백엔드 개발자로 진로를 정해야겠다는 생각이 강력하게 들었다. 어차피 나는 깊게 안드로이드를 공부해본 적도 없었기 때문에 사실 분야를 바꾼다고 말하기도 뭣하고 더군다나 안드로이는 스스로 공부를 하고 싶어도 강의나 책이 좀 부족하다고 느껴왔었는데 백엔드는 좀 찾아보니 유명한 강의, 책이 모두 잘 갖춰져있는 것 같았다. 그래서 결정적으로 직무 관련 분야에 있어서 기초를 더 탄탄히 쌓을 수 있겠다는 생각이 들었다. 당연히 프로젝트도 좀 더 기술적으로 접근할 수 있겠다고 생각했다. 그래서 백엔드, 그 중에서도 자바를 활용하는 스프링 강의를 찾아듣기 시작했다. 이때가 또 다른 험난한 여정의 시작이었다.
12월 중순부터 이 글을 쓰는 1월 28일까지, 7개에 달하는 강의를 전부 들었다. 하루, 이틀 빼고는 정말 매일 강의를 들었던 것 같다. 고등학교때 공부를 정말 열심히 하던 아이였는데 다행히 그 DNA가 아직까지 남아있는지, 마음먹고 공부를 하니까 꾸준히 할 수 있게 되었다. 물론 꾸준히만... 그때에 비하면 절대적인 공부 시간은 반도 안될 듯 하다. 아무튼 이 시기동안 스프링에 대해서도 배우고 JPA에 대해서도 공부를 했다. 그렇게 계획했던 강의를 다 듣고, 복습까지 마치고, 블로그에 정리하고, 깃허브에 정리하니 딱 오늘 1월 28일이 되서 이 글도 한번 끊어주고 정리하고 갈 겸 쓰는 글이다. 이제 다음 계획은 프로젝트다. 상반기 시작을 3월이라 하면 약 한달 정도의 시간이 남았는데 스프링을 활용한 토이 프로젝트를 진행할 예정이다. 지금까지는 제대로 준비되었던 게 없어서 코테 준비할 땐 코테만 파고, cs 공부할 때는 cs만 파고 이런 방식이었는데 지금은 어느 정도 모든 파트에 균형이 잡혀가는 느낌이다. 그래서 2월에는 토이 프로젝트도 진행하면서 코딩 테스트 준비도 다시 하고 CS 지식도 복습하며 정리할 예정이다. 코테, CS, 프로젝트. 이 삼박자가 다 맞아야 상반기에 좋은 성과를 낼 수 있을 것 같다. 그리고 지금은 사실 이 세 가지 모두를 잘 해낼 수 있을 것 같아서 기분이 매우 좋다. 물론 어떻게 될지는 모르겠지만 ㅎ
ps. 블로그 글도 꾸준히 정리하다보니 어느덧 게시글이 400개가 넘었고 월 방문자도 계속 상승세라 블로그를 더 열심히 해야겠단 생각이 들었다.
댓글