2024년 8월의 회고 - 메타인지를 해보자

김영현·2024년 8월 30일
2

잡담

목록 보기
6/6

근황

궁금해하는 사람은 아무도 없을테지만, 주절주절 해본다!

먼저 일을 열심히 나갔다. 편한 일 보다는 몸을 쓰는일을 택했다. 생활비 마련이 목적이었지만, 해이해진 정신을 바로잡고 싶었다.
몸 쓰는일을 처음하니 처음에는 너무 피곤했다. 운동도 병행하니 죽을 맛이었다. 더군다나 야간이어서 아침에 집에와서 잠만 잤다.
이렇게 날짜가 하루 이틀 지나가니 벌써 일주일이 지나있었다. 이래선 안되겠는데? 하며 주절주절 거리며 글을썼다

그러나 사람은 어찌나어찌나어찌나...간사한지, 글 쓴 이후에 놀랍게도 제대로된 준비를 하지 않았다. 어영부영 이력서 수정하고 코드 치고, 흥미와 열정은 거절과 피곤함에 짓눌렸다. 그러다 퇴근길에 문득 영상하나를 보게되었다. 거절에 관한 영상인데, 감탄이 나왔다. 그래서 또 글을 썼다! 새벽 퇴근길 감명받은 당시 급하게 쓰다보니 많이 이상하지만 아무튼...🙄

이후 일터에서도 사람들에게 말을 건네보거나, 출퇴근길에 모르는 사람에게 인사하기 등 웃긴 일을 좀 해봤다. 결과는 꽤 신기했다. 몇십명에게 인사를 건넸을때, 절반은 받아주지 않았지만 절반정도는 받아주었다. 내가 생각하기엔 열에 아홉은 거절할줄 알았는데.

그러자 점점 자신감이 붙어 이력서도 열심히 수정해서 다시 열심히 지원을 돌려보았다.

결과는...🤔


무엇이 문제인고

작년 9월 말에 들어간 부트캠프를 3월말에 수료하고, 5개월이 지났다. 합쳐서 약 1년쯤 되는셈이다.
수료후 이력서를 손에 넣은곳이 수십곳은 되지만, 면접을 본 곳은 단 한곳 뿐이다.

이쯤되면 이력서에도 당연히 문제가 있지만, 나 자신에게도 문제가 있는 게 분명하다.

그동안 프론트엔드 개발자가 되기위해 준비 한 내용은 뭐가 있을까?

메타인지를 해보자(알고있는 부분)

내가 어떤 것을 모르는지에 대하여 알 고 있을 때 메타인지가 된다고 표현한다.
이는 굉장히 중요하다. 모르는 부분을 알고있다면 채워나갈 수있기때문이다.

  • 기본적인 컴퓨터 과학 관련 지식(컴퓨터 구조, 운영체제, 네트워크, 알고리즘, 자료구조)
  • 퍼블리싱을 위한 전반적인 HTML/CSS
    • 웹 표준과 접근성, CSS의 쌓임맥락 등을 이해하고 있음
    • svg를 이용하여 차트 등을 만들 수 있음
    • 간단한 애니메이션
    • 반응형 웹
  • 인터랙티브한 웹을 만들기 위한 JS
    • JS를 잘 활용하기위한 깊은 내용(모던 자바스크립트 딥 다이브)
    • 클래스를 이용하여 상태 기반 렌더링 프레임워크를 구현해 봄
      • 이때 전역 상태관리를 위한 기능 또한 Redux를 기반으로 구현해 봄
    • Promise를 바닐라JS로 구현해봄
  • 바닐라JS의 한계를 극복하기 위한 프레임워크인 React.js
    • React.js를 잘 활용하기 위한 깊은 내용을 React공식 문서로 학습
    • React.js 관련 라이브러리(비동기 상태관리를 위한 react-query, 간단하게 전역 상태관리를 위한 zustand 등)
    • 컴포넌트를 간단하게 테스트 해볼 수 있는 storybook 사용해 봄
    • 비동기 상태관리시 선언적 프로그래밍 패턴인Suspense, Errorboundary를 사용해 봄
    • styled-component, emotion, tailwind사용해 봄
  • Next.js v14 공식문서 학습
    • SSR, CSR, RSC-RCC의 차이에 대하여 정확히 알고 있음.
  • JS의 한계인 동적 타입에서 벗어나기위한 TS
    • TS를 잘 활용하기 위한 깊은 내용(내 기준에 재귀 타입 or infer를 이용한 조건부 타입 정도면 깊다고 판단함)
  • 코드 버전관리와 원활한 협업을 위한 github
    • 간단한 브랜치 전략, rebase 명령어 정도는 잘 사용할수 있는 수준
  • 외부에 웹을 공유하기 위한 배포(간단한 Vercel, 심도깊은 개념을 적용하지 않은 AWS)
  • 원활한 CI/CD를 위한 github actions 스크립트(yaml) 작성
  • Jest, Vitest를 이용한 유닛 테스트
  • 브라우저의 렌더링 원리 학습(구글 크롬 개발자 공식문서)
    • reflowrepaint등 에 대해서 정확히 인지하고 있음
  • 웹 최적화를 위한 지식(코드 스플릿, webp로 이미지 압축, lazy loading 등...)
  • 패키지 관리자 사용. yarn berry로 zero-install(npm, yarn)
  • 기타 웹 관련 지식(Rest API, HTTPS-HTTP, TCP-UDP, Websocket, SSE, polling...)

더 쓰라면 쓸 수 있지만, 큰 관점에서 보면 지엽적일 뿐이다.
이제 어떤 점이 부족한지 하나씩 파헤쳐보자. 특히 부족하다고 느꼈던 부분을 자세히 적어보겠다.

메타인지를 해보자(모르는 부분)

  • 기본적인 컴퓨터 과학 지식(db, 객체지향, 분산시스템)
  • CSS를 이용한 심화 애니메이션
  • JS를 이용한 객체지향
  • 간단한 zutand와 대비되는 아토믹패턴을 사용한 recoil사용 경험
  • css전처리기, css프레임워크등에 대한 활용법(단순한 사용 경험만 존재)
  • Next v14이전 버전인 page router사용법
    • Next를 이용하여 DB에 존재하는 데이터 프리페칭 등 경험x
    • AWS를 이용한 Next 배포
  • AWS를 이용한 배포 a to z
  • Docker, k8sDevops관련 사용 경험
  • 컴포넌트 테스트
  • 앱 내 웹뷰
  • 제대로 된 백엔드개발 경험
    • 디자인 패턴
  • 대기업에서 출제하는 코딩테스트는 합격할 수 있는 알고리즘 지식
  • JS를 제외한 다른 언어 경험
  • 번들러 관련 지식(webpack, rollup...)
  • Rest API가 아닌 방식으로의 통신(graph QL)
  • React Native를 이용한 앱 개발 경험
  • 웹 보안

...이런?😮

생각보다 모르는 게 많구나...?

모르는 부분에 대해서 적을때 솔직히 몇 개는 적고싶지 않았다. 점점 늘어나는 가짓수를 보니 눈앞이 아찔해져서 그만...!
사실 꽤 많이 공부했다고 착각하고있었다. 모르는 게 정말 많다. 쟁쟁한 경쟁자들 사이에서 살아남는 건 쉽지 않아보인다.
이미 학교에서 4년동안 배운 사람들은 나와 살아온 밀도가 다르다. 어찌하여 1년도 채 안되는 기간으로 그들과 나란히 서려 했을까?
반성하며 다시 채워나가자! 남들보다 늦은만큼 더 많이, 더 확실히 채워야한다.

그래 다시 피어오른 열정은 좋다! 대신 어떻게 할지 잘 계획을 세워보자


취준 계획 수립 안건 v2

이전 5월경에 취준 계획 수립 안건을 작성한 적 이 있었다. 이때 정해놓았던 계획은 다음과 같다.

  1. 이력서 수정
  2. 알고리즘, 자료구조
  3. 면접 준비
  4. TS, JS, Next

위에 나와있는 계획들 백프로는 아니지만, 대부분 잘 지켜졌다고 볼수 있다.

그러면 버전2의 계획을 세워보자!

계획

모르는게 꽤 많아서 빠른시간안에 채우는 건 불가능해보이지만, 기초가 다져진 상태니까 어떻게든 되지 않을까? 라는 전제를 깔고 계획을 세워보겠다.

0) 이력서 수정, 면접 준비, 알고리즘과 자료구조

이력서 수정과 면접 준비는 주에 한 번 무조건 진행하겠다.
다만 나만의 관점으로 이력서를 수정하거나 면접을 준비하는 건 객관적인 시선으로 볼 수 없다고 판단.
연락이 닿는 멘토님들께 감히 이력서 피드백을 부탁하거나, 아직 같은 취준생인 부트캠프 수료생분들과 한번 이야기를 나눠보면 좋을 것 같다!

알고리즘과 자료구조는 다시 1일 1문제 풀어보자...안 푼지 좀 되서 감을 잃었을 수도 있음😓
올해 목표는 백준 플래티넘이다!

1) 백엔드(db, 객체지향, 디자인 패턴)

사실 엄연히 따지자면 각기 다른 지식이지만, 결국 백엔드를 꾸리기 위한 지식이다. 지식과 지식이 연결될때 이해가 잘 되고 기억에도 잘 남더라. 이를 이용하여 백엔드를 공부할때 db, 객체지향, 디자인 패턴을 같이 공부하겠다.

언어는 당연히 Node js를 사용할건데, Nest vs Express요 부분이 고민이다.
Nest가 러닝커브가 꽤 있대서...먼저 Express로 진행 후, 마이그레이션 하는 방법도 고민해 보겠음!

2) Next(recoil, 컴포넌트 테스트, css 심화 애니메이션, css 프레임워크 활용)

프론트엔드 쪽은 그냥 Next로 묶어보았다. 프론트엔드 개발을 진행하며 하나씩 살펴보는 게 좋을 것 같음.
토이프로젝트를 풀스택으로 만들어보면 1번과 2번계획을 다 잡을 수 있을 것 같은데?

3) AWS 배포

이는 백엔드, 프론트엔드 둘다 도전해보겠음!
아직 어떤 기능이 있는지 잘모르는데, 캐싱같은 유용한 기능도 적극 활용해보겠다

4) devops(docker, k8s)

아마 3단계까지 완료가 되어야 docker를 이용하여 서버를 올리거나? k8s를 이용하여 컨테이너를 관리할 수 있지 않을까 싶다.
따라서 계획 앞에 붙은 번호는 위상정렬되었다고 볼수 있지 않을까? (나름 개그임🙄)

5) 다른 언어 경험, Grpah QL, React Native, 앱 내 웹뷰

제일 후순위로 미뤄두었는데, 이유가 있다. 물론 다른언어 경험이 있다면 좋겠지만 프론트엔드 개발자로서 필수요소는 아니라고 생각한다.
Graph QL또한 마찬가지다. 단순한 사용경험은 쉽게 얻어갈 수 있으나, 요리조리 내맘대로 써보는 단계는 db와 백엔드를 학습하고나서 할 수 있어보인다. 마지막으로 React native는 당장 요구하는 기업이 많지 않았다. 그래서 후순위에 배치! 물론 알면 좋겠지만...

앱내 웹뷰는 아직 본인의 수준미달인듯 하다. 웹도 잘 못하는데 앱이라니...😮 개념정도만 일단 알아보는 걸로 하자!


결론

취업을 한 부트캠프 동기분들을 보면 부럽기도 하지만, 새삼 존경스럽다. 얼마나 밀도 있는 삶이었을까? 🧐

할 건 많은데 흘려보낸 8월이었다. 9월은 흘려보내지 않고 꽉 잡고있으련다

profile
모르는 것을 모른다고 하기

0개의 댓글