2019년도 상반기 회고를 하려고 생각을 했었지만, 2달이나 지났다. 그래서 이 포스팅을 작성할까 말까 고민을 했었으나 고민을 깔끔하게 날려준 결정적인 사건이 있어서 글을 쓰게되었다. 무슨 사건인지는 아래에서 확인할 수 있다.

이번 회고는 2018 회고와 겹치는 부분이 있어서 겹치는 내용은 간략하게 작성할 것이다.

부스트 캠프

올해 초에 부스트 캠프 3기 안드로이드 과정에 참여했다. 운이 좋아 면접부터 최종합격까지 할 수 있었다. 그래서 약 한 달 간은 강남에서 출퇴근을 하며 부스트 캠프 과정을 진행했다. 개발자와 협업을 하며 좋은 경험을 쌓았고 멘토링을 받으며 현실적인 조언도 받을 수 있었다.

제일 중요한 건 기술적인 시야가 넓어졌다는 점이다. 패턴도 모르고 데이터 바인딩도 몰랐지만, 부스트 캠프를 통해서 알게 되었고 관심을 가지고 공부를 시작할 수 있었다.

면접

위의 부스트 캠프 관련 내용은 지난번 회고 관련 포스팅과 비슷하기 때문에 대략적으로 적었다. 여기서부터는 새로운 내용일 것이다. 좋은 기회가 주어져서 부스트 캠프와 연계되어 면접을 보게 되었다.

직접적인 회사의 부서를 언급하지는 않겠다.

부스트 캠프에서의 활동을 좋게 봐주셔서 면접을 제안받았다. 그래서 면접을 준비하면서 '어떻게 준비해야 할까?'라는 생각을 했다. 필자는 프로젝트 관련 질문과 인성 질문을 준비했다. 지금와서 떠올려보니 왜 ‘인성’ 관련 준비를 했는지 의문이다.

아무튼, 이렇게 준비를 하고 면접을 보러 갔다. 상세한 질문 내용은 적지 않겠지만 상황을 설명하겠다. 2:1 면접이었고 분위기는 굉장히 편안했다. 면접관분들도 면접자를 많이 배려해주었다. 그래서 걱정이 사라지고 긴장도 풀렸다. 하지만, 나의 준비와는 다르게 면접이 흘러갔다.

전산학 기초와 관련된 질문이 대부분이었고, 프로젝트에 관련된 질문은 비중이 굉장히 적었다. 그래서 답변이 부족했고, 그에 따라 자신감도 적어지며 대답에 대한 확신이 없었다. 소위 말해서 말렸다. 면접을 보고 나서 떨어질 확률이 높았다. 그래서 기대를 하지 않았지만, 결과를 받으니 실망이 컸다.

나의 준비가 부족했지만, 그때는 핑계를 대고 싶었나보다. 핑계를 대면서 '준비한 부분이 나오지 않았다.'라는 식의 핑계였다. 지금와서 생각해보니 어리석은 핑계였고 그냥 부족했던 거였다. 그렇게 조금 아픈 경험을 하고 빠르게 잊었다.

그래도 느낀 점은 있었다. 전산학 기초가 부족했고 질문에 대한 답변을 하는 능력이 부족하다는 걸 많이 깨달았다. 부족한 부분에 대한 보강이 필요하다는 걸 절실히 느낄 수 있는 기회였다.

DDD 동아리

이전에 활동했던 동아리를 졸업?하고 다른 동아리를 할지말지 고민했다. 그러던 와중에 친구에게 DDD라는 동아리를 소개받고 괜찮아 보여서 지원을 했고 합격하여 활동을 시작했다.

먼저, 좋다고 생각했던 점은 다음과 같다.

  • 직장인이 많이 활동한다.
  • 하나의 주제를 잡고 스터디를 한다.
  • 활동 처음부터 팀을 정해 프로젝트를 시작해서 기간이 길다.

이러한 이유 때문에 DDD 동아리가 괜찮다고 생각했다. 3월부터 시작을 했고 RxJava 책을 정해 스터디를 진행했다. 2주에 한 번씩 모여 챕터별로 맡아서 공부하고 발표를 했다. 동시에 프로젝트는 팀별로 진행을 했다. 필자는 프로젝트를 하면서 이전에는 해보지 않았던 것이나 새로운 기술을 적용하고 싶었다.

새로운 기술 혹은 새로운 것을 적용하는 것은 설레면서 재미있다. 하지만, 그 과정은 쉽지만은 않다. 이 프로젝트에서 필자가 하고 싶은 것은 다음과 같았다.

  • 새로운 아키텍처를 공부해서 적용하는 것 -> MVVM
  • 동시에 새로운 기술들을 적용해보는 것
  • 유지보수가 원활하게 디자인 요소를 컴포넌트화 하는 것
  • RxJava를 적용하는 것

새로운 아키텍처를 적용해봤다. 전에 MVP를 사용했지만, 이번에 새로운 패턴을 적용해보고 싶었다. 이유는 View와 Presenter가 1:1 관계를 갖는다는 점과 인터페이스의 작성이 많아진다는 게 조금은 불편했다. 그래서 MVVM을 적용하기 위해 여러 블로그와 코드를 참고하여 프로젝트에 적용을 했다.

처음에 이게 맞는 것인가 싶어서 다른 사람의 코드를 비교했는데, 결국 MVVM 패턴도 각자의 코딩 스타일에 따라서 조금씩은 다르다는 것을 알았다. 큰 범주는 같지만 그 안에서 어떻게 코딩하는지는 각자 다 다르다는 것을 알았다. 이를 통해서 내 코드에 대한 의심은 없어졌고 다른 사람들은 어떻게 작성했는지 보면서 깨달음도 얻고 이 과정에서 공부도 할 수 있어서 좋은 기회였다.

계속해서 어떻게 하면 의존성을 낮추고 유지보수하기 좋은 코드를 작성할 수 있는지 생각할 수 있는 계기가 되었고, 다른 사람의 코드를 해석하는 과정에서 공부가 되었다. :)

새로운 기술을 적용해보고 싶었다. 적용하기 힘들지만, 구현하고 나면 성취감과 뿌듯함이 몰려온다. 필자는 Motion Layout과 BottomNavigationView에 애니메이션을 적용했다. 먼저, 모션 레이아웃은 카카오뱅크처럼 스크롤할 때 이미지가 작아지면서 우측 상단으로 이동시키고 싶었다. 자연스러운 Transition이 필요했고 깔끔하게 코드 없이 xml로만 작성할 수 있다는 장점이 있어서 모션 레이아웃을 적용했다. 두 번째는 BottomNavigationView에 애니메이션을 적용하는 것이다. 이는 내용이 길어질 것 같아서 짧게 말하면, 하단탭을 눌렀을 때 애니메이션을 보여주는 것이다. ShapeShifter라는 사이트를 통해서 svg 파일로 애니메이션을 만들어서 안드로이드에 앱에 적용하면 된다.

이 기술들을 적용하면서 삽질도 많이 했고, 포기하려고도 해봤지만 꼭 구현하고 싶은 마음이 강했기 때문에 완성할 수 있었다. 이 과정에서 많은 공부를 할 수 있었고 새로운 기술을 적용하는 것에 대한 두려움도 없앨 수 있었다. 새로운 기술을 적용하는 것은 언제나 즐겁다. ^0^

디자인 요소를 컴포넌트화 하는 것은 예전부터 하고 싶었던 작업이었다. 이전에 프로젝트는 기간이 짧아서 여유롭게 회의를 해서 이런 디자인 요소를 일치시키는 작업을 한 경험이 없었다. 하지만, 이번 프로젝트는 초반에 여유가 있어서 디자이너들과 함께 디자인 요소에 관해 회의를 할 수 있었다.

먼저, 마진을 8의 배수로 지정해서 공통적으로 사용할 수 있게 그리드 형식으로 UI를 구성해주었다. 그래서 마진 값이 8의 배수로만 떨어졌고 일반적인 규칙이 있어서 레이아웃을 작성할 때, 편했다. 예를 들면, 타이틀은 좌우에서 24dp만큼 떨어지는 규칙이 있어서 편하게 적용할 수 있었다.

두번째는 style과 color이다. text나 button에 대한 스타일도 컴포넌트화 시켜서 어느 곳에서든 필요한 곳이 있으면 가져다 쓸 수 있도록 지정했다. 그래서 한 속성이 이전과는 다르면 그 속성만 수정하여 재사용이 원활했다.

덕분에 레이아웃을 작성할 때, 재사용이 용이했으며 유지보수도 원활하게 할 수 있어서 뜻깊은 프로젝트가 되었다. 나중에는 가이드를 정해서 가이드에 맞게 디자인 요소를 컴포넌트화 해야겠다.

안드로이드 직군이 RxJava를 함께 공부해서 프로젝트에 부분적으로 적용하는 것은 그리 어렵지 않았다. 연산자도 그 역할을 알고 사용했기 때문에 재미있었다. 하지만, 활용하는 것은 조금 쉽지 않았다. 아무래도 공부가 더 필요한 것 같다.

DDD 동아리는 혼자서 공부하고 새로운 걸 많이 도전해볼 수 있는 좋은 기회가 되었던 것 같다.

여행

취업 준비도 하면서 동아리 프로젝트를 진행하니 생각보다 바빴다. 그래서 쉬지 못하고 계속 공부와 프로젝트를 병행했다. 더운 여름을 맞이하기 전에 시원한 곳으로 떠나고 싶었다. 그래서 블라디보스토크로 떠나기로 했다.

생각보다 추웠다. 그래도 굉장히 재미있게 잘 다녀왔다. 가보고 싶은 곳도 거의 다 방문했고 마지막 날에는 아쿠아리움에 가서 돌고래쇼도 볼 수 있어서 너무 좋았다. 첫 해외 여행이었지만, 돈을 모아서 다른 곳도 여행하고 싶은 마음이 잔뜩 생겼다.

재미있고 행복한 힐링 여행이었다.

취업 준비

동아리 활동이 끝났다. 이제 본격적인 취업 준비에 들어가기로 했다. 함께 동아리에서 진행했던 프로젝트를 완전 마무리 짓고 스토어에 올릴 계획을 세웠다. 이유는 처음에 프로젝트를 시작할 때 목표 중 하나가 스토어에 올리는 것이었기 때문이다. 하지만, 아직 서버와 관련해서 통신하는 과정에 매끄럽지 못한 부분이 있어서 이 부분을 수정해야 한다. 수정해야 한다는 생각만을 가지고 각자 다들 바쁘게 지내면서 시간이 흘러갔다.

필자는 취업 준비를 하면서 알고리즘 공부를 꾸준하게 했고, 전산학 관련 공부도 했다. 동시에 프로젝트에서 사용한 기술과 적용한 패턴, 그리고 시행착오도 정리를 했다. 그러다 이전 동아리의 행사에서 리쿠르팅 관련 발표를 하시는 것을 봤고 채용 공고를 접하게 되었다.

스타트업에 지원해보고 싶었다. 왜냐하면 빠르게 성장할 수 있을 것 같았다. 치열하겠지만, 시간이 지나 돌아봤을 때 확실히 달라진 모습일 것 같았다. 사실, 내가 하기 나름이겠지만 열심히 한다면 큰 성장을 경험할 수 있을 것 같았다.

그래서 더는 고민하지 않고 지원했다. 서류로 지원서와 포트폴리오를 제출했다. 몇일 뒤에 연락이 왔고 서류 합격과 함께 간단한 코딩 테스트를 본다고 했다. 그래서 구현 문제 위주로 풀었다. 2문제가 나왔고 어려운 난이도는 아니었지만, 애매한 부분이 있었다. 문제를 풀고 제출을 했다. 이후에 복기를 하면서 다시 풀어봤는데, 접근 방법이 조금 틀렸다는 것을 알게 되었다.

그래도 떨어지는 것보다는 붙는다는 것을 생각하여 1차 면접 준비를 조금씩 했다. 문제를 다시 풀어보고 기술적인 부분들을 준비했다. 준비한게 기특해서였는지 좋은 기회를 주셨다.(아마 신이 주신게 분명하다.) 1차 면접을 보러 오라는 제안 메일을 받았다.

면접 준비를 하면서 계속 이야기하는 연습을 했다. 면접관과 이야기하는 것이기 때문에 모르더라도 이야기할 수 있도록 노력했다. 그리고 대망의 면접!! 기술적인 부분과 필자가 진행한 프로젝트에 관한 내용이 주였다. 아는 내용은 최대한 설명하려고 노력했고, 모르는 부분은 생각해 본 다음 떠오르면 대답했고 그렇지 않은 경우 모르겠다고 당당하게 말했다.

면접 시간은 꽤 길었다. 기억은 잘 나지 않는다. 면접이 끝나고 집에 가려 했는데, 퇴근 시간과 겹쳐서 근처 카페로 가서 면접 봤던 내용을 정리했다. 기억이 잘 안나는데 최대한 생각해보고 정리를 했다. 정리를 하는 이유는 필자가 어떤 질문에 대답을 못했는지를 파악하기 위함이고 혹시나 떨어진다면 다음에 다른 곳 면접 볼 때, 도움이 되지 않을까 하기 때문이다.

집에 와서 씻고 꿀잠을 잤다. 거의 9시간 정도 숙면을 취했다. 긴장을 많이 해서 그런듯 싶다. 하루는 그냥 휴식을 취했다. 힘이 안났다. 그리고 몇일 지나서 2차 면접 제안 메일을 받았다. 좋은 기회를 또 받을 수 있어서 행복했다. 2차 면접은 임원 면접이라고 채용 공고에서 본 적이 있었다. 그래서 기술적인 질문이 아닌 인성 질문에 대해서 준비를 했고, 자기 소개와 지원 동기 등등을 준비했다.

2차 면접을 봤다. 1차 면접보다는 시간이 짧았지만 제대로 된 답변을 하지 못한 것이 많았다. 많이 당황했고, 쉽지 않았던 면접이었다고 생각한다. 그래서 끝나고 집에 돌아오는 길에 '아, 느낌이 좋지 않다.'라고 생각을 하며 힘 없이 돌아왔다. 1차 면접때와 비슷하게 긴장을 많이해서 힘이 없었다. 그래서 이날도 아마 9시간 꿀잠을 잤다. ㅎㅎ 그리고 결과가 나오기까지 휴식을 취하면서 알고리즘만 조금씩 풀었다.

그리고 몇일이 지나서 합격했다는 메일을 받았다. 드디어 합격하게 되었다. 입사일까지 몇일이 남아서 가족들과 시간을 보내고 친구들도 만나고 못한 업무 같은 것들을 처리하면서 쉬려고 한다.

취업

학생의 신분은 끝이 났지만, 이제 직장인 즉 개발자의 신분으로는 새로운 시작이다. 그러니 끝났다는 것에 안주하지 말고 잘 쉬다가 다시 버닝을 해야 한다. 잘 쉬다가 출근하면서 열심히 하자~

그동안 수고했다. 앞으로 더 수고하자~