본문 바로가기
기타

리팩토링 스터디 #10 - 마무리

by 유세지 2021. 3. 13.

리팩토링 스터디의 마지막 시간입니다. 마지막인만큼 내용이 많지 않아 아주 짧게만 정리하고, 후기로 이어집니다.

 

타입과 인스턴스를 구분

"타입과 인스턴스를 구분" 하라는 것은 이전에 진행된 북스터디 중 이펙티브 자바 에서 나왔던 말이라고 합니다. 리팩토링 책에서도 유명한 말이라며 인용하였는데, 어떤 대상을 보고 단순히 타입인지 아니면 그 타입을 지닌 인스턴스인지 구분하는 것은 중요합니다. 서로 혼동하기도, 자신도 모르게 혼용하기도 쉬운 편이라 간간히 문제가 되기도 하는 부분입니다.


이러한 효과 덕분인지, 스터디에 참여했던 인원들도 정확히 필요한 경우가 아니라면 상속은 지양하는 편이라는 의견이 있었습니다. 다른 영향을 미처 고려하지 못하고 잘못 사용해서 보는 경우가 있기에 책에서도 이럴 땐 위임을 이용한 방법으로 노선을 변경하라고 조언하고 있는 것입니다.


물론 잘만 사용한다면 간단하고 심플한 계층 관계를 표현하는 로직이 될 것임에는 이견이 없었습니다.

책에서 이러한 상속 관계의 예시로 들었던 것이 바로 리스트(List)를 상속받아 구현된 스택(Stack)인데, C++이나 자바와 같은 많은 언어에서 이미 스택과 같은 기본적인 기능이 구현되어있고, 라이브러리 형태로 제공하고 있습니다. 다만 자바스크립트에는 따로 리스트가 구현되어있지 않기 때문에 자바스크립트만 공부했다면 스택과 리스트의 관계는 잘 모를 수 있다는 점에 동의합니다. 이제부터라도 알아두면 좋겠지요.

 

 

리팩토링 스터디를 마치며

이 이후에는 특별히 언급된 내용이 없었습니다. 바로 후기로 넘어가보겠습니다.

 

작년 9월부터 시작했던 리팩토링 스터디가 올해 3월까지 반년간의 일정을 마치고 마무리 되었습니다. 대부분의 인원들이 마지막까지 거의 모든 차시에 열성적으로 참여하며 성공적인 북스터디가 될 수 있었습니다. 비록 사용하는 언어도 다르고, 경험과 수준도 달랐지만 그만큼 부족한 부분을 더 준비하고 다른 인원들을 도와주기도 하며 충분한 시간을 가졌던 것이 끝까지 함께할 수 있던 요인이 아니었는가 하는 생각이 듭니다.

 

 

리팩토링 스터디의 시작

 

사실 저는, 제가 블로그에 기록하는 것에 비해 실제 경험이나 쌓았던 지식의 양이 얇은 편이라고 스스로 생각하고 있습니다. 프로젝트나 결과물이 많은 것도 아니고, 무언가를 만들어보라고 했을때 "그건 쉬운 일이죠. 바로 시작해볼까요?" 라고 자신만만하게 덤벼들 깡도 없습니다. 이런 경험 부족은 스터디를 진행하면서도 제 자신을 필요 이상으로 위축시켰던 요인으로 남아있었습니다.

 

프로그래밍이라는 행위를 시작한지는 꽤 오랜 시간이 흘렀지만, (햇수로만 치면 15년이 되어갑니다.) 중간중간 오래 쉬기도 했고, 아무런 계획도 체계도 없이 되는대로만 프로그램을 짜왔던 시간들이 이제 와서 돌이켜보면 후회스럽고 뼈아프게 다가옵니다. 왜 진작 기본부터 배우지 않았을까. 왜 사람들이 중요하게 생각하는 것들을 만들어보지 않았을까. 하는 잡념들이 들때면 그동안 나름대로 개발을 하는 사람으로서 살아 온 인생을 송두리째 부정당하는 느낌입니다.

 

그렇다고 다른 공부를 열심히 했었는지 떠올려보면 그건 또 아니었던 것 같습니다. 그저 놀기 좋아하고, 하루하루 어떻게 지루한 시간들을 보낼지 고민하는 비생산적인 삶의 연속이었습니다. 이렇게 적고 보니 또 다시 자존감이 깎여나가는듯 하네요.

 

몇 번의 실패와 좌절을 맛본뒤에야 대학교에 들어오고, 이대로 사는게 더는 안되겠다 싶어서 한 가지 결심을 하였습니다. 나의 능력으로 돈을 벌 수 있는 '전문가' 가 되기 위해 나름의 커리큘럼을 짜고 실행했습니다.

 

1학년을 마치고 입대를 준비할 겸 휴학을 하였습니다. 의경 선발을 준비하는 한 편으로, 당시에 유망하다고 생각했던 안드로이드 어플리케이션 제작자가 되기 위해 1학년때 진행한 자바 스터디를 떠올리며 상업적인 가치를 갖는 어플리케이션을 만드는데 집중했습니다. 

 

 

 

나름 공부하거나 개발했던 내용들을 블로그에 올리기도 했었지만, 업로드 주기가 말하듯 꾸준하지는 않았습니다. 사용했던 기술에 대한 이해가 수반되지 않았던건 덤이구요. 종강 후에도 매일같이 학교에 나와서 동아리방 공용 PC에 앉아 아침부터 밤까지, 물론 심심찮게 밤도 새고 개발만 했던 것 같습니다. 지금 생각해봐도 열심히는 했다고 말할 수 있지만 효율적이진 않았던 것 같습니다. 끊임없이 발은 옮겼지만 목표로 직진하지 못하고 이리저리 빙빙 돌면서 갔다는 말이 어울릴 것 같네요.

 

의경 시험은 세 번 내리 떨어지고, 결국 더는 지체할 수 없어 육군으로 입대를 결정함과 동시에 무엇인가 잘못되었음을 느꼈습니다. 결국 안드로이드를 그만두고, 급하게 나마 웹을 하기로 결심하고 얼마 남지 않았던 시간을 활용해 HTML / CSS 강의를 들었습니다. 인프런에서 초급 강의를 겨우 수강하고 간단히 포트폴리오 페이지를 만들고나니, 약속의 시간은 이미 코앞으로 다가와 군에 몸을 담게 되었습니다.

 

 

조잡하게 만들어진 포트폴리오

 

정신없이 군 생활을 하다보니 바깥의 동기들은 학년도 오르고, 멋진 결과물들을 만들어내는 모습에 비해 매달 있는 훈련과 출동에 그저 하루하루를 살아만 가는 제 모습이 너무 한심해보였습니다. 친구들이 저렇게 열심히 사는동안 나는 무엇 하나 이루어놓은게 없으니 초조해져만 갔습니다. 그러던 와중에 병사들 개개인이 핸드폰을 사용할 수 있게 되면서 저에게도 기회가 생겼습니다. 핸드폰을 하느라 바쁜 병사들이 사이버지식정보방(이하 사지방)을 더는 사용하지 않게 되어 뜻하지 않은 반사이익을 얻게 되었지요.

 

생활관에 누워서 게임, 동영상, SNS까지 모두 이용할 수 있는데 굳이 춥고, 느리고, 답답하기까지 한 구식 컴퓨터를 이용하려고 하는 병사들은 거의 없었습니다. 덕분에 저는 조용한 분위기에서 마음껏 코딩과 공부를 할 수 있게 되었고, 이건 정말 큰 행운이었다고 생각합니다.

 

한 번 시작하니 그 다음부턴 정말 기계적으로 코딩을 하러가게 되었습니다. 물 만난 물고기처럼 일과시간이 끝나면 사지방에 출근하는 것이 너무도 당연한, 또 하나의 일과가 되었습니다.

 

좋은 일이든 나쁜 일이든 한꺼번에 밀려온다고 했던가요, 두 번째 행운이 찾아왔습니다. 바로 국방부오픈소스아카데미의 개최입니다.

 

전보다 수준 높은 강의를 듣고, 마지막에는 집체 교육에 참가해서 멘토님께 교육을 받고, 점점 이 길에 대한 확신을 갖게 되었습니다. 공부했던 내용이나 집체교육의 자세한 내용은 그 당시 따로 정리했던 글을 참고하시면 이해가 쉬우실 것 같습니다.

 

군인이 된 컴공이 사는 법

국방부오픈소스아카데미 집체교육 후기입니다.

 

 

 

 

이 글들 이후로 배웠던 내용은 블로그에 정리하는 습관이 생겼습니다. 깃, 제이쿼리, 노드, 리액트... 적지 않은 글들을 작성했지만, 특히 리팩토링 스터디를 정리한 이 시리즈는 제게 더욱 큰 의미가 있습니다.

 

전혀 베이스가 될 지식이 없는 상태에서 처음 보는 내용들을 스터디를 진행하며 정리했기에, 제 글을 읽는 누군가에게 도움이 될 수도 있겠지만 누구보다도 제가 다시 읽고 떠올릴 수 있도록 스스로에게 주는 참고서를 만든다는 느낌으로 적어나갔습니다. 다행히 성공적으로 스터디를 마치게 되었고 지금은 마무리 글을 작성하고 있게 되어 기쁘고 다행스럽습니다.

 

책을 한 번 읽는다고 해서 그 책의 내용이 모두 내 것이 되는 것은 아닐겁니다. 내공을 더 쌓고 이 책을 다시 읽게 된다면 전에 보지 못했던 또 다른 관점이나, 저자의 경험에 공감하게 되는 스스로의 모습이 보이게 될 것이라고 생각합니다. 그리고 그 때, 지금까지 작성해 온 포스팅이 한 번 갔던 길을 되짚어가는데 큰 도움이 될 것이라고 믿어 의심치 않습니다.

 

북스터디는 다른 개발 서적으로 계속 진행할 예정입니다. 그 때까지 잠시 쉬며 재충전을 하고 다시 적도록 하겠습니다. 뭔가 쓰다보니 또 글이 길어졌습니다. 이 글부터 리팩토링을 해야겠네요. 어떻게 마무리를 지어야할지 모르겠지만 여기까지 읽어주신분들께 감사드린다고 말씀드리고 싶습니다.

 

끝!

반응형

댓글