1주차는 Java의 기초 문법을 얼추 Algorithm 기초 문제를 다룰 정도 범위까지 복습했고, 현재 2주차를 진행하며 Algorithm 기초 문제들을 풀어나가고 있는 단계이다.
WIL은 직접적으로 기술적인 내용(코드) 등을 담지 않으려한다. 나는 이 주간 회고를 통해서 나의 정신 무장 상태 등을 다시 점검하고 동기를 부여하며, 특히 배우면서 부족하다 생각 된 부분, 도움이 되었던 부분, 근시적 주간 계획을 담는데 목적을 둔다. 단순히 문법을 나열하는 것은 TIL에서도 충분하다 생각되었다.
한 주를 보내면서 느낀 점?
Algorithm을 풀어보면서 느끼는 것이지만 저번 달 선택 과정은 물론 사전 스터디까지 참여한 것이 큰 도움이 되고 있다. 하지만 배울 수록 더 큰 문제점과 의문과 방대한 Java의 문법에 내가 아는 범위는 아직도 초라하다.
하지만 중요한 것은, “어제보다 나아진 나”를 매일 아침마다 마주치고 있다. 이것이 100일, 365일, 1년, 2년 쌓이면 나도 어느정도 할 줄 아는 개발자가 될 수 있지 않을까? 라는 꿈이 생기고 Java라는 언어는 나에게 승부욕을 자극시킨다.
나는 몰입하고 있는가?
어제는 내 생일이다. 하지만 나는 그냥 18시간 공부를 했다. 어디 가지도 않았고, 그저 사무실 동료들과 치킨이나 하나 시켜먹고 끝났다. 나는 그 어떤 행복보다 지금 이 언어를 획득하는 것이 행복 그 자체이다. 언제부턴가 나에게 생일은 내가 축하받는 날이 아니라 어머니에게 안부를 전하는 날이되었다. 사전 스터디 기간에도 한 달 넘게 공부하느라 본가에 잘 찾아가지 못했다. 생일을 맞아 어머니를 찾아갔다. 어머니는 현명한 사람이다. 자식의 어머니를 떠나서 인생의 선배로써도 많은 교훈을 받는다. 어릴 땐 어른들의 말이 잔소리처럼 들렸지만 이제 나는 그것들을 이해하기 시작했다. 나의 최근 공부현황과 내가 얼마나 열정적으로 참여하고 있는지 어머니에게 알렸다. 어머니는 평생 자식에게 큰 것을 바라지 않았다. 하지만 항상 발전적인 생각을 할 것, 도덕적으로나 올바른 가치관을 가지는 것, 본인의 판단을 믿고 실천하는 것, 꾸준히 관리하는 것을 항상 중요시하신다. 생각해보면 나는 모든 부분에서 만족시키지 못했을 수도 있다. 또한 실패하거나 좌절하면 나만의 불행 정도로 생각했지만, 어머니는 그것을 묵묵하게 지켜보고 있고 항상 응원했었다. 이젠 증명해야 하는 나이이고 실망 시키지 않으려는 노력해야 한다. 내가 이렇게 열정적으로 공부에 몰입하는 동기 중에 하나이기도 하다. 효도는 별거 없다. 내가 잘 되면 되고, 잘 되려면 내가 열심히 살고자 노력하면 된다고 생각한다. 지금도 사무실에 다시 와서 글을 쓰고 있는 것이 다음주를 위한 계획과 저번주의 회고를 위함이다.
팀의 중요성 : 팀원들간의 동기부여, 커뮤니케이션을 통한 배움과 가르침
어느때보다 서로 응원하고 으쌰으쌰하는 분위기의 팀원들을 만났다. 이것도 행운이다. 뭔가 서로 진심어린 프로그래밍에 대한 꿈을 공유하고 있다. 모두가 잘되기를 바라고 있다. 모두 열심히 하고 있고 서로가 서로에게 큰 동기를 부여해주고 있다. 나는 이런 열정적인 사람들에게 내가 공유해주고 싶은 모든 경험들을 공유하고 모두 성공으로 함께가고 싶다는 생각이 들었다. 반대로 그들에게도 나는 실력은 부족할 지라도 최소한 항상 꾸준히 노력하고 꺾이지 않는 사람이라는 모습으로 기억에 남기고 싶었다. 그들에게 어려움이 닥쳤을때 열심히 하던 나의 모습을 한번이라도 생각해내고, 본인들도 좌절하지 말고 일어 날 수 있는 본보기가 되는 성숙한 사람으로써의 모습을 보여주고 싶다. 그러기 위해서는 나는 지금보다 더 가혹하게 나를 괴롭히고 발전해야 한다. 인생 통틀어 이 정도로 어떤 기술을 갈망하는 욕구가 컸던적이 없었고, 그 목표를 위해 진심으로 몰입하고 있다. 그리고 몰입된 내가 나를 관찰하면서 매일 이것이 적성이 맞다라는 확신이 더욱 단단해지고 있다. 아직도 시작 단계이다. 기본기에 충실해야 한다.
팀원들과 IntelliJ의 페어 프로그래밍 서비스인 “Code With Me”라는 기능을 통해서 공유된 파일 자체를 서로 의논하면서 작성 할 수 있었다. 생각보다 다른 사람과 함꼐 코드를 작성하고 살펴본다는 것 때문에 “가시성”과 정확한 표현에 신경써야 겠다고 생각했다. 또한 누군가를 가르치는 것에 나는 열정적이다. 하지만 지식이 부족한 것에 대한 답답함이 있다. 알려주고 싶은 것은 많은데, 내가 아직 충분하지 않다. 지식을 공유해야 하는데 내 전문성이 떨어진다. 더 열심히 공부해서 더 쉬운 말로 설명 할 줄도 알아야 한다. 단어 하나 하나 의미를 정확하게 표현 할 줄 알아야 하는데 아직 부족하다. 하지만 매주 지날때 마다 몇가지씩 교정되고 있는 것을 느낀다. 특히 한달 전부터 올렸던 블로그 글들을 이전해오면서, 예전에 쓴 글들을 다시 전체적으로 읽게 되었다. 그때마다 아 저건 내가 썼지만 잘못된 표현이네라고 판단 할 수 있게 되었다. 아직도 많이 틀리고 있을 것이다. 하지만 또 일주일이 지나면 또 지난 일주일에 틀린 것들을 교정해 나갈 것이다. 이렇게 계속 하다 보면 점점 완성도가 높아질 것이라고 믿는다.
효율적인 공부방법에 대한 뻔한 질의 응답에서 얻은 꺠달음
이보다 중요한 것이 있다. 문제를 풀어나가면서 단순히 풀어냈다라는 성취감 보다, 내가 모르는것이 너무 많다는 것을 매 문제마다 느끼고 있다.
“기본기” 의 범위는 어디까지일까라는 고민도 많아지고, 선배인 매니저님을 통해서 뭔가 내 공부가 효율적인지 어떻게 효율적으로 공부 할 수 있을지, 너무 뻔하지만 뭔가 갈팡질팡 하는 나에게 어떤 조언이라도 듣고 싶었다. 실제로 나는 모르기 때문에 절실하다.
매니저님이 흘려 한 말이지만 나한테는 공부 방향을 효율적으로 할 수 있는 말이 머릿속에서 떠나질 않는다. “우선 코드를 치다가 모르는 부분이 나오면 그걸 무조건 파라”, “그게 약점인거고 모르거나 이해하지 못한 것이다”
난 선배의 말에 공감했고, 그대로 실천하고자 한다. 알고리즘 문제는 내 약점을 파악하고 모르는 범위를 파악 할 수 있는 수단이다. 코딩테스트? 중요하긴 하다. 하지만 기본기가 부족한 나에게 코딩 테스트 문제들은 마치 나에게 가이드를 제공해주는 것 같다. “이 정도 초급 문제인데도 이정도 문법은 능숙하게 쓸 줄 알아야 한다”는 것을 강조하고 있는 것이다.
이것을 잘 풀어내지 못하면 “너는 반복문이 약하거나, 너는 변수의 스코프에 대한 이해가 없는 것이거나, 배열을 선언하고 값들을 출력하지 못하거나, 2차 반복문을 못하는 것이다.” 등 내가 공부가 필요한 범위를 알려주고 있다고 생각이 되었다.
당연히 최선을 다해서 풀어내긴 해야 하지만, 모르는 것에 대해서 너무 고민 시간이 긴 내 단점을 발견했다. 당당히 다른 사람의 코드를 보고 학습해도 되는 단계이다. 마치 IQ테스트 처럼 끙끙대면서 시간을 오래 끌지 말자. 어짜피 그렇게 풀어내봤자 억지로 풀어낸 경우가 많으며 프로그래밍적으로 접근하지 않은 경우가 많다. 이해가 안 된 문제는 몇시간씩 허비할 여유로운 일정이 아니다. 모르는 것을 빠르게 캐치하고 빠르게 다른 사람, 다른 코드들도 적극적으로 살펴보자. 그리고 보고만 이해했다고 대충 넘어가지말고 내가 직접 쳐보면서 흐름을 파악하자. 이것이 효율적으로 공부 시간을 단축 할 수 있는 최선이라 생각되었다.
다음주 다짐
다음주는 빠르게 알고리즘 남은 문제를 정리하면서, 특히 내가 부족하다 생각되는 Java의 기초 문법, 용어 등을 핵심들을 정리하고, 그것에 대해서 빠르게 강의, 공식문서, 실습을 통해서 보충해야 한다. 생각보다 시간이 없다. 곧 프로젝트가 다가온다. 본거 또보고 본거또보고 효율이 좋지 않다. 그 이유는 아는부분 또보고 아는부분 또보고 중복이 많아서 생각보다 핵심적인 의문을 풀려는 정리가 안되있다고 생각했다. 아직도 질질 끌고 있으면 안된다.