1ilsang

Developer who will be a Legend

2019년 연말 회고

2019-12-30 1ilsangDaily

cover

오늘은 올해를 돌아보고 신년을 어떻게 준비해볼지 정리하는 포스팅 해보려고 한다.

이번에는 조금 구체적으로 적어보고 싶은데, 그 이유는 작년에 적었던 회고록이 너무 두루뭉실해 올해의 주요 달성 목표 및 달성현황을 정확히 비교해보기 어려웠다.(2018 회고록: https://1ilsang.blog.me/221430640971)

올해는 뭔가 나에게 큰 변화가 많았는데 내가 원했던 방향인지, 내가 계획한 목표량에 얼마나 부합했는지 등을 산출하기가 어려웠다.

그래서 조금 길 수도 있지만 자세하게 나의 한해를 돌아보고 내년을 구체적으로 준비해 보겠다.

TL;DR

빠르게 정리해 보자면, 노드로 취업이 힘들다 느껴 스프링을 공부했고, 부족했던 알고리즘을 채우기 위해 열심히 풀었다.

4년간 꾸준히 해왔던 네이버 블로그에서 현재의 Gatsby 페이지로 이사했다.

포트폴리오를 위해 조금 그럴듯한(하지만 많이 부족한) 모방 토이 프로젝트를 혼자서 진행해봤다.

결국 나는 다시 노드 개발자가 되었고 현재 Teamblind에서 소프트웨어 엔지니어로 일하게 되었다.

허접하게 여러 분야를 건드리면서 이렇게 문어발식 개발을 하면 나의 엔지니어로써의 경쟁력이 없을 것이라 생각했고 신년에 어떤 식으로 나의 커리어 패스를 만들어 갈지 고민해봤다.

위의 과정을 풀면서 내가 느꼈던 점들이나 주요 이슈들을 정리하면서 회고하고 신년 준비를 정리해 보려고 한다.

Index


2018.12 ~ 2019. 05. 삼성 청년 소프트웨어(SSAFY)를 하면서...

요약: https://1ilsang.blog.me/221546695268

원래 싸피는 1년 단위인데 취업특강이나 2학기 프로젝트는 나에게 매력적이지 않아 한 학기만 하고 수료했다.(5월) SSAFY 에 들어갔던 가장 큰 이유는 2018 회고의 연장선이기 때문이다. 작년에 나는 대부분의 코테에서 떨어졌고 프로젝트만 해서는 안된다는 것을 뼈저리게 느꼈었다. 또한 내가 가고자 했던 회사들의 대부분은 백엔드 신입 포지션에 Java 를 원했다. 그렇기 때문에 자바와 알고리즘을 하는 싸피는 나한테 충분히 매력적이었고 반년동안 정말 열심히 했었다.

약 반년간 백준 271 문제에서 420 문제까지 약 150문제 정도 풀었던거 같다. 하루에 한 문제씩 다섯달 정도다. 기존에는 C++ 로 문제를 풀다가 Java 노선을 타기로 결정하면서 자바로 문제를 풀기 시작했고 최근까지 대부분의 문제를 자바로 풀었었다(최근 이라 함은 밑에서 풀겠다). 물론 문제수가 중요한건 전혀 아니고 문제수만 보면 사실 그렇게 노오력 한것 같지도 않다.

150문제의 100문제 가까이는 초반 3달 동안 몰아쳐서 풀었던거 같다. 3월에 삼성 상시검정 A+ 을 취득하기 위해 12월부터 엄청 풀었었고 이때는 내가 DP는 커녕 배열 돌리기도 못해서 많이 힘들었다.

a+ cert

싸피 반 친구들이 대부분 이제 코딩을 시작하는 친구들이라 나한테 물어보는 친구들이 많았었다. 나 또한 알고리즘을 그 시점에 시작하고 있었고 그들에 비해서 아주 조금밖에 알지 못했지만, 그들의 눈에는 되게 잘해 보였었던것 같다. 부담감 속에서 기대에 부응하고 싶다는 생각으로 하루에 절반이상을 알고리즘만 풀었던거 같다. 문제를 풀면서 친구들한테 좋은 문제를 소개해주고 쉽게 설명 해주기위해 노력했었다. 처음에는 나도 못푸는 문제가 너무 많아 부끄럽고 자괴감이 심했는데 사실 삼성문제가 대부분 비슷한 패턴이기 때문에 어느 순간부터 비슷한 문제는 쉽게 풀리기 시작했었다. 그 결과 다행히도 3월에 무사히 A+을 취득할 수 있었고 대부분의 코딩 테스트에서 통과할 수 있었다.

싸피에서 자바 공부를 정말 열심히 했었다. JVM 부터 시작해서 자바 API들(sort, array, hash 등)의 코드를 까서 동작 방식을 보고 수업에서 배운 내용들을 바탕으로 따로 채팅 프로그램을 개발했다.

항상 스스로한테 ‘이게 맞아?’, ‘어떤 방식으로 동작하는데?’ 라고 되물어봤던 것 같다. 투뎁스 단계로 질문해 답변 하도록했고 그 과정 속에서 내가 CS 부터 부족한게 정말 많다고 느꼈다. 가령 sort API 는 퀵소트인가? 라는 질문에서 확답을 할 수 없었고 자바에서 Hash 버킷 사이즈와 체이닝이 어떻게 구성되고 돌아가는지 등 알고리즘을 풀면서 모르고 사용하는 API가 많다고 생각했다. 그래서 단순히 알고리즘 뿐만 아니라 언어의 자료구조 구현체도 이해하려고 노력했던 것 같다.

os seminar

싸피에서 좋은 친구들을 많이 만나서 좋았고 그래서 나도 잘 모르지만 친구들에게 많이 알려주려고 노력했었다. 운영체제, 네트워크 세미나를 했고 세미나 하면서 스스로 공부를 많이 했었다. 이때의 기억이 좋았기 때문에 기회가 되면 강연이나 발표 등을 적극적으로 해나가려고 노력하게 되었던것 같다.

서울 반 2등으로 싸피를 마무리하고 수료했다. 상반기 취업에 성공하진 못했지만 만들고 싶은게 생겼고 그것을 위해 아카데미를 그만두게 되었다.


2019. 06 ~ 07. 싸피 수료 이후 혼자 취준을 하면서...

열심히 했다고 생각했지만 많이 부족했었는지 상반기에도 취업이 안됐다. 공백기가 생기는게 싫었기 때문에 원티드를 통해 스타트업들을 물색했다.

이때 내 눈에 Teamblind 라는 회사가 들어왔었는데, 내가 매력을 느낀 이유는 3가지였다.

첫 번째는 대부분의 직장인들이 사용하는 익명 앱이라는 것에 흥미를 느꼈다.
정보가 많이 부족했던 나는 이곳에서 여러 기업들의 이야기들을 많이 들을 수 있지 않을까? 생각했다.

두 번째는 실리콘밸리로 진출하기 위해 노력한다는 점이었다.

세 번째는 나랑 기술스택이 완전 동일했다.
당시 싸피를 통해 자바 스프링을 공부했지만 반년 동안 속성으로 한거라 그 깊이가 부족했다. 그래서 자바도 제대로 못다루고 노드도 잘한다고 당당하게 말하기 어려운 애매한 나의 상황 때문에 취업이 더 힘들었는데, 블라인드에서 요구로 하던 기술 스택이 Node.js, Vue.js, MySQL, Redis, Docker 이였다. 얘네들은 내가 스마일게이트에서 서버개발캠프 때부터 사용하던 친구들이라 최소한의 이해도가 있었기에 도전해 볼수 있겠다 생각했다.

이때 나는 취업이 정말 절박했기 때문에 바로 이력서를 넣지 않고 한방에 입사할 수 있도록 계획을 세우게 되었다. 기업분석 등을 하면 더 좋았겠지만, 나는 그정도로 성실하진 않았고 엔지니어로써 teamblind.com 사이트를 똑같이 모방해 포트폴리오로 제출하기로 결정했다.

단순히 만들어 제출이 아니라 그 과정을 정리해

내가 어떻게 생각했고, 어떤 방식으로 설계했으며 왜 이렇게 만들었는지, 그 과정 속에서 어떤 고민을 했는지

를 명확하게 보여주기위해 블로그에 상세하게 포스팅을 하기 시작했다.

Blind prototype

많은 우여곡절 끝에 프로토타입을 만들었다.

지금 이 글을 쓰는 시점에서, 잘 만들었는가? 스스로에게 되묻는다면 솔직히 엉망진창이라 생각한다. 타입스크립트를 저때 처음 사용해 잘 몰랐었고 API-Gateway 라고 하기보단 단순히 프록시 서버에 불과하다. ES5와 ES6 가 혼용되어 있으며 공통 모듈 등에 대한 정리도 잘 안되어 있다. 또한 콜백과 비동기에 대해 이해하고 있다 생각했지만 직접 서비스 코드를 짜다보니 막히는 부분이 정말 많았고 그 결과 엉망인 코드들이 많이 존재한다.

하지만 확실한건 이 프로젝트로 취업이 됐든 안됐든 개발하는 동안은 정말 행복했던 순간들이었다. 실제 서비스에서는 어떤 식으로 처리할까? 너무 궁금했고 조금 더 좋은 설계와 코드를 짜기 위해 정말 많은 밤을 지새웠다.

이 과정 속에서 나는 개발자로 성장하기를 더욱 확신하게 되었다. 개발이 너무 재밌고 잘 하고 싶었다.

issue

이때 재밌는 사연이 하나 있는데, 내가 한참 토이블라인드를 만들고 있는 도중에 누군가가 issue 를 달았었다.

매일 혼자 고독하게 만들고 있었는데 누군가가 내 프로젝트를 보고 있다는 생각이 들면서 엄청 흥분했었던 기억이 있다. 이때 영어와 오픈소스에 큰 흥미와 필요성을 느끼게 되었고 코드와 커밋메시지에 엄청나게 신경썼었다. 이는 신년 계획의 큰 부분으로 차지할 예정이다.


2019. 08. 취업 이후 주니어 개발자로 일을 하면서...

blind logo

정말 운이 좋게도 Teamblind에 입사하게 되었고 곧바로 일을 하기 시작했다. Node, Vue 를 메인으로 개발하는 소프트웨어 엔지니어가 되었고 모르는것이 너무 많았기에 많은 사람들에게 이것저것 물어보며 빠르게 팔로업 하려고 노력했다.

나는 엔지니어로써 좋은 코드를 작성하기 위해 끊임없이 고민해야 한다 생각했다. 또한 팀원들과 같이 성장해 나가며 공동의 목표와 개인의 성장을 모두 잡고 싶었다. 그래서 여러 세미나에 다니며 팀원들에게 공유하고 적극적인 코드 리뷰나 내가 생각하는 바를 사내 세미나를 열어 표현하기도 했다.

신입이 이렇게 의견을 적극 피력해도 되나 고민이 많이 되긴 했었는데 좋은 리더님 덕분에 과감없이 ‘나는 이렇게 생각한다’고 이야기 할 수 있었다.

서비스를 만들어 가면서 ‘잘하는’ 개발자는 어떤 것을 뜻하는지 많은 의문이 들었다.
재사용과 미래의 유동성을 고려하여 추상화와 인터페이스를 빡세게 정의한 아키텍처를 그리는 개발자가 좋은걸까?
아니면 적당히 나뉜 클래스로 주어진 기간내에 당면한 문제들을 빠르게 처리 할 수 있는 개발자가 좋은걸까?

이 질문을 통해 내가 얻고 싶은 것은 개발에 있어 어떤 도메인의 ‘어느 선’까지를 고려해야 할지 아직 감이 잘 안온다는 점이다. 우리가 생각하는 ‘재사용성’ 혹은 ‘미래의 기능 추가’ 등은 실제로 일어나지 않는 경우가 훨씬 많다고 느꼈다. 그리고 추상화와 인터페이스를 어떤 관점으로 하느냐에 따라서 그것이 오히려 간단히 개발할 것도 상당히 불필요한 제약으로 되기도 한다.

나는 ‘심플 소프트웨어’라는 책을 읽고 그 중심을 찾기위해 노력했는데, 책 내용이 상당히 재밌으니 추천한다.

어쨌든 나는 아직 경험이 많이 부족하기 때문에 경험으로 쇼부보자고 생각했고 커리어 패스에 도움이 된다 생각하는 것은 무엇이든 도전해 보려고 했다. 그러다 보니 자연스럽게 ‘내 커리어 패스에 도움이 되는건 뭘까?’ 고민하게 되었고 퇴근후 대부분의 저녁 시간은 커리어 패스에 도움이 되기 위한 발판들을 만드는 과정이었다.

맨 처음 했던 것은 정들었던 네이버 블로그에서 이 정적 페이지로 이사하기였다.

프론트도 개발하고 있는데 자기가 만든 페이지 하나 없다는 점이 나한텐 아이러니했기에 정적 페이지 하나를 호스팅 하자고 생각했고 템플릿을 받아 바로 시작했다. 이때 React 와 GraphQL에 큰 흥미를 가지게 되었는데, 현재 블로그가 이것들로 이루어져 있기 때문이다. 얘네들은 신년 계획의 사실상 메인이 된다.

두 번째는 자바로 풀던 알고리즘을 자바스크립트로 풀기 시작했다는 점이다.

취업을 했지만 알고리즘은 꾸준히 하려고 노력했다.

나는 대회용 알고리즘을 준비하는 것이 아니기 때문에 내가 주력으로 사용하는 언어의 깊이를 위해(해당 언어의 자료구조 구현체에 대한 이해) 개발하는 언어로 푸는게 좋다고 생각했다. 이전에 C++ 에서 Java 로 갈아탈때도 vector 를 못써서 많이 답답했던 기억이 있는데 이런 부분은 차차 익숙해지면 된다고 생각한다. 무엇보다 언어마다 구현체가 조금씩 다르기 때문에 한 언어의 깊이를 더 알고 싶다면 그 언어로 문제를 푸는게 맞다고 생각했다. 예) map과 reduce를 구현할 수 있는가?

물론 나는 알고리즘 호좁이다. 갓갓님들은 어떻게 생각하실지 잘 모르겠다.

어쨌든 JS로 풀다 보니 대회위주의 백준과는 조금 거리가 있다 생각했고 LeetCode 를 풀기 시작했다. 특히 내가 틀린 부분을 알려주기 때문에 입문에 있어 편리한 점이 많았다.

이 과정 속에서 JS 자료구조 구현체들을 한번씩 싹 정리하게 되었는데 개인적으로 엄청나게 도움이 됐다. 특히 JS prototype, constructor, reduce 등 여러 API와 JS 동작 방식들을 공부했는데 점점 토끼굴로 내려가게 되더니 이벤트 루프까지 다시 한 번 공부 하게 되어 좋았었다. 역시 알고쓰는거랑 모르고 쓰는거는 너무 큰 차이를 보인다.

세 번째는 영어였다.

항상 영어에 대해서 생각이 많았었고 필요성을 강하게 느껴 퇴근하고 조금씩 Medium 글을 영어로 읽어보려고 노력했다. 릿코드를 풀기 시작한 계기도 어느정도 영어로 하고싶단 욕심이 있어서였다.

퇴근후 짬짬히 얘네들을 하는데 생각외로 꾸준히 하기가 어려웠다. 나의 의지력은 OTL…

그러면서 퇴근후의 벨런스를 어떻게 잡아가야할지 많이 고민하게 되었다.


그 외

올해 나의 세마나/해커톤 참여현황은 아래와 같다.

참여했던 것들을 돌아보니 나의 관심사가 뭔지 보인다 -_-;; 꾸준히 세미나에 참여하려고 노력하는데, 사실 세미나에 가서 와! 하는 엄청난 인사이트를 얻거나 비약적 기술 성장이 되지는 않는다고 생각한다.

그럼에도 굳이 시간을 내어 꾸준히 참여하려고 하는 이유는 커뮤니티 활동을 하고 싶어서다. 다른 개발자들과 소통 하고 싶어서 많이 참여했고 굳이 모르는 사람한테 말을 걸어보기도 했었다.

많은 세미나에 가면서 나도 연사로 활동해 보고 싶다고 생각했고 그래서 발표 주제로 할만한 것들을 찾아보고 공부하려고 했던 것 같다.

그 외에 특이했던 경험은 서버개발캠프 홍보영상을 찍었다. 얼굴팔려서 읭 했지만 섭캠 자체가 좋았던 경험이었고 나를 밖으로 노출시키고 싶은 마음도 컸던 것 같다.


신년 계획

여기에 한방에 적으려다 너무 길어지는것 같아 다음 포스팅으로 분리했다.

저의 신년 계획에 흥미가 있으시다면 링크를 클릭해 주세요.

이어보기…