느낀 점
아래 인용 상자는 모두 이 책 저자가 쓴 문장이다.
- 내가 과연 무언가에 깊게 파고든 적이 있는가? 내가 한 에러를 1주일, 2주일 아니 이틀 이상 붙잡아서 해결한 적이 있는가? 그때의 나는 두세 시간 안에 우회로를 찾고 넘어가는 쪽이었다. 한 문제를 며칠씩 붙잡아 보는 경험을 그 뒤로 하나씩 쌓아 왔다.
당시 인턴을 하고 있던 스타트업에서 마지막 과제로 받았던 DB Migration 툴을 개발하는 프로젝트를 진행하며, 원래는 관심도 없던 데이터베이스에 점점 관심이 생겼고, 이후에는 인턴이 종료된 후에도 해당 프로젝트를 계속해서 고도화했다. 이 과정이 결국 내 핵심 경험이 된 것이다. 하루에 4시간씩은 이 프로젝트에 사용했는데도, 하나의 문제를 마주하면 그것을 해결하는 데 평균 2주씩은 걸렸다. 네카라쿠배에 취직하면 과거에서부터 지금까지 만들어진 서비스와 관련된 코 드들을 유지보수하게 된다. 신기술에 대한 능력도 중요하지만, 결국은 기존에 존재하는 막 대한 양의 코드를 읽고, 이해하고, 그 사이에 어우러질 수 있는 코드를 개발할 수 있는 사 람이 필요하다.
-
무엇이 부족할까?
내가 무엇이 부족한지 채용 공고, 직무 설명회, 인터넷에 정리된 면접 관련 정보들을 살피며 파악하자.
채용 프로세스도 결국 운이다. 이 모두를 준비하지 않고 운에 맡길 수 있다. 하지만, 준비한 게 많아질수록 스스로의 운은 좋아진다는 것을 기억하라.
-
해야 하는 일에 흥미를 붙여라.
개개인의 호불호는 명확하기 마련이다. 중요한 것은, 해야 하는 일에 대해서 흥미를 붙이려고 시도하는 것이다. 혹은 만약 정말로 흥미를 느끼지 못하겠다면, 그에 대해서 빠르게 대응하는 것이 중요하다. 어떤 방향이던, 일단 빠르게 시도하자. 빠르게 시도할수록 실패하거나 재미를 붙이지 못해도 다른 방안을 탐색할 시간이 더 많아진다.
- 수요 만들기 : 달성해야 하는 목표가 스스로에게 왜 필요한지 이유를 구체적으로 구성하는 것
- 모든 선택에 있어 이유를 만드는 것을 습관으로 만들자. 매번 일을 하기에 앞서 ‘왜?’라는 질문을 던지자.
- 이유는 설령 결과나 대답이 원하는 것과 다르거나 틀렸을 지라도, 그것을 허용하게 해주는 알맹이이다.
- 이용하기
- 주도적으로 행동하기
결국 해야만 하는 일이 있다면, 그것을 주도적으로 하려고 노력해봐라. 기왕 어차피 해야 되는 일이니, 하고 싶은 대로 하는 것이 제일 재미있지 않겠는가? 어떻게 보면 수요를 만들고, 자신에게 유리한 방향으로 이용하라는 말과 일맥상통할 수 있다. 하지만 내가 이 방법에서 말하고 싶은 것은, 남이 하는 것을 그대로 따라하는 것이 아니라 자신의 생각대로 한 번 해보라는 것이다.
주도적으로 일을 설계하고, 그것을 확인하는 그 짧은 과정이 강제로 하는 일을 달성했을 때 얻는 성취보다 더 강력하다는 것이다. 이에 대한 과학적 근거는 찾을 수 없지만, 단순히 생각해볼 때는 이렇다. 만약 강제로 해야 하는 일을 했을 때는 단지 그 일을 완수했다는 성취감만 얻을 수 있다. 하지만, 내가 주도적으로 설계하고, 그것을 기반으로 일을 완수했을 때는 설계가 맞았다는 성취감, 일을 완수했다는 성취감을 모두 얻을 수 있지 않겠는가? 실제로도 나는 내 설계가 제대로 작동하고 있음을 확인한다는 점에서 훨씬 더 기분이 좋았다.
- 어떻게 흥미를 보여줄까
- 정형화된 패턴 : “자신이 요즘 재미있게 보고 있는 분야나 기술이 무엇인지, 그것과 관련된 깊은 지식들을 설명하기”
- 한 주제에 대해 깊게 파고들고, 이를 자기소개서에 적어라. 해당 분야에 대해 질문이 들어올 것이고, ‘준비한 것들만 면접에서 나오는’ 경험을 하게 될 것이다.
- 수요 만들기 : 달성해야 하는 목표가 스스로에게 왜 필요한지 이유를 구체적으로 구성하는 것
의지
- 의지를 충전하는 법 : 목표를 최종 목표 / 중간 목표 / 하위 목표와 같이 계층형 구조로 만들어라.
- 상위 목표들은 나아갈 방향을 알려주는 나침반이지만, 실제로 자신을 앞으로 나아가게 만드는 것은 무수한 하위 목표들이다.
- 의지의 빠른 소모를 피하는 법
- 중간 휴식이 문제 해결의 부적절한 사고방식을 깨뜨리고 새로운 사고방식을 촉진한다.
- 한 가지 일에 몰입해 있으면 한 가지 사고방식에 갇혀 다른 생각을 할 수 없기 때문에, 그 일에 대한 생각을 멈추고 다른 것을 생각해보라.
- 잠깐 다른 일을 하고 오는 것은 지루함을 없애고 새로운 자극을 만들어 준다.
- 하나의 작업 단위는 3시간 이상으로 형성하라. 최소 3시간 동안은 그 일을 붙잡고 있다가 그럼에도 안되겠다면 다른 일로 전환하라.
그렇게 한 가지 과업을 끝내고 다시 프로젝트로 돌아오면, 지루함보다는 새로움이라는 느낌이 더 컸다. 그리고 새로움이라는 느낌은 자극으로 이어졌다. 심지어 다른 일을 처리하는 동안 마주했던 문제에 대한 새로운 방법을 찾기도 했다. 이 방법들을 통해 중간에 지루하기도 했고, 생각보다 규모도 더 커졌던 프로젝트를 꾸준히 개발할 수 있었고, 최종 면접에서 합격할 때까지도 이어 나갈 수 있었다.
- 의지를 보여주는 법
- 의지를 보여주기 위한 질문
- 프로젝트를 진행하며 어려웠던 점은 무엇인지, 그리고 그것을 어떤 과정으로 해결했는지? (최대한 상세하게)
- 의지를 보여주기 위한 질문
- 오픈소스 프로젝트를 분석해본 경험이 있는지?
- 어떤 것을 열어 봤는지에 대해 구체적으로 설명
- 코드에서 특별하다고 느낀 것이나 배운 점에 대해서 설명
이런 질문들에 답을 못하는 것은 어떻게 보면 전공 지식 질문에 대해서 답변하지 못했을 때보다 더 치명적일 수 있다. 자신이 수행한 프로젝트라면 정말로 자세히 알고 있어야 하며, 자신이 정말 파고든 경험이 있다면 대답할 수 있어야 하기 때문이다. 따라서 앞으로 프로젝트를 진행할 때도 이런 질문들을 대비해 하나의 프로젝트를 계속해서 끊임없이 파고드는 것이 좋다.
꾸준함
- 빠르게 습관화하기
- 작업을 작은 조각부터 하나씩 차근차근 성취할 수 있도록 하나의 거대한 작업을 잘게 쪼개고, 그 작은 조각을 처리하는 것부터 시작함으로써 좋은 습관을 효과적으로 만들 수 있다.
‘새 습관을 들이고자 한다면, 2 분 안에 할 수 있는 작은 일부터 시작하라’ - 데이비드 알렌 코딩테스트 → 2분도 안돼서 풀 수 있는 쉬운 문제들로부터 시작 → 관성에 의해 계속 하게 됨
- 습관을 지키기
- 트리거 만들기 : 시선이 자주 가는 위치나 휴대전화의 알림 기능으로 습관을 스스로에게 리마인드
- 즐겁게 만들기 : 지키고자 하는 습관을 완료했을 경우 자신에게 보상을 줌으로써 성취감을 더 강화
- 유튜브 보기, 게임 한판 하기 X. 오히려 강한 자극을 줘 하루의 의지를 망가뜨림.
- 내 Github에 커밋, 커피 마시기 O
연습보단 실전이다.
- 당장 자신의 기준에 맞는 여러 기업들, 부트캠프들에 서류를 지원해보자. 그 과저에서는 무수한 자기소개서 및 이력서의 풀들, 그리고 스스로 부족한 점에는 무엇이 있는지 파악할 수 있다.
설령 서류에서 떨어질지언정 자기소개서를 한 번 써보는 과정을 통해서도 자기 객관화가 가능해진다. 또한 글이란 것은 쓰면 쓸수록 늘기 때문에 처음에 쓴 자기소개서에서 계속해서 발전할 수 있게 될 것이다. 아무런 준비 없이 바로 채용 판에 뛰어들라는 것은 아니다. 물론 그렇게 하더라도 배우는 것이 있지만, 경험상 많이 준비했을 때 더 많은 것들을 얻을 수 있었다. 어디선가 봤던 비유에 인데, 한참을 헤매다 불을 켜는 스위치를 발견했을 때와 그냥 스위치를 켰을 때 느낌이 전혀 다른 것과 유사하다.
자기소개, 전략의 시작점
자기소개서는 모든 채용의 시작이며, 가장 중요하다.
- 면접관이 중요하다고 생각하는 주제에 대해서 작성하되, 그것이 호기심을 유발하도록 작성해야 한다.
- 결과는 뚜렷하게, 내용은 간결하게
- 필요 이상의 정보는 숨김으로써 실제로 면접에 불러 물어보도록 유도하는 것
코딩테스트
편법은 없는 코딩테스트
- 최대한 많은 유형에 대한 정해를 알고 있을수록 합격 확률 올라간다.
- 해당 강의를 먼저 듣는다.
- 관련 유형들의 가장 쉬운 문제를 정답을 보지 않고 최대한 고민해서 푼다.
- 30분이 지났는데도 못풀겠다면 정답을 보고 풀이를 이해한 뒤, 풀이를 직접 보지 않고 푼다.
- 하루 최소 1문제씩 이렇게 최대한 노력하되, 같은 점수라면 내가 합격할 수 있도록 코드를 짠다.
- 신경쓴 것 단 한가지, 코드를 깔끔하게 작성하는 것
- 코딩테스트는 실전이 가장 중요하다. 채용 플랫폼에서 열리는 모의 코딩테스트에 참여하
면접
시작이자 마지막 프로세스, 면접
- A+ ~ F까지 차등 점수가 있는 성장가능성
- PF 과목인 커뮤니케이션
- 말이 안통하는 느낌이라면, 마음속으로 이미 F를 때리거나, 커뮤니케이션 능력을 평가할 수 있는 질문을 할 것임.
- 필수 능력
- 필수 경험.
- 일하기 위해서 반드시 필요하다고 느끼는 컴퓨터 지식
면접 프로세스
- 자기소개
- 자기소개서 질문
- 자기소개서 내용 중, 면접관이 인상깊게 본 내용에 대한 질문으로 시작
- 지원자가 쓴 내용을 지원자가 정말 알고 있는지 확인하는 질문 > 깊이 들어가며 꼬리 질문을 이어감
- 전공 질문
- 인성 질문
- 지원자 질문
면접 전 준비해야할 것
- 자신이 정말 관심 있는 분야를 포함하는 30초 자기소개
- 자기소개에 적은 내용의 디테일한 과정, 그것과 관련된 기술지식
- 자신이 약하다고 생각하거나, 대답하지 못했던 전공 지식
면접 중 : 어떻게 대답할 것인가
- 물어본 것에만 답하기
- 질문에 대한 자신의 답 + 그렇게 생각하는 이유 정도로만 답하기
- 자신이 아는 것을 알리는 것도 중요하지만, 자연스럽게 대화하듯 말하는 것이 훨씬 더 좋은 인상으로 남음
- 답변을 정리해서 대답하기
- 질문을 듣고 바로 대답하는 경우 두서없이 말하게 될 확률이 높음
- 5초 정도 질문을 이해하고, 답변을 정리해라. 이 시간이 길어질 것 같다면 ‘잠시만 생각을 하고 답변 드려도 괜찮을까요?’라고 정중하게 생각할 시간을 요청하라.
- 모르면 모른다고 말하기
- 정말 고민해도 모르겠다면, 솔직하게 모르겠다고 말하기
- 솔직하게 모르겠음을 말하되, 자신이 어떻게 생각하는지, 어디까지 추론으로 도달했는지 공유하는 것이 좋음 : 앞으로 더 성장하겠다는 마음을 보여주는 것도 효과적
- 정말 고민해도 모르겠다면, 솔직하게 모르겠다고 말하기
- 질문 몇 개 대답하지 못했다고 해서 떨어지는 것 아니니 절대 기죽지 말기
- 웃으면서 말하기
면접 후 : 경험 유지하기
- 면접 복기
- 면접이 끝난 후 면접이 어떻게 시작했는지, 자기소개 이후 어떤 질문이 나왔고, 그것에 이어서는 어떤 질문들이 나왔는지 차례로 밟기
- 면접은 보통 1,2,3차까지 있으며 각 면접에서는 이전 면접의 평가 결과가 피드백 등이 모두 전달됨
오류와 실수
오류가 발생했을 때
- 수정을 최대한 빠르게 진행한다.
- 보통 정상 동작하던 버전으로 롤백하는 것을 권장
- 비교적 수정이 간단하거나 오류 인지 후 10분 안에 핫픽스 배포를 준비할 수 있다면 빠르게 수정하기도 함
- 오류 원인을 파악하고 수정해 다시 배포 진행
- 오류가 발생한 원인과 동일한 오류가 발생하지 않도록 재발 방지 대책을 정리해 구성원에게 공유
- 사람은 누구나, 언제나 실수를 할 수 있다. 하지만 잘 구축된 시스템은 실수를 미리 발견해 보완할 수 있다.
재발 방지 대책
- 그동안 발생했던 오류를 확인할 수 있는 시나리오 추가
- 배포를 진행한 사람이 모니터링까지 담당
신기술 도입 프로세스
- 적용하고자 하는 기술이 서비스 사용자의 환경에 맞는 기술인지 확인한다.
- 가장 작은 단위의 컴포넌트를 찾아 먼저 신기술을 적용한다.
- 배포하기 전에 롤백 플랜을 수립하고 배포한 후 문제는 없는지 모니터링한다.
- 문제가 없다면, 그 다음 작은 컴포넌트에 적용하는 계획을 수립한다. 문제가 발생하면 빠르게 롤백한다.
- 점차 큰 단위의 컴포넌트에 적용하면서 3번 과정을 반복한다.
- 신기술을 적용하기 전후의 내용을 수치화하여 정리해 공유한다.
성능 향상하기 위해 노력하기
성능 지표 측정 : 웹 바이털 지표
- LCP
- FID
- CLS
실제 사용자가 체감하는 웹 페이지 속도를 가장 잘 측정할 수 있기에 LCP를 가장 중요하게 생각하는 추세
- 구글의 web-vitals라이브러리를 이용해 웹 바이털 지표 측정하기
- 프리로드 : 실제 리소스가 필요한 시점보다 미리 리소스를 가져와 실행 시점에 더 빠르게 리소스를 사용할 수 있도록 해줌
- 이미지 용량 최적화
- 불필요한 JS로직 제거
프론트엔드 개발자는 단순히 화면에 노출되는 영역만 담당하지 않는다. 프론트엔드 개발자도 서비스에 영향을 줄 수 있는 부분이 굉장히 많다. 앞으로 더 많아질 것이다.