목차
지금까지 개발을 공부해오면서 들었던 생각을 간단하게 정리해봤습니다.
공부에는 왕도가 있을까?
- 일반적으로 사람들은 효율적인 길을 좋아하고 찾으려고 한다. 예를 들어서 게임을 할 때도 어떤 직업을 키우는게 좋은지, 레벨에 따라서 어떤 사냥터가 좋은지, 스킬 트리는 어떻게 찍는게 좋은지와 같이 최적화를 하고 싶어 하는데 공부에 있어서도 이런 길을 찾으려고 한다. 공부도 당연히 그런 길이 있을 것이라고 생각하기 때문이다.
- 이에 대한 내 생각은 공부에도 그런 길은 있다고 생각한다. 다만 효율적인 길을 선택하지 않더라도 그 속에서 배움이 분명히 있다고도 생각한다.
- 효율적인 길을 선택하는 경우
- 1~2년차에 좋은 회사로 점프
- 그리고 이후의 커리어
- 비효율적인 길을 선택하는 경우
- 3~4년차에 좋은 회사로 점프
- 그리고 이후의 커리어
- 비효율적인 길을 걸어가는 동안에 시행착오를 겪으면서 정말로 나에게 최적화된 길을 찾는다면, 그 이후의 성장 속도는 효율적인 길을 선택한 것보다 더 앞설 수 있다고 생각한다.
- 그래서 결론은 둘 다 무엇을 선택해도 괜찮다고 생각이 든다. 가장 주의해야 할 점은 완벽한 길을 찾는 데 너무 많은 시간을 쓰는 것이다. 그냥 하는 것. 이게 제일 중요하다고 생각한다.
- 효율적인 길을 선택하는 경우
개발 공부는 무엇을 위함인가?
- 현실적으로는 개발 공부가 취업 또는 이직을 위한 행동임에 동의하지만 마인드는 달라야 한다고 생각한다. 그리고 사람은 정말 신기하게도 같은 행동을 하더라도 어떻게 생각하고 하냐에 따라서 분명히 다른 결과가 나오곤 한다. 그러면 어떤 마인드를 가져야 하는 것일까?
- 근본적으로 생각했을 때 개발 공부는 왜 하는 것일까?
- 개발을 하기 위함이다.
- 그러면 개발을 왜 하는 것인가?
- 돈을 벌기 위함
- 제품, 서비스를 만들기 위함이다.
- 즉, 개발 공부는 제품, 서비스를 만들기 위함이다.
- 그런데 제품이나 서비스를 만드는 것이 꼭 회사를 다녀야만 할 수 있는 행위인가? 라고 생각했을 때 그렇지 않다고 생각한다. 개발은 혼자서도 할 수 있다. 그리고 코드 퀄리티와 제품의 성공은 관련이 없진 않지만 다른 결의 이야기다.
- 그래서 개발자로 취업 준비를 하는 것이 오로지 회사 면접을 위한 공부가 되는 방향은 아니어야 한다고 생각하는데 여기서 개발자라는 직업을 왜 선택했는지에 따라 사람들의 행동이 갈린다고 생각한다.
- 단순히 직업으로 선택한 경우
- 돈을 많이 주니까
- 앞으로 미래에 괜찮아 보이니까
- 몸은 편할 것 같으니까
- 정말 개발 자체가 재밌는 경우
- 제품을 만들어 내는 게 재밌어서
- 내가 만든 서비스를 사용자들이 쓰는 게 좋아서
- 단순히 직업으로 선택한 경우
- 단순히 직업으로 선택을 한 사람의 경우 가장 큰 목표가 취업
- 취업을 위해서 코테를 공부하고, 기술 면접 질문을 달달 외우고 할 것이다.
- 그러나 개발 자체가 재밌는 사람들은 다양한 제품들을 만든다.
- 블로그 자동화
- 나만의 오픈 소스
- 다양한 사이드 프로젝트
- 개발자라는 직업을 선택한 것이 개발 자체가 재밌고 제품을 만드는 게 재밌어서 선택했다고 하면 취업이 당장 되지 않더라도 큰 부담이 있지는 않는 것 같으나 우선 직업으로서 선택한 경우에는 지치기 쉽다고 생각한다.
- 개발자는 후자와 같은 사람이 되어야 한다고 생각한다.
지금의 내가 어떻든 상관 없다
- 앞에서 얘기한 뉘앙스로 보면 개발자를 단순히 직업으로만 생각한 경우에 대해 부정적으로 표현하기는 했지만 사실 전혀 문제가 없다고 생각한다. 적어도 지금의 상태로만 봤을 때는 그렇다.
- 가장 중요한 것은 앞으로 어떤 관점으로 개발을 바라보고 공부할 것인지에 달려있다고 생각한다.
- 저 같은 경우에는…
- 고3때 대학은 가야겠는데 하고 싶은 일은 없었다. 게임은 좋아해서 그러면 컴퓨터? 관련된 걸로 갈까? → 컴퓨터공학과
- 대학생 1학년 ~ 4학년까지 학점은 땄지만 웹, 앱 이런 기술을 공부하지는 않았다.
- 졸업하고 나서 큰일 났다고 생각하고 부트 캠프에서 개발 공부해서 취업 했다.
- 취업하고 1년 정도는 제품에 관심은 없었다. 관심 있던 건 개발을 잘하고 싶다.
- 개발을 잘하면 연봉, 근무 환경등으로 인한 내가 얻을 수 있는 것들이 많다.
- 일을 하다보니까, 여러 회사를 다니다 보니까 제품에 관심이 생겼다.
- 지금은 제품 만드는 게 재밌는 것 같고 어떤 사업을 해야 돈을 벌 수 있을까? 자면서도 어떻게 해야 돈 벌 수 있을 까? → 일을 시작하고 1년 반은 지나서
프론트엔드 개발자로서 역량 쌓기
내가 통제할 수 없는 영역
- 역량을 쌓는 것이 취업이나 이직과 연관된다면 사실 굉장히 어려운 이야기라고 생각한다. 사람(회사의 인사팀, 면접관)이 사람(지원자)를 평가하는 방식이기 때문에 사람마다 너무나도 취향이 다르다. 그러나 어느 정도 일관된 취향은 존재한다. 사람을 예로 들면 나이, 외모, 학벌, 직업, 집안, 성격등이 될 수 있듯이 개발자에게도 이런 요소들이 있다고 생각한다. FE에게 이런 요소들은 어떤 것들이 있을까?
- 사실 JD(Job Description)를 보면 된다.
- https://toss.im/career/job-detail?job_id=4071101003&company=토스&detailedPosition=Mobile
- https://www.wanted.co.kr/wd/251582
- React
- TypeScript
- Browser, Network
- 사실 JD(Job Description)를 보면 된다.
내가 통제할 수 있는 영역
- 무엇을 공부할 지 결정할 수 있다.
- 특정 회사에 100% 합격할 수 있는 공부 방법은 없다.
- 다만 우리는 최대한 확률을 높이는 것에 집중해야 한다.
공부를 어떤식으로 할까
이론
- 이론적인 지식은 매일 꾸준히 채워 넣어야 하는 지식이라고 생각한다. 이론 공부가 어렵게 느껴지거나 재미없게 느껴지는 점중에 하나는 공부를 한 것을 바로 코드에 적용하는 것이 쉽지 않기 때문이다. 결과적으로 이론 공부가 코드에 녹아들고 제품에 녹아드는 방향으로 가야하지만 이 지점에 도달하기 까지는 수련이 필요하다고 생각한다. 그리고 이 수련의 시간을 견디냐 못견디냐 싸움이라고 생각한다.
- 개인적으로 생각하는 이론 공부 할 것들
- JavaScript
- 자바스크립트 딥다이브
- 코어 자바스크립트
- 자바스크립트 완벽가이드
- https://ko.javascript.info/
- 자바스크립트 딥다이브
- TypeScript
- 타입으로 견고하게 다형성으로 유연하게
- 러닝 타입스크립트
- 이펙티브 타입스크립트
- https://www.typescriptlang.org/docs/handbook/intro.html
- 타입으로 견고하게 다형성으로 유연하게
- React
- react.dev
- 모던 리액트 Deep Dive
- Browser
- 브라우저 렌더링
- https://d2.naver.com/helloworld/59361
- 크롬 개발자 도구 활용하기
- element, console, network, performance, react devtools등등
- 브라우저 렌더링
- Network
- 그림으로 배우는 HTTP & Network
- http 완벽 가이드
- 코드, 설계에 관련된 책
- 좋은 코드, 나쁜 코드
- 리팩토링, 클린코드, 클린 아키텍처와 같은 책
- 기타
- 함께 자라기
- 프로그래머의 길, 멘토에게 묻다
- 실용주의 프로그래머
- 프로그래머의 뇌
- JavaScript
실습
- 코드를 작성한다 → 제품을 만든다 → 출시하고 운영한다
- 위 싸이클은 실제로 회사에서 일을 하는 방식과 다를 게 없다.
- 이 방식대로 개발을 하면 사실 혼자 공부를 하면서도 회사에서 일을 하는 것과 비슷한 경험을 할 수 있다고 생각한다.
기존 코드 이해하기
무언가를 할 때 그게 진짜로 어려운 게 맞나?
- 진짜로 어려운 게 맞다, 착각이다.
어떻게 잘 이해할 수 있을까?
- 큰 그림 그려보기(아키텍처)
- 동료를 괴롭혀서 질문 많이 하기
- 신입 입장에서는 눈치 보인다고 생각한다.
- (결론) 질문 무조건 하는 게 좋다.
- PR을 통해서 피드백 받기
- 코드 많이 읽기
지금까지 개발을 공부해오면서 들었던 생각을 간단하게 정리해봤습니다.
공부에는 왕도가 있을까?
- 일반적으로 사람들은 효율적인 길을 좋아하고 찾으려고 한다. 예를 들어서 게임을 할 때도 어떤 직업을 키우는게 좋은지, 레벨에 따라서 어떤 사냥터가 좋은지, 스킬 트리는 어떻게 찍는게 좋은지와 같이 최적화를 하고 싶어 하는데 공부에 있어서도 이런 길을 찾으려고 한다. 공부도 당연히 그런 길이 있을 것이라고 생각하기 때문이다.
- 이에 대한 내 생각은 공부에도 그런 길은 있다고 생각한다. 다만 효율적인 길을 선택하지 않더라도 그 속에서 배움이 분명히 있다고도 생각한다.
- 효율적인 길을 선택하는 경우
- 1~2년차에 좋은 회사로 점프
- 그리고 이후의 커리어
- 비효율적인 길을 선택하는 경우
- 3~4년차에 좋은 회사로 점프
- 그리고 이후의 커리어
- 비효율적인 길을 걸어가는 동안에 시행착오를 겪으면서 정말로 나에게 최적화된 길을 찾는다면, 그 이후의 성장 속도는 효율적인 길을 선택한 것보다 더 앞설 수 있다고 생각한다.
- 그래서 결론은 둘 다 무엇을 선택해도 괜찮다고 생각이 든다. 가장 주의해야 할 점은 완벽한 길을 찾는 데 너무 많은 시간을 쓰는 것이다. 그냥 하는 것. 이게 제일 중요하다고 생각한다.
- 효율적인 길을 선택하는 경우
개발 공부는 무엇을 위함인가?
- 현실적으로는 개발 공부가 취업 또는 이직을 위한 행동임에 동의하지만 마인드는 달라야 한다고 생각한다. 그리고 사람은 정말 신기하게도 같은 행동을 하더라도 어떻게 생각하고 하냐에 따라서 분명히 다른 결과가 나오곤 한다. 그러면 어떤 마인드를 가져야 하는 것일까?
- 근본적으로 생각했을 때 개발 공부는 왜 하는 것일까?
- 개발을 하기 위함이다.
- 그러면 개발을 왜 하는 것인가?
- 돈을 벌기 위함
- 제품, 서비스를 만들기 위함이다.
- 즉, 개발 공부는 제품, 서비스를 만들기 위함이다.
- 그런데 제품이나 서비스를 만드는 것이 꼭 회사를 다녀야만 할 수 있는 행위인가? 라고 생각했을 때 그렇지 않다고 생각한다. 개발은 혼자서도 할 수 있다. 그리고 코드 퀄리티와 제품의 성공은 관련이 없진 않지만 다른 결의 이야기다.
- 그래서 개발자로 취업 준비를 하는 것이 오로지 회사 면접을 위한 공부가 되는 방향은 아니어야 한다고 생각하는데 여기서 개발자라는 직업을 왜 선택했는지에 따라 사람들의 행동이 갈린다고 생각한다.
- 단순히 직업으로 선택한 경우
- 돈을 많이 주니까
- 앞으로 미래에 괜찮아 보이니까
- 몸은 편할 것 같으니까
- 정말 개발 자체가 재밌는 경우
- 제품을 만들어 내는 게 재밌어서
- 내가 만든 서비스를 사용자들이 쓰는 게 좋아서
- 단순히 직업으로 선택한 경우
- 단순히 직업으로 선택을 한 사람의 경우 가장 큰 목표가 취업
- 취업을 위해서 코테를 공부하고, 기술 면접 질문을 달달 외우고 할 것이다.
- 그러나 개발 자체가 재밌는 사람들은 다양한 제품들을 만든다.
- 블로그 자동화
- 나만의 오픈 소스
- 다양한 사이드 프로젝트
- 개발자라는 직업을 선택한 것이 개발 자체가 재밌고 제품을 만드는 게 재밌어서 선택했다고 하면 취업이 당장 되지 않더라도 큰 부담이 있지는 않는 것 같으나 우선 직업으로서 선택한 경우에는 지치기 쉽다고 생각한다.
- 개발자는 후자와 같은 사람이 되어야 한다고 생각한다.
지금의 내가 어떻든 상관 없다
- 앞에서 얘기한 뉘앙스로 보면 개발자를 단순히 직업으로만 생각한 경우에 대해 부정적으로 표현하기는 했지만 사실 전혀 문제가 없다고 생각한다. 적어도 지금의 상태로만 봤을 때는 그렇다.
- 가장 중요한 것은 앞으로 어떤 관점으로 개발을 바라보고 공부할 것인지에 달려있다고 생각한다.
- 저 같은 경우에는…
- 고3때 대학은 가야겠는데 하고 싶은 일은 없었다. 게임은 좋아해서 그러면 컴퓨터? 관련된 걸로 갈까? → 컴퓨터공학과
- 대학생 1학년 ~ 4학년까지 학점은 땄지만 웹, 앱 이런 기술을 공부하지는 않았다.
- 졸업하고 나서 큰일 났다고 생각하고 부트 캠프에서 개발 공부해서 취업 했다.
- 취업하고 1년 정도는 제품에 관심은 없었다. 관심 있던 건 개발을 잘하고 싶다.
- 개발을 잘하면 연봉, 근무 환경등으로 인한 내가 얻을 수 있는 것들이 많다.
- 일을 하다보니까, 여러 회사를 다니다 보니까 제품에 관심이 생겼다.
- 지금은 제품 만드는 게 재밌는 것 같고 어떤 사업을 해야 돈을 벌 수 있을까? 자면서도 어떻게 해야 돈 벌 수 있을 까? → 일을 시작하고 1년 반은 지나서
프론트엔드 개발자로서 역량 쌓기
내가 통제할 수 없는 영역
- 역량을 쌓는 것이 취업이나 이직과 연관된다면 사실 굉장히 어려운 이야기라고 생각한다. 사람(회사의 인사팀, 면접관)이 사람(지원자)를 평가하는 방식이기 때문에 사람마다 너무나도 취향이 다르다. 그러나 어느 정도 일관된 취향은 존재한다. 사람을 예로 들면 나이, 외모, 학벌, 직업, 집안, 성격등이 될 수 있듯이 개발자에게도 이런 요소들이 있다고 생각한다. FE에게 이런 요소들은 어떤 것들이 있을까?
- 사실 JD(Job Description)를 보면 된다.
- https://toss.im/career/job-detail?job_id=4071101003&company=토스&detailedPosition=Mobile
- https://www.wanted.co.kr/wd/251582
- React
- TypeScript
- Browser, Network
- 사실 JD(Job Description)를 보면 된다.
내가 통제할 수 있는 영역
- 무엇을 공부할 지 결정할 수 있다.
- 특정 회사에 100% 합격할 수 있는 공부 방법은 없다.
- 다만 우리는 최대한 확률을 높이는 것에 집중해야 한다.
공부를 어떤식으로 할까
이론
- 이론적인 지식은 매일 꾸준히 채워 넣어야 하는 지식이라고 생각한다. 이론 공부가 어렵게 느껴지거나 재미없게 느껴지는 점중에 하나는 공부를 한 것을 바로 코드에 적용하는 것이 쉽지 않기 때문이다. 결과적으로 이론 공부가 코드에 녹아들고 제품에 녹아드는 방향으로 가야하지만 이 지점에 도달하기 까지는 수련이 필요하다고 생각한다. 그리고 이 수련의 시간을 견디냐 못견디냐 싸움이라고 생각한다.
- 개인적으로 생각하는 이론 공부 할 것들
- JavaScript
- 자바스크립트 딥다이브
- 코어 자바스크립트
- 자바스크립트 완벽가이드
- https://ko.javascript.info/
- 자바스크립트 딥다이브
- TypeScript
- 타입으로 견고하게 다형성으로 유연하게
- 러닝 타입스크립트
- 이펙티브 타입스크립트
- https://www.typescriptlang.org/docs/handbook/intro.html
- 타입으로 견고하게 다형성으로 유연하게
- React
- react.dev
- 모던 리액트 Deep Dive
- Browser
- 브라우저 렌더링
- https://d2.naver.com/helloworld/59361
- 크롬 개발자 도구 활용하기
- element, console, network, performance, react devtools등등
- 브라우저 렌더링
- Network
- 그림으로 배우는 HTTP & Network
- http 완벽 가이드
- 코드, 설계에 관련된 책
- 좋은 코드, 나쁜 코드
- 리팩토링, 클린코드, 클린 아키텍처와 같은 책
- 기타
- 함께 자라기
- 프로그래머의 길, 멘토에게 묻다
- 실용주의 프로그래머
- 프로그래머의 뇌
- JavaScript
실습
- 코드를 작성한다 → 제품을 만든다 → 출시하고 운영한다
- 위 싸이클은 실제로 회사에서 일을 하는 방식과 다를 게 없다.
- 이 방식대로 개발을 하면 사실 혼자 공부를 하면서도 회사에서 일을 하는 것과 비슷한 경험을 할 수 있다고 생각한다.
기존 코드 이해하기
무언가를 할 때 그게 진짜로 어려운 게 맞나?
- 진짜로 어려운 게 맞다, 착각이다.
어떻게 잘 이해할 수 있을까?
- 큰 그림 그려보기(아키텍처)
- 동료를 괴롭혀서 질문 많이 하기
- 신입 입장에서는 눈치 보인다고 생각한다.
- (결론) 질문 무조건 하는 게 좋다.
- PR을 통해서 피드백 받기
- 코드 많이 읽기