2023년 11월 회고

2023. 12. 1.


서울 이사

벼르고 벼르던 상경을 했다. 원래는 취업이 되면 회사 근처 어딘가를 알아볼 예정이었지만, 일정을 소화하기 위해 서울을 여러 번 왔다갔다하다 보니 돈도 돈이고 피로감이 장난이 아니었다. 면접이라던지, 수도권에서 열리는 행사 등에 참석하기 위해 일일이 표를 예매하고 시간을 쓰는 것이 너무 번거롭기도 했고, 이 정도면 슬슬 올라갈 때도 되었다고 생각해서 부모님과 상담 끝에 결국 원룸을 계약하게 되었다. 괜찮다고는 하시지만, 부족한 살림에 추가로 목돈이 나가는 걸 알고 있다보니 죄송스러운 마음이 아직은 더 많다. 얼른 취업이 되어서 부담을 덜어드려야 할텐데, 요즘 취업 시장이 그리 쉬운 상황이 아니다 보니 한동안 폐를 좀 끼치고 살게 될 것 같다.

CSS for JavaScript Developers

3월에 구매했던 강의 Joy of React의 제작자 Josh Comeau가 인기를 얻었던 강의 CSS for JavaScript Developers가 블랙 프라이데이 할인을 했다. 원래 가격은 한화로 50만 원이 넘는 금액이고, 구매력 평가지수에 의한 지역별 가격으로 따져도 40만원 가까이 하는 강의인데 블랙 프라이데이 세일 덕분에 원래 가격의 반절보다 낮은 값에 구매할 수 있었다. 물론 그렇다고 해도 20만원 가량의 큰 지출이어서 뼈아프긴 하지만, 믿을 만한 사람의 컨텐츠를 구매하는 것이 더 중요하지 않은가. 한동안은 이 강의 덕분에 심심하지는 않을 것이다.

자신이 CSS를 잘 한다고 자신있게 이야기할 수 있는 사람이 얼마나 있을까? 물론 해야할 일이 주어지면 한동안 붙잡고 있다가 어떻게든 비슷한 결과를 내놓을 수 있는 사람들은 많겠지만, 본인이 작성한 CSS 코드가 제품에 정확히 어떤 효과를 가져오는지 설명할 수 있는 사람은 많지 않을 것이다. 이 강의를 통해 CSS에 대한 올바른 멘탈 모델을 세우고, 내 의도를 브라우저가 정확히 반영할 수 있도록 CSS 코드를 작성할 수 있게 되길 기대한다. 물론 공부한 내용들도 빼먹지 않고 앞으로의 회고글에 정리할 예정이다.

취준컴퍼니 12기 합류

이력서를 계속 넣고는 있지만 면접을 한 번도 보지 못했다. 서류 전형을 통과하지 못했다는 말이다. 뭔가 서류에 문제가 있으니까 떨어지고 있는 거겠지. 그렇게 기약없이 지원 버튼만 누르고 있던 와중에, 로켓펀치라는 네트워킹 서비스에서 운영하는 취준컴퍼니라는 프로그램을 알게 되었다. 매 주 1회 지원서를 제출하는 것만으로도 커피챗 기회, 작업 공간, 취업 관련 정보 등을 제공하는 프로그램이라는 이야기를 듣고, 바로 로켓펀치 프로필을 작성하여 신청하였는데 11월의 마지막 날에 합격 문자를 받았다. 글을 쓰는 오늘, 그러니까 12월 1일 온라인으로 오리엔테이션이 진행될 예정이다. 어떤 내용을 들을 수 있을지 너무 기대된다. 우선 한 달간 지내보고 더 지속할지 말지 결정해보자.

기술 면접 특강

엘리스라는 회사에서 진행한 기술 면접 특강을 들었다. 온라인으로 들을 수도 있었지만, 오프라인 교육이 이루어지는 곳이 걸어서 1시간도 되지 않을 만한 거리만큼 떨어져 있어서 운동도 할 겸 들으러 가보았다. 행사 순서는 특강을 진행하시는 코치님의 여러 팁들을 이야기하신 후, 공개 면접 형식으로 두 사람의 지원자가 기술적 질문에 답한 것을 코치님이 해설하는 방식으로 진행되었다.

코치님의 기술 면접 팁

밀폐된 공간, 긴장되는 상황에서 주어진 짧은 시간 내에 본인이 일할 만한 자격이 되는 지원자임을 보이는 과정을 기술 면접이라고 한다. 물론 쉽지 않은 일이고, 최근 들어 지원자의 수준이 상향 평준화되었기 때문에 더욱 준비를 잘 할 필요가 있다. 기술 면접 또한 연습을 통해 실력을 충분히 올릴 수 있지만 벼락치기로 해결할 수 없기 때문에, 평소에 대비를 잘 해두는 게 중요하다. 특정 상황이 닥쳤다고 가정하고, 이 상황에 대해 자신의 지식을 말로 표현하는 일종의 ‘롤플레잉’ 연습법이 도움이 될 수 있다. 실제 면접 때 질문에 답하는 경우, 단순하게 대답하는 것보다는 그 대답에 ‘연관되는 지식’을 연결지어 이야기하는 것이 좋다.

주니어에게 바라는 빠른 성장 조건

  1. 영어 문서를 읽고 이해하는 데에 문제가 없는가? 프론트엔드 직군은 변화 속도가 빠른 분야이기 때문에 자료가 한국어로 번역되기 전에 유효하지 않게 되는 경우가 많다. 따라서 최신 자료를 빠르게 접하고 공부하기 위해 어느 정도의 영어 실력은 필요하다.
  2. 공식 문서를 읽는 것이 습관화되어있는가? 외부 자료는 공식 문서를 잘 읽기만 해도 알 수 있는 사실이 누락될 수도 있고, 한국어로 정리되어있다면 미묘한 뉘앙스 차이로 번역이 잘못될 수도 있다. 따라서 외부 자료보다 공식 문서를 가까이 하는 습관을 들이는 것이 좋다.
  3. 문서를 ‘자세히’ 읽는 편인가? 의외로 많은 사람들이 문서에 기재되어 있는 기초적인 내용을 모르고 넘어가는 경우가 많다. 제작자가 도구를 사용하기 위한 정보를 모아놓은 것이 공식 문서인 만큼, 문서를 꼼꼼히 읽는 것이 본인의 실력 향상에 큰 도움이 된다.
  4. 고도화된 응용 기술보다 ‘기본기’에 충실하려 하는가? 신입에게 요구하는 것은 ‘성장 가능성을 보이기’이며, 이러한 요소는 고도화된 응용 기술을 사용할 수 있는지보다 기본기를 잘 알고 있는지에서 더 잘 드러난다. 기본기 다지기에 충실하자.
  5. 받아들이기보다 궁금해하는 편인가? 눈앞에 주어진 해답에 만족하기보다, 왜 이런 답이 나왔는지에 대해 궁금해하고 이를 파헤쳐보며 지식을 쌓기 위해 노력하면 성장에 큰 도움이 되기 때문에, 이러한 면모가 보이면 성장 가능성이 높아보인다.

공개 면접

지원자 역할을 맡으신 두 분에게 사전에 공개된 질문 4가지와 비공개 질문 2가지를 질문하고, 대답에 대해 좋았던 부분과 보충할 부분을 코치님이 이야기해주셨다. 여러 가지 주제들이 있었는데, 해당 주제들과 내 생각들을 정리해보았다:

  • SPA 렌더링 전략들(CSR, SSR, SSG)의 렌더 과정에 대해 설명하기
    • 대답하셨던 지원자 분은 각각에 대해 정의를 말하는 방식으로 답하셨지만, 내가 대답한다면 각 렌더 전략의 장점과 단점을 명확히 이야기하고, 특정 렌더 전략의 단점을 해결하기 위해 다른 렌더 전략을 사용하게 되었다는 점을 짚는 방식으로 할 것 같다. 또한 코치님의 보충 설명 중 On-demand ISR이라는 처음 듣는 용어가 나와서 한 번 찾아봐야겠다는 생각을 했다.
  • 코드의 실행과정을 주어진 그림을 보며 상세하게 설명하기
    • Call stack, Event loop, Event Queue, Web API 등 JavaScript의 동작 원리를 묻는 문제였다. 이 또한 충분히 예상할 수 있었던 질문이었다. 다만 아직 정리를 제대로 하지 않았던 부분이었고, 익숙하지 않았던 Micro/Macro task queue라는 개념이 나와서 보충할 부분을 찾던 나에게는 큰 수확이 되었다.
  • 브라우저가 웹 문서를 읽고 화면을 렌더링하는 과정 설명하기
    • Critical Rendering Path와 Reflow(Layout), Paint 과정을 알고 있는지 묻는 문제였다. 예상 꼬리 질문으로 Reflow와 Repaint가 일어나는 조건을 물어볼 수 있을 것이다. 마찬가지로 충분히 예상할 수 있었던 질문이었다.
  • 브라우저가 CSS 선택자를 해석하는 방법과 성능 향상을 위한 작성법 설명하기
    • 브라우저가 CSS 선택자를 우측에서 좌측으로 해석하며, 공백이 포함되면 어떻게 해석하는지를 알고 있는지를 묻는 문제였다. 더불어 코치님의 보충 설명을 통해 현대의 CSS는 단순히 UI를 꾸미는 도구가 아니라 성능 향상에 도움이 될 수 있도록 진화했다는 사실을 되새길 수 있었다.
  • 동일한 레벨의 sibling 컴포넌트가 상태를 공유하려면 어떻게 해야하며, 그 중 하나가 다른 레벨로 옮겨졌을 때는 어떤 방법을 사용할 수 있는지 설명하기
    • 가장 기본적으로, 공유하려는 상태를 부모 컴포넌트로 끌어올리고(Lifting state up), props를 통해 전달하는 방법을 ‘먼저’ 떠올릴 수 있는지를 묻는 문제였다. 공식 문서가 설명하는 가장 기본적인 상태 관리 방법을 먼저 떠올릴 수 있는지, 즉 React의 기본기에 충실하려 하는지를 알아보기 위한 의도였다고 코치님이 설명하셨다.
    • 시간이 부족했는지 두번째 질문에 대해서는 깊게 다루지 않으셨다. 내가 대답한다면, props drilling이 너무 깊게 이루어지는 경우에 별도의 상태 관리 방법을 도입할 필요가 있으며, Modern React가 기본으로 제공하는 Context API를 사용할 수도 있고 서드파티 라이브러리를 사용할 수도 있다고 할 것이다. 이렇게 대답한다면 각 서드파티 라이브러리에 대한 꼬리 질문이 나올 수도 있다고 생각하였으며, 각 라이브러리가 취하는 접근 방식에 따라 나누어 설명할 수 있도록 정리할 필요가 있다.
  • 작성된 React 코드에서 잘못된 부분 찾기
    • 배열의 각 요소를 순회하며 생성되는 HTML 요소에 key 속성이 부여되지 않았음을 발견할 수 있어야 한다.
    • React 사용 시 DOM 요소에 직접 접근하는 방식이 왜 권장되지 않는지 알고 있어야 한다.
    • useEffect hook의 cleanup function이 누락되었음을 발견하고, cleanup function이 왜 필요한지 알고 있어야 한다.

Q&A

종료 시간이 거의 다 되어갈 때 즈음 질문답변 시간을 가졌다. 총 2가지의 질문에 대해 코치님이 답해주셨고 그 중 하나는 내가 드렸다.

  • 신입이 이력서를 쓸 때에 신경써야 할 요소란?
    • 사실 코치님 개인적으로는 이력서는 안 읽으신다고 하신다. 곧바로 GitHub으로 들어가셔서 어떤 코드를 작성했는지를 보시는 편이라고 한다. 기술 면접을 진행하는 면접관분들은 기존에 일감이 있는 상태에서 추가로 시간을 내어 하는 것이기 때문에 많이 바쁘고, 그런 바쁜 사람들의 눈길이 오래 머무를 수 있게 하는 좋은 프로젝트를 최대한 상단에 배치하는 것이 도움이 될 것이라고 하셨다. 특히 이 부분에서 팀 프로젝트보다는 개인 프로젝트를 더 좋게 보신다는데, 팀 단위 작업의 경우 지원자의 기여도를 추가로 알아야 하는 번거로움이 있기 때문에 그럴 바에는 개인 프로젝트가 매력적인 사람이 더 눈에 띈다고 한다.
  • 이미 종료된 팀 프로젝트의 미흡한 부분을 지적받아 리팩토링을 하려할 때, 마찬가지로 팀 단위로 작업해야 할지?
    • 위에서도 말했듯, 개인 프로젝트 쪽이 좀 더 확인하기 쉽기 때문에 팀 프로젝트라도 개인 프로젝트로 전환해볼 수 있으며 본인과 관련없는 기술 스택이 사용되었다면 그 부분을 본인이 사용 가능한 걸로 대체해보는 것이 또 하나의 공부가 될 것이라고 하셨다.

물론 면접관에 따라 다 판단 기준이 다르다는 말씀도 잊지 않고 덧붙이시긴 했지만, 충분히 이해가 가는 답변이어서 마음에 들었다. 나왔던 질문들은 다 예상 범위 내에 있던 것들이고 어느 정도 대답도 할 수 있는 것들이어서 약간 안심도 되었고, 여러모로 유익한 시간이었다. 역시 뭐든 경험해보고 볼 일인 것 같다.

정리

이번 달의 잘한 점

  1. 사실 기술 면접 특강은 급작스럽게 결정된 일정이다. Festa를 둘러보다가 한 번 들어나 보자 싶어서 바로 신청을 넣었다. 그렇게 신청한 행사가 2개나 더 있다. SPA from Scratch를 주제로 하는 일일 온라인 강의도 참석해보았고, 12월에도 또 하나 참가 신청해놓은 오프라인 행사가 있다. 취준컴퍼니도 기간이 얼마 남지 않았다는 문구를 보고 바로 지원서를 넣었다. 필요하다 싶으면 망설임 없이 바로 결정을 내릴 수 있는 인간이 되었다는 사실을 다시금 느끼게 되었다.
  2. 이사한 김에 평소에 연락을 못 드리던 선배분들께 연락을 드렸다. 해야지 해야지, 그래도 뭔가 되고나서 드려야 되나하며 맨날 생각만 헀는데 막상 연락을 드리고 나니 마음이 오히려 편한 것 같다.

이번 달의 못한 점

  1. 기초 공부가 너무 재밌어서 프로젝트에 신경을 못 썼다. 이제는 2023년의 마지막 달도 되었으니 더욱 미룰 수 없다. 원하는 모든 기능을 넣지 못하더라도 이번 년도 안에는 꼭 공개 배포를 할 것이다.

끝으로

생활 환경이 바뀌고, 숨만 쉬어도 빠져나갈 돈이 생기면서 부담감도 한 층 커졌다. 마음을 느긋하게 먹고 싶어도 한 켠에 불안감을 계속 가져갈 수밖에 없을 것이다. 하지만 뭐 뾰족한 수가 없다. 부족한 부분을 메꾸고, 내가 할 수 있는 일을 하면서 끊임없이 도전해볼 뿐이다. 프로그래머 구직 시장, 특히 프론트엔드는 더더욱 요즘 날씨마냥 꽁꽁 얼어붙어있다고 한다. 언젠가는 나한테도 따뜻한 취직의 볕자리가 들지 않을까… 상상하며 준비를 계속해보자. 가보자고~~~