어느새 2021년의 끝이 코 앞에 다가왔다.
2021년을 돌이켜보자면, 내가 살아온 그 어느 때의 한 해보다도 밀도가 높았다.
비전공자에서 개발자 취업을 위해 프로그래밍에 매진하였고 취업 이후에도 부족한 것들을 채우기 위해 쉴 새 없이 달렸기 때문이다.
이 마라톤의 타임라인을 정리해보자면 아래와 같다.
- 독학
- 2020년 11월 28일 ~ 2월 28일
- 항해 99
- 3월 1일 ~ 6월 7일
- 취업 활동
- 6월 8일 ~ 7월 25일
- 취업 후 근무
- 7월 26일 ~
코딩을 처음 공부한 2020년 11월 28일로부터, 회사에 근무하게 되는 7월 26일까지 241일이라는 시간이 걸렸다.
이 241일이라는 시간 동안 독학, 항해 99, 취업 활동을 하였다.
이제 이 과정들을 하나씩 살펴보며 어떤 것을 잘했고 어떤 것이 아쉬웠는지 회고를 해보겠다.
0. 목차
- 독학
- 코딩을 하게 된 계기
- 계획 세우기
- 공부한 것들
- 총평
- 항해 99
- 항해 99를 하게 된 이유
- 항해에서의 프로젝트
- 총평
- 취업 활동
- 모의면접
- 취업 준비
- 취업!
- 총평
1. 독학
2020년 11월 28일 ~ 2월 28일
1.1 코딩을 하게 된 계기
사실 나는 내 전공을 좋아하지 않았다. 내 적성에 맞지 않았기 때문이다. 그래서 학부 생활 내내, 내가 선택한 전공으로 평생 일을 할 수 있을까라는 의문을 가졌었다.
그 의문을 해소하지 않은 채, 취업을 준비하게 되었다. 취업에 대한 성과는 보이지 않고 하루하루 불합격 통보가 메일함에 쌓여가자 나는 점점 심적으로 지쳐갔다.
그러던 중에 학부 생활 때 들었던 교양과목인 Computatinal Thinking(컴퓨터적 사고)이 떠올랐다. 기초적인 컴퓨터 관련 지식을 배우고 간단한 Python 코딩을 해볼 수 있었는데, 이 시간이 너무 즐거웠었기 때문이었다. 그래서 코딩이라는 것을 더 해보고 싶었던 나는 생활코딩이라는 무료 강의를 알게 되었고 HTML, CSS를 접하게 되었다.
강의를 들은 나는 충격을 받았다. 너무나도 흥미로웠기 때문이다. 이것을 알지 못하고 살아왔던 것이 시간 낭비라고 느껴졌고 안타까움을 느낄 정도였다. 이에 더해서 웹이라는 분야에 대해서 더 알고 싶고 일해보고 싶다는 생각이 들었다.
그래서 나는 과감하게 전공을 뒤로하고 웹 개발자가 되기 위해 본격적으로 공부를 시작하게 되었다.
1.2 계획 세우기
마음먹었다고 모든 일이 이루어지는 것은 아니다. 개발자가 되기로 결심했지만, 직면한 문제가 있었다. 그 당시에는 막연하게 웹 개발자가 되고 싶다는 생각만 했을 뿐 구체적인 로드맵이 없다는 것이었다. 20대 후반이라는 적지 않은 나이에 1년 내로(또는 최대한 빨리) 개발자로서 취업하는 것이 목표였던 나는 최대한 효율적인 로드맵이 필요했다. 그러던 중, 인프런에서 내 상황에 맞는 아주 좋은 강의를 알게 되었었다.
비전공자를 위한 개발자 취업 실전 가이드 - 한정수
이 강의를 통해 아주 짧은 시간에 개발 분야, 학습법, 취업 준비 등에 필요한 정보들을 알아낼 수 있었다. 그리고 내가 어떤 것들을 정해야 할지 알 수 있었고 정한 것을 토대로 효율적인 로드맵을 그려낼 수 있었다. 어떤 것들을 정했는지는 아래에 정리하겠다.
1.2.1 무엇을 목표로 할 것인가
웹 개발에는 다양한 분야가 있다. 그중에서 내가 선택할 수 있었던 분야는 프론트엔드와 백엔드 두 가지였다. 본래 욕심이 많아서 '나는 풀스택이 하고 싶어!'라고 생각했었지만 현실과 타협하여 딱 한 가지만 정하기로 하였다. 프론트엔드와 백엔드를 간단히 정의하자면 아래와 같다.
프론트엔드: restful API를 통해 가져온 데이터를 토대로 클라이언트에게 보여줄 UI를 구성하는 엔지니어
백엔드: DB의 데이터를 비즈니스 로직을 통해 서비스에 필요한 형태로 가공한 뒤 restful API로 프론트단에 제공하는 엔지니어
둘 다 매력적이라서 정하기 어려웠지만 문득 학부 시절이 떠올랐다. 당시에 난 유독 발표를 많이 했었다. 발표 준비를 할 때마다 PPT를 만들며 항상 했던 고민이 있었다.
내 정보를 어떻게 표현해야 듣는 사람들에게 잘 전달할 수 있을까?
어떻게 이목을 끌 수 있는 예쁜 화면을 만들 수 있을까?
이런 고민들을 하며 만든 PPT들을 발표할 때마다 굉장한 성취감과 재미를 느꼈었다. 그래서 내 성향이 프론트엔드와 맞을 것 같다는 생각을 하였고 프론트엔드 엔지니어를 목표로 하게 되었다.
1.2.2 무엇을 공부할 것인가
웹 개발에 사용되는 기술들은 정말 많다. 이 기술들 중에 필수적인 것들을 추려서 공부해야 했다. 나는 프론트엔드 엔지니어를 목표로 정했기 때문에 이에 맞는 공부할 기술들을 정할 수 있었다.
HTML, CSS, JavaScript, React.js
HTML, CSS, JavaScript는 프론트엔드 개발자의 기초 스택들이다. 이것들을 기반으로 React.js, Vue.js, Angular.js 와 같은 라이브러리/프레임워크를 활용하여 웹 애플리케이션을 만들게 되는 것이다. 취업을 위해서는 라이브러리/프레임워크 공부도 필수인데 시장에서 주로 사용되는 React.js를 공부하기로 정했었다.
취업을 위해서는 알고리즘 공부도 필요했다. 소위 네카라쿠배당토라고 불리는 대기업들에서는 알고리즘 테스트를 보기 때문이다. 알고리즘 테스트 준비에 대해서는 아래 링크의 유튜브 영상에서 아주 좋은 조언을 들을 수 있었다.
대기업 IT 직군 코딩테스트 합격을 위한 현실적이고 직관적인 공부 순서 - 동빈나
개발자는 코드를 기반으로 소통하고 협업해야 한다. 이를 가능케 하는 것은 분산 버전 관리 시스템 중 하나인 GIt과 Git 원격 저장소인 GitHub이다. 취업 이후에 원활한 협업을 위해서라도 Git, GitHub를 틈틈이 공부하기로 계획했었다.
1.2.3 어떤 방식으로 공부할 것인가
요즘 개발 분야가 각광을 받는 만큼, 공부할 수 있는 수단은 많다.
- 인터넷 강의
- 국비 학원
- 부트캠프
- 서적
- 스터디
이 중에서 나는 반복해서 들을 수 있고 이동시간이 없이 집에서 간편히 들을 수 있는 인터넷 강의로 코딩을 공부하기로 정했다. 또, 코딩 공부만큼 인터넷 강의가 잘 어울리는 것이 없다고 생각했다.
그리고 지속적인 공부를 위해서 하루 동안 공부한 내용을 블로그와 깃허브에 TIL로 작성하자는 규칙을 세웠다.
1.2.4 로드맵
위 사항들을 정한 나는 개발자 취업을 위한 나만의 로드맵을 만들 수 있었다. 당시의 내 로드맵은 아래와 같았다.
1.3 공부한 것들
코딩을 독학하는 동안 공부한 것들을 정리해보자.
[제공 매체] 강의명
파란 색상 볼드체 : 도움이 된 것
* 필자의 철저한 주관. 모두 다 유명하고 좋은 강의들이다.
- [생활코딩] HTML & CSS
- [생활코딩] Git & Source Tree
- [생활코딩] POSIX CLI
- [생활코딩] JavaScript
- [생활코딩] Node.js
- [Teccboi Wonie] Python
- [woorimIT] Python(배열, 리스트, 2차원 배열)
- [CodeUp] 기초 100제
- [나도 코딩] C
- [동빈나] 이코테 2021 강의 몰아보기
- [노마드코더] 코코아톡 클론코딩
- [노마드코더] 바닐라 JS
- [인프런 - 김태원] Python 알고리즘 문제풀이
- [인프런 - 정재남] JavaScript 핵심 개념
- [스파르타코딩] 웹개발 종합반
- [프로그래머스] Hello, JavaScript
- [코드잇] HTML/CSS
- [코드잇] JavaScript
- [코드잇] 반응형 웹 퍼블리싱
- [코드잇] jQuery
- [코드잇] 자료구조
- [코드잇] 유닉스 커맨드 라인
- [코드잇] Git으로 배우는 버전 관리
1.3.1 다시 돌아간다면?
계획했던 로드맵에 벗어난 것들을 꽤나 배웠다. 물론, 더 많은 지식을 공부해서 잘해보고 싶다는 생각에 그랬었지만 지금 시점에서 돌이켜보니 아쉬운 건 어쩔 수 없다. 특히 C언어는 도대체 왜 공부한 걸까...
저 당시로 돌아간다면, 아래와 같이 공부할 것 같다.
프론트엔드 스택
- [생활코딩] HTML & CSS & JavaScript
- 생활코딩의 강의들은 비전공자/초심자가 보기에도 매우 쉽고 이해가 잘 된다.
- 처음 공부하는 시점인만큼 내가 공부할 스택들을 두루 알아본다는 느낌으로 공부하면 좋을 것 같다.
- [노마드코더] 코코아톡 클론코딩
- HTML, CSS 기초를 공부하고 카카오톡의 UI를 클론 코딩해보는 수업
- 챌린지와 함께 진행하게 된다면, 좀 더 자극받으며 공부할 수 있음
- CSS에 대한 자신감을 가질 수 있게 되었다.
- 웬만한 UI는 클로닝 할 수 있게 될 것이다.
- 이때 배운 flex box, box model은 지금 현업에서도 아주 요긴하게 사용하고 있다.
- 정말 만족도가 높았던 강의!
- [노마드코더] 바닐라 JS
- 바닐라 JS를 공부하고 이를 토대로 크롬 익스텐션을 클론 코딩해보는 강의
- 챌린지가 매우 어려웠지만 그만큼 많이 배우고 느낄 수 있음
- JS에 대한 감을 잡기 좋은 강의
- 체계적인 문법 공부는 할 수 없어서 조금은 아쉬움
- 리뉴얼되었다는데 지금은 달라졌을 수도?
- 모던 자바스크립트 Deep Dive
- JS에 대한 감을 잡았으니 서적을 통해서 체계적인 문법 공부를 할 때
- JS에 대한 개념과 동작원리를 아주 쉽게 풀어낸 좋은 책
- 면접에서도 도움이 될 만한 내용이 많음
- 지금도 계속 틈틈이 읽고 정리하고 있는 책
- 900쪽이 넘는 방대한 분량이므로 나누어서 틈틈이 꾸준하게 공부
- 절대로 학교 공부하듯이 책에만 매달려 공부하지 말 것!
- 이 시점에서는 주로 프로젝트를 하며 무엇인가 만들어보되, 부수적으로 이론 공부를 하는 것이다.
- [스파르타 코딩] 웹 개발 종합반
- 프론트엔드, 백엔드가 무엇이고 웹 개발이 어떻게 돌아가는 것인지에 대한 시야를 키울 수 있는 강의
- 강의 환경이 매우 잘되어 있는 편이라 수월하게 공부할 수 있음
- 난이도 자체는 아주 쉬운 편
- 필자는 항해 99를 지원, 합격 이후 무료로 지급받았음
- 코어 자바스크립트
- 모던 자바스크립트 Deep Dive와 달리 JS의 핵심을 다루는 책
- 기초부터 차근차근 공부한다기보다는 필수 개념을 복습하기에 좋음
- 그 이후는?
- HTML, CSS, JavaScript를 직접 다뤄보며 토이 프로젝트 진행
- React.js 또는 Vue.js 중 하나를 선택하여 공부
- HTML, CSS, JavaScript + 프레임워크/라이브러리(React.js, Vue.js)를 활용한 팀 프로젝트 진행
알고리즘 공부
- [Teccboi Wonie] Python
- 코딩 1시간 만에 배우기라는 강의는 1시간 30분이라는 짧은 시간 안에 Python 문법을 공부할 수 있다.
- 알고리즘 테스트에서 필요한 Python 문법은 이 강의로도 충분히 소화가 가능할 것이다.
- [CodeUp] 기초 100제
- 간단한 코딩 문제들을 풀어볼 수 있는 문제집
- 코딩 테스트가 어떤 것인지 감을 잡기 좋음
- 단, 절대 이렇게 쉽게 나오지 않고 감을 잡는 시간이라고 생각하기
- [동빈나] 이코테 2021 강의 몰아보기
- 무료 강의이지만 믿기지 않는 퀄리티
- 실제 코딩 테스트에 필요한 알짜배기 알고리즘만 추려서 공부할 수 있음
- 서적과 함께 병행하며 공부
- 이후, 문제풀이를 하며 알고리즘 이론이 기억나지 않을 때 서적을 활용
- [인프런 - 김태원] Python 알고리즘 문제풀이
- 난이도가 있는 문제를 스스로 풀어보고 강사님의 상세한 설명을 들을 수 있는 강의
- DFS, BFS, 재귀 함수 등 어려운 내용들이 많으나 차근차근 끈기 있게 풀어보기
- 그 이후는?
- 프로그래머스 레벨 2까지 모든 문제 풀기
- 프로그래머스 레벨 3까지 모든 문제 풀기
- 종종 손댈 수 없는 문제가 있는데 적절히(?) 거르기...
- 백준 문제 풀기
- 알고리즘 문제 풀이는 한, 두 문제라도 꾸준히 하는 것이 포인트
Git, GitHub
- [생활코딩] Git & GItHub
- Git & Github가 무엇인지 감을 잡기 좋은 강의
- [인프런 - 진유림] 팀 개발을 위한 Git, GitHub 입문
- 서적을 아주 유용하게 읽고 있는데, 초보자 시점에서도 유용할 것
CS 공부 & 면접 대비
- 비전공자이므로 CS 관련 지식을 틈틈이 쌓아두기
- 유튜브의 우아한 테크 코스 테코 톡이 10분 정도 분량에 매우 유용한 것들이 많음
- 기술 면접 대비 Repo와 같이 GitHub에 Repo들을 활용해서 공부하면 좋음
1.4 총평
꾸준히 공부하는 내 모습이 정말 놀라웠다. 코딩이라는 분야에 진심이고 열정이 있어 가능했던 것 같다. 이때의 마음가짐과 꾸준함이 개발자 취업에도 큰 긍정적인 영향을 끼쳤다고 생각한다.
잘한 것
- 하루도 빠지지 않고 꾸준히 공부한 것
- 주말 알바를 하면서도 틈틈이 공부한 것
- 배운 것을 TIL로 정리해서 올린 것
아쉬운 것
- 로드맵을 온전히 따라가지 않은 것
2. 항해 99
3월 1일 ~ 6월 7일
2.1 항해 99를 하게 된 이유
2.1.1 독학을 마무리하다.
1월 즈음에 덜컥 아래 같은 생각이 들었다.
내가 계속 이런 식으로 공부해서 개발자가 될 수 있을까?
개발자라 함은, 코드를 활용해서 무언가를 생산하는 사람인데 내가 공부하는 것은 단순 문법 공부 아닌가?
때문에, 나는 독학을 마무리하고 팀 프로젝트를 진행하며 개발자로서의 생산 능력을 키우면서도 나만의 포트폴리오를 만들어내기로 결심하였다.
하지만 아쉽게도, 당시의 내 수준(JS 토이 프로젝트를 강의 보며 따라 만드는)에서 팀에 들어가서 프로젝트를 진행하는 것은 너무나도 어려운 일이었고 그러한 환경을 찾는 것도 쉽지 않았다. 그래서 나와 비슷한 상황의 사람들이 모일만한 IT 교육 과정들을 알아보게 되었고 그중에서 프로젝트 위주의 커리큘럼인 부트캠프라는 과정을 하기로 하였다.
2.1.2 부트캠프 선택하기
부트캠프를 하기로 했으니 그중에서 하나를 선택해야 했었다. 나의 여러 상황을 고려해서 항해 99를 선택했었다. 항해 99는 당시에 1기를 모집 중으로, 1기라는 리스크가 있음(전 기수의 후기를 볼 수 없고 성과도 알 수 없으므로)에도 항해 99를 선택한 이유는 아래와 같았다.
- 저렴함
- 당장 오는 3월에 시작할 수 있음
- 짧은 과정
- 타이트한 일정
- 취업에 필요한 커리큘럼이 압축되어 있음(React.js 공부, 프로젝트, 알고리즘 문제 풀이 등)
- 프로젝트 비중이 많은 편이었음
- 전적으로 온라인 과정이라서 왔다 갔다 하는 시간을 절약
2.2 항해에서의 프로젝트
2.2.1 주먹밥
https://github.com/greedysiru/hanghae99-jumeokbap
항해 99 첫 프로젝트. 팀장으로서 진행했는데, 의욕이 앞서서 우여곡절이 많았고 결과물은 만족스럽지 않았다. 하지만 이 실패를 통해서 많은 것을 배울 수 있었고 이후의 프로젝트들에서 같은 실수를 반복하지 않을 수 있어서 의미가 있었다고 생각한다.
2.2.2 My Kind Calendar
https://github.com/greedysiru/my_kind_calendar
주특기 기본 주차에서 진행했던 프로젝트. React.js를 처음 공부하고 바로 프로젝트를 만들어내야 했기 때문에 매우 타이트했다. 그럼에도 불구하고 매우 몰입하여 프로젝트를 진행하였고 만족스러운 결과물을 만들 수 있었다.
2.2.3 My Pet Is The Best
https://github.com/greedysiru/my_pet_is_the_best
주특기 심화 주차에서 진행했던 프로젝트. 함수형 컴포넌트와 리덕스를 배우고 적용했는데 리덕스가 정말 어려웠다. 그래도 성공적으로 프로젝트를 마무리할 수 있어서 뿌듯했다. 이때 이후로, 무엇인가 만드는 것에 자신감이 붙었던 것 같다.
다만, 지금 시점에서 평하자면 반응형 디자인을 어설프게 적용하려 했다 보니 UI가 살짝 조잡해 보인다...^^;
2.2.4 항해 99 북스
https://github.com/greedysiru/hanghae99_books/blob/master/README.md
클론 코딩 주차에서 진행한 프로젝트. 팀장으로서 리디 셀렉트의 서비스를 클론 코딩하였다. 처음으로 백엔드와 협업하여 API를 정의하고 호출하여 UI를 구성해보는 경험을 하였는데, 개발 협업을 좀 더 와닿게 이해할 수 있어서 좋았던 것 같다.
2.2.5 개망톡
https://github.com/greedysiru/gaemangtalk_frontend
개발자 지망생을 위한 톡, 일명 개망톡 프로젝트! 팀원 한 분의 빛나는 네이밍 센스로 만들어진 이름이다. 매우 좋은 분들과 즐겁게 프로젝트를 할 수 있었다. 웹소켓을 도입하여 채팅 기능을 메인으로 한 프로젝트인데, 이 웹소켓이 정말로 너무 어려웠고 이슈도 굉장히 많았었다. 하지만 많은 것을 배우고 느낄 수 있었고 큰 성취감을 느꼈던 뜻깊은 프로젝트였다.
2.2.6 외출난이도(실전 프로젝트)
https://github.com/greedysiru/weather_level
항해에서 진행했던 실전 프로젝트.
6주간 프론트엔드 2명, 백엔드 3명, 디자이너 1명, 총 6명이서 협업을 하였다. 팀장님 주도 하에 팀원들끼리 기획, 디자인 콘셉트 정하기, 팀 규칙 정하기, 태스크 분배 등을 하였고 나는 프론트엔드 파트 팀장으로서 필요한 기술 스택을 알아보고 프로젝트 환경 세팅을 하였다. 마지막 프로젝트인만큼 정말 좋은 서비스를 만들고 싶었기 때문에 시도하지 않은 것 중 유용할만한 기술들을 도입하였었다.(TypeScript, PWA 등)
프론트엔드 개발자 지망생으로서, 가장 기대되는 것은 디자이너와의 협업 경험을 가질 수 있다는 것이었다. 실제로 굉장히 의미 있는 경험이었다. 피그마를 적극 활용하여 디자이너님과 소통을 하였는데, 피그마라는 툴이 너무 편리하였다. 디자이너님이 만드신 UI에 대한 CSS를 바로 볼 수 있어서 컴포넌트들을 스타일링하는 데에 큰 도움이 되었다. 또, 디자이너님께서 현재 웹 디자인 트렌드를 매우 잘 알고 계신 능력자 셔서 디자인에 대한 흥미로운 것들도 알 수 있었다. 이때의 디자이너와의 협업 경험은 지금 회사에 적응하는 데에 큰 기여를 하였다고 본다.
MVP를 만들고 난 뒤, 이를 실 사용자들에게 배포하여야 했다. 팀장님께서 홍보와 마케팅에 일가견이 있으셔서 그분이 가지신 지식과 경험을 토대로 홍보 전략을 세웠다. 또, 홍보를 통해 유입된 사용자 피드백을 수용하여 서비스를 적극 개선하기 위해서 소통 창구를 만들었었다. (앱 내 불편/개선사항 페이지 및 카카오 플러스 친구)
각 팀원들이 홍보 전략에 맞추어 서비스를 알리던 중, 한 채널에서 말 그대로 뜨거운 반응을 일으켰었다. 당시에, 구글 애널리틱스 기준으로 4000명 이상의 사용자를 확보했었다. 그만큼 많은 소중한 사용자 피드백들을 받을 수 있었는데, 개발 단계에서 나름 세심하게 만들었다고 생각했건만 개선할 점들이 많았다. 그만큼 할 일이 쏟아졌지만, 우리가 만든 서비스가 호응이 좋았기 때문에 더 탄력적으로 즐겁게 개발에 임할 수 있었다. 이렇게 사용자들과 지속적으로 소통하고 서비스를 개선해나갔던 이 소중한 경험은 개발자가 되기 위한 큰 밑거름이 되어주었다고 생각한다.
2.3 총평
소기의 목적인 개발자로서의 생산능력 함양과 포트폴리오 만들기는 훌륭하게 이루어냈다고 생각한다. 독학할 때 느꼈던 내 한계를 돌파하고 큰 도약을 해낼 수 있었다.
항해 99는 굉장히 타이트한 과정이라서 종종 지칠 법도 했지만, 나와 같은 상황의 동료분들과 함께 힘내니 즐겁게 진행할 수 있었다. 프로젝트를 하고 간밤에 동료분들과 게더에서 담소를 나누는 게 그렇게 재밌었다. 온라인 과정이라 단절되는 느낌이 있을 거라고 예상했지만 게더라는 공간이 함께 협업한다는 느낌을 강하게 줘서 큰 위로가 되었었던 것 같다.
개발 협업 경험뿐만 아니라, 열정적이고 좋은 동료분들을 알게 되었기 때문에 항해 99는 나에게 정말 많은 의미를 가지는 시간이었다.
https://greedysiru.tistory.com/509
잘한 것
- 항해 99를 수료한 것
- 최선을 다한 것
- 의미 있는 프로젝트들을 많이 만들어낸 것
- 꾸준히 TIL을 작성한 것
- 새로운 기술에 도전한 것
아쉬운 것
- 아쉬운 것 없이 잘했다고 자부한다!
3. 취업 활동
6월 8일 ~ 7월 25일
3.1 모의 면접
항해 99의 마지막 과정 때 협력사들과의 모의 면접을 볼 수 있었다. 추가적인 채용 프로세스를 참여하는 기회도 있었지만, 아쉽게도 내 부족함 때문에 좋은 결과는 내지 못하였다. 이 모의 면접 경험을 통해서 내 부족한 점을 알 수 있었고 이것을 토대로 항해 수료 이후 취업활동을 시작하였다.
3.2 취업 준비
사실 취업 활동하던 시기가 가장 힘들었던 것 같다. 주변의 취업 소식을 들을 때마다 왜 나는 아직 못 했는지에 대해 조바심이 났고 예전 전공 취업 준비했을 때가 떠올라 불안했기 때문이다. 하지만, 그때와는 다르게 나에게는 내세울만한 포트폴리오가 있다는 것을 떠올리고 마음을 다잡으며 취업 활동을 해나갔다.
3.2.1 공부한 것
항해 99 협력사 면접을 통해서 알게 된 부족했던 점은 CS 지식이었다. 무엇인가를 어떻게든 만드는 수준은 되었지만, 그것을 설명해내는 것은 많이 부족했다 이를 극복하기 위해 아래의 것들을 꾸준히 공부했다.
- [드림코딩 by 엘리] JavaScript ES5+, ES6, ES11
- 프로그래머스 레벨 2 이하 알고리즘 문제 풀이
- 10분 테코톡
- WareSoft/tech-interview
3.2.2 회사 지원 전략
공부를 하면서도 지속적으로 회사에 지원하였었다. 항해 99 과정에 준할 정도로 타이트하게 일정을 소화하였던 것 같다. 이유는 면접 실력을 늘리기에 가장 효율적인 방법은 면접을 많이 해보는 것이라고 생각했기 때문이다. 하지만, 내가 아무 회사나 지원했던 것은 아니고 아래의 내가 세운 기준에 2개 이상을 충족하는 회사들만 지원하였었다.
- 크레딧잡, 잡플래닛 평가가 좋은 회사
- 잡플래닛 평점 3.0 이상
- 노션 또는 블로그를 잘 관리하는 회사
- 문서화도 잘할 것으로 기대되었다.
- 사원수가 50명 이상인 회사
- 일정 규모 회사에서 타 부서와 협업을 하는 경험을 쌓고 싶었다.
- 규모가 있는 경우, 업무 프로세스가 있을 것이라고 생각했다.
- 개발 문화가 있는 회사
- 가장 중요하게 생각하던 기준
- 개발 문화가 있어야 성장하기 좋은 환경이라고 생각했다.
- 서비스가 매력적인 회사
- 핀테크
- 가장 가고 싶었던 도메인이었다...
3.2.3 코딩 테스트
지원한 회사들 중 코딩 테스트를 진행하는 곳은 꽤 되었다. 내 수준은 프로그래머스 기준 레벨 2였고 몇몇 곳 제외하고는 그렇게 큰 문제는 없었다. 몇몇 곳이란 프로그래머스가 아닌 leet code에서 시험을 보는 곳들이었는데 손도 못 댔던 것으로 기억한다...
3.2.4 과제 전형
놀랍게도 과제 전형은 합격률이 100퍼센트이다! 항해 99에서의 프로젝트 경험들이 과제 전형에 큰 도움이 되었던 것 같다. 또 프로젝트를 진행하며 노션 또는 블로그에 프로젝트 일지와 트러블 슈팅을 정리하는 습관, README.md를 최대한 꼼꼼히 쓰는 습관이 있었는데 이것들이 큰 가산점이 되어서 대면 면접에서도 면접관님들께 큰 어필이 되었었다.
3.2.5 대면 면접
면접은 처음엔 굉장히 부담스럽고 어렵기만 하였다. 면접관님들에 질문에 대답하지 못하고 진땀 빼기 일수였다. 하지만, 면접을 한 두 차례 경험하면 할수록 그 분위기에 익숙해졌고 질문 또한 패턴화 된 것들이 있어서 대답해낼 수 있었다. 유용한 기술 면접 정리 깃 레포지토리(상기)를 참고하면 좋다.
회사에 지원할 때 포트폴리오를 제출하며 특히 실전 프로젝트를 강조하였는데, 이에 대한 질문을 대단히 많이 받았다.
- 왜 이런 기술 스택들을 사용했는지
- 나 같은 경우는 PWA와 TypeScript를 왜 사용했는지 물어보셨다.
- PWA는 웹 애플리케이션을 네이티브 앱과 유사한 느낌으로 제공하여 사용자 경험을 증대시키고 싶었기 때문에 도입하였다고 대답하였다.
- TypeScript는 이전의 프로젝트들에서 API를 호출하며 겪은 수많은 타입 에러들을 극복하기 위해 도입했다고 대답했다. 처음에는 타입과 인터페이스 정의에 시간이 꽤나 소요되어 생산성에 의문을 가졌지만, 유지 보수 측면에서 오히려 오류를 방지할 수 있어 왜 사용하는 것인지 와닿게 느낄 수 있었다고 하였다.
- 겪은 오류들은 어떻게 대처했는지
- 다행히도 겪었던 숱한 문제들은 노션 또는 README에 정리해 놓았기 때문에 잘 설명드렸다.
- 성과에 대해서
- 구글 애널리틱스 그래프를 첨부하였는데, 면접관님들이 관심을 많이 보이셨다.
- 피드백은 어떻게 수용했는지
- 협업을 통해서 무엇을 배웠는지
더해서, 대면 면접을 하면서 느낀 몇 가지 팁이 있는데 아래와 같다.
- 모르는 것은 모른다고 인정하기
- 솔직해져라. 괜히 모르는 것을 대답하려다가 되려 크게 감점이 된다.
- 몇 번 했던 실수로, 면접장을 싸해지게 만들 수 있다...
- '그것은 잘 몰랐습니다. 공부하겠습니다.' 식의 대답이 나을 것 같다.
- 스토리텔링 만들기
- 개발에 대한 나의 일대기를 정해 보는 것이 좋다.
- 나는 비전공자이지만 왜 개발자가 되기로 결심했는지, 프로젝트들을 하면서 경험했던 것들을 풀어서 이야기할 수 있도록 정리했었다.
- 특히, 프로젝트 스토리텔링은 기술을 도입한 이유, 트러블 슈팅, 객관적인 지표로 나타낼 수 있는 성과 위주로 하면 좋다!
- 자신이 어떤 사람인지 정리하기
- 면접에서 자신 있게 자신에 대해서 소개하거나 질문에 답하기 위해서는 우선 자신을 돌이켜 봐야 한다.
- 자신의 성격, 업무 스타일, 소통 방식 등을 장 정리해보자.
3.2.6 질문으로 회사 파악하기
반대로, 면접자에게 회사에 대해서 질문을 할 기회를 주는 곳들이 있다. 적절한 질문을 하면 회사에 대한 정보를 알 수 있고 이를 토대로 좋은 회사인지 아닌지를 판단할 수 있다. 소중한 기회이니 잘 질문하도록 하자. 나는 아래와 같은 질문들을 주로 하였다.
- 업무 프로세스
- 디자이너와 협업은 어떻게 하는지
- Jira를 사용하는지
- 애자일 소프트웨어 개발을 추구하는지
- Git 브랜치 전략
- 사원 수와 부서가 얼마나 있는지
- 개발팀은 몇 명이고 구성이 어떻게 되는지
- 복지
- 교육 관련 지원이 있는지
- 식대, 연차 등
- 개발 문화는 어떤 것이 있는지
- 코드 리뷰를 하는지
- 사내 개발 스터디가 있는지
3.3 취업!
열심히 취업 활동을 하던 중이었던 어느 무더운 7월 여름날에, 드디어 최종 합격을 하게 되었었다! 면접 경험이 대단히 좋았었고 갈 수 있는 곳 중 가장 규모가 크며 자체적인 서비스를 운영 중인 회사였기에 입사하기로 결정했었다.
실제로 규모가 있는 서비스를 운영 중인 회사라, 여러 가지 기술을 사용해볼 수 있어 좋은 것 같다. 개인적으로 Vue.js도 공부해서 가지고 있는 프론트엔드 기술 스택을 늘리고 싶었는데 마침 Vue.js를 배울 수 있는 기회를 제공해주셔서 재밌게 임하고 있다. 워라밸도 보장해주는 회사라서 퇴근 이후에 스터디를 하거나 개발 공부를 할 수 있게 시간을 활용할 수 있어서 삶의 질도 만족도 높다!
다만, 요즘따라 아쉬운 점은 회사의 개발 인력이 부족한 편이라 서로 간의 코드 리뷰를 하거나 코드의 질을 높일 수 있는 리팩터링, 새로운 기술 스택 도입을 하기가 어렵다. 하지만 이것은 우리 회사만이 아닌 다른 회사에서도 겪는 상황인지라... 그저... 빨리 개발자분들이 뽑혔으면 하는 마음이다.
3.4 총평
잘한 것
- 꾸준히 공부한 것
- 타이트한 일정을 소화한 것
- 취업에 성공한 것!
아쉬운 것
- 몇몇 면접에서의 치명적인 실수...
4. 앞으로의 계획
앞으로도 물론 개발 공부를 멈추지 않고 꾸준히 할 것이다. 지금은 실무에서 자주 다루는 Vue.js를 공부하고 있는데, 빨리 남은 강의들을 수강하고 Nuxt.js를 공부하고 싶다.
또, 실무를 진행하면서 CS 기반 지식이 부족하다는 것을 계속 느끼고 있다. 어느 플랫폼에서 컴퓨터 공학과에서 배우는 강의들을 제공하는데 조만간에 공부할 계획이다. 그리고 더 나아가서 정보처리기사도 시간이 된다며 취득하고 싶다. 정보처리기사가 커리어에 도움이 되는 것은 아니지만 배우고 싶은 내용들이 있어서 그렇다. 또 몇몇 부분들이 실무와 연관이 있긴 하다.
유지 보수만 하고 있는 외출 난이도 프로젝트는 조만간 팀원 들과 소통하고 가능하다면 리팩터링을 진행해보고 싶다. 요즘 리팩터링이라는 책을 읽고 있는데 유닛 테스트를 적극적으로 도입해서 리팩터링을 할 수 있는 기반을 갖추고 TDD의 매력을 느껴보고 싶다.
5. 마치며...
회고를 작성하며 2021년을 쭉 돌이켜 보았다. 목표를 이루어, 프론트엔드 개발자로서 일을 하고 있는 나를 보니 굉장히 의미가 있던 한 해를 보낸 것 같아 흐뭇하고 기분이 좋다.
회고 글이지만, 비전공자에서 개발자로의 커리어 전환을 꿈꾸는 사람들에게 조금이나마 도움이 되었으면 한다. 다만, 주의할 점이 있다. 내가 개발자가 되기 위해서 한 것들이 가장 좋은 방법이라고 할 수는 없다. 더 효율적인 방법들은 얼마든지 있을 수도 있다. 참고는 하시되, 너무 맹신하지는 말라는 말씀을 드리고 싶다.
내가 이글에서 말하고 싶었던 것은 '비전공자라도 명확한 목표와 현실적인 계획 그리고 끈기가 있으면 개발자로의 취업이 가능하다.'이다. 그러니 부디, 이글로부터 용기를 얻었으면 하는 마음이다.
혹여나, 잘못된 정보 또는 질문을 하시고 싶다면 자유롭게 이 글의 댓글을 남겨주셔라! 아니라면, greedysiru@gmail.com로 메일을 보내주셔도 좋다.
그럼 이제 2021년의 회고를 마무리하겠다!
'이모저모 > 회고' 카테고리의 다른 글
항해 99 일지 (99) - 회고 (17) | 2021.06.07 |
---|---|
85일간의 독학 회고 (0) | 2021.02.28 |
2020년 회고 (0) | 2020.12.31 |