HA 후기 겸 오랜만에 끄적여보는 글

김형주·2021년 4월 21일
0

첫번째 HA가 잘 마무리되었다.


사실 이 전주에 오래 사귄 여자친구랑 헤어진 것도 있고, 의외로 마음이 많이 싱숭생숭했는데 이맘때 바쁜 자료구조와 알고리즘을 시작하게되어 다행이라고 생각했다. 3년여 긴 시간 연애였지만 의외로 담담하게 받아들이는 걸 보니 생각보다 내 자신이 쓸데없이 냉철해진 건 아닌지 새삼 걱정되기도 한다. 이야기를 이렇게 시작하는걸 보면 그렇게 담담하게 받아들이는 건 아니겠지만.. 그것에 더해서 이번 주는 유독 걱정이 많은 한 주였다. 지금까지 공부한 내용을 확인하는 차원이라는 이야기를 들었음에도 속에서는 부글부글 긴장감이 올라왔다.

처음으로 알고리즘과 자료구조를 맞이하게 되면서 느낀 감정은, 솔직히 두려움 반, 즐거움 반이었다. 지금까지는 그냥 배우는 모든 것들이 새롭고 즐겁기만 했는데 '과연?'이라는 생각이 든 건 처음이었으니까. HA도 마치 그 파트들을 처음 마주한 때처럼 그저그런 하루로 마무리 지을까봐 내심 두렵기도 했던 것이다. 내가 두려워하고 있는 건 또 한번의 실패일까? 아니면 이것이 인생에 마지막 도전이라는 본인피셜 심적인 고통때문일까.

이전보다 훨씬 더 생각이 많아졌다.

알고리즘을 풀면서, 사실 알고리즘이라는 개념자체보다 시간복잡도라는 것에서 참 오묘함을 느꼈다. 알고리즘 개념 정리글보다 시간복잡도에 치중해서 글을 쓴 이유도 그것이었다. 알고리즘이라는 건 결국 누군가가 만들어낸 공식이고, 템플릿이라면 그걸 외우는 것보다 그걸 사용하기위한 환경을 먼저 이해할 수 있는 것이 중요하지 않을까라는 생각에서였다. 현업에 가더라도, 내가 상황을 이해못하면 해결책이 있어도 찾아내지 못한다. 당연하게도 천재들은 템플릿을 만들어뒀는데, 이해를 못하고 있다면 발견할 기량도 없는거니까. 그렇게 생각하고나니 알수 없는 답답함이 갑작스레 엄습했다. 여지껏 공부한 내용을 이해를 못해서라기보다는 그렇게 엄청난 템플릿 너머에 있는 수많은 천재들이 눈앞에 그려졌기 때문이다.

누구나 처음 무언가를 시작하면 가슴이 두근거리고 신이 난다. 일단은 압박상황 속에서 도전이라는 핑계로 스스로에게 새로운 열정을 선물할 수 있기 때문이다. 마치 그런 생각이 들었다. 내가 이게 재밌다고 생각하고 있는 것도 사실은 그런 이유고, 내가 하고 있는 것들은 의미가 없는 것이 아닐수도 있지 않을까라는 생각. 그런 생각이 커질수록 알게모르게 가슴에 답답함이 차올랐다.

생각은 생각일 뿐

두려움이나 답답한 것은 사실이지만, 여전히 내 안에서는 즐거움과 두려움이 병존하고 있다. 위에 적은 것은 결국엔 나의 생각일 뿐 어떤 것도 객관적인 평가는 아니다. 천재가 쌓여있을수도있지만, 반대로 굳이 천재가 되지않아도 되는 상황일 수도 있는 것이고. 반대로 사실 천재가 아니라 생각하는 방법을 획득하고나면 나도 할 수 있을지도 모른다. 일단은 내 감정이나 느낌에 좀 더 집중하기로 했다. 현재 나는 코드를 짜고 하루종일 무언가에 집중하는 것이 너무나 재밌고, 결과를 pass시켰을 때 오는 전율은 사실 여태껏 겪어온 사건들에 비해 훨씬 거대한 희열을 느낀다. 기능이 하나하나 나타날 때는 내가 전지전능한 신이 된듯한 느낌도 받는다. 글을 쓴다는 것의 목적은 결국 생각을 확장시키고, 머릿속에만 있는 것을 구체적으로 만드는 것인데, 우울한 글만 계속 쓰니까 우울해지는 느낌이 드는 것 같다. 이런 얘기는 그만하고, HA에 대한 이야기를 간단히 해보고 싶다. 위에 글은 나중에 나혼자 쓰는 글에 정리하도록 해야겠다. 비밀글로.

FULL Pre IM 28 HA 회고

Hiring Assessment, 스펠링이 맞는지 모르겠지만 직역하면 채용 평가가 된다. 채용을 위한 기반 데이터라는 이야기기도 하다. 최근 IT분야로의 이직을 생각하고 퇴직하고 도전하는 사람들이 많은 만큼 차라리 네이밍 자체가 HA가 아니라 JA였으면 더 좋지 않았을까라는 생각이 든다. Joining Assessment, 합류 평가. 외부적으로는 의미가 퇴색되더라도 도전하는 이들로 하여금 불안감을 조금이라도 줄일 수 있지 않을까라는 생각이다. 결과적으로는 이전에 진행했던 JavaScript Koans처럼 자료구조와 알고리즘의 기초적 개념을 묻는 문제들로 이루어져있었다. 그 전에 level3나 level2급의 알고리즘을 마주하고 난뒤에 만난 HA는 생각보다 가볍게 느껴졌다. 나왔던 문제들의 코드를 적는 건 출처문제도 있고 차후 기수에도 도움이 되지 않기때문에 적지 않도록 하려고 한다. 나도 사실 웹에서 후기를 검색하다가 실수로 문제를 보긴 했지만, 양심문제로 읽지는 못했다.

HA 문제 난이도는?

간단하게 내용을 요약해본다면,

  • 함수를 보고 시간복잡도를 파악할 수 있는지 또 시간복잡도가 어떤 의미인지 물어보는 문제
  • 선형적 자료구조와 비선형적 자료구조를 구현해서 사용할 수 있는지에 대한 문제
  • this가 binding되는 상황과 되지 않는 상황에 대한 이해가 있는지에 대한 문제
  • 재귀함수에 대한 이해도 확인 문제
  • 객체분해할당에 대한 기본적인 문법을 이해하고 있는지에 대한 문제
  • ES6으로 상속개념을 사용할 수 있는지에 대한 문제

이렇게 큰 틀로 6개정도의 문제를 만났다.
자료구조 코플릿 정도 난이도라고 생각하면 좋고, 개념이해도를 확인하는 문제였다고 생각한다. 사실 알고리즘 문제는 기대도 안하고 있었어서 긴장하진 않았다. 사실 교육이라는 틀에서 Advance한 방향으로 지속하는 건 비효율적이다. 그렇기 때문에 교육을 위한 부트캠프의 본질적 의미를 되짚어보면 함께 갈 수 있는지에 대해 묻는 문제들이었다고 생각하는 것이 좋다. 부트캠프의 본질은 1명의 개발자로서 function하도록 만드는 것이지, 개발천재를 만들어내는 competition이 아니기 때문이다. 내가 롤을 안하는 이유랑 같다. 자료구조에서 뒤지게 맞고, 알고리즘에서 어퍼컷으로 넉다운된 상태에서 HA가 알고리즘 문제가 나온다면 아마 여러명이 스스로의 자질에 대해서 의문을 갖지 않을까? 그렇게 진행된다면 교육이라기보다는 뉴비를 쫓아내는 고인물 느낌이다. 따라서 어느정도의 긴장감은 필요하지만 본인이 얼마나 코스에 대서 집중을 하고 걸어왔는지 돌아보는 시간이라고 생각하는 것이 좋다. 그래야 내(본인)가 행복하다.

내가 HA를 풀면서 느낀 점

사실 알고리즘을 마주하고는 벽을 많이 느끼긴 했다. 차후에 레퍼런스를 보고 충격을 많이 받았기 때문이다. 나름대로 효율적인 방식이라고 생각하고 풀었던 것이 비교를 하게되면 방향성에서 많은 차이가 있었기 때문이다. 그러고 난 뒤에 만난 HA라 나름 심심하지않고 Challenge하지 않게 즐겁게 풀어낼 수 있었다. 중간 중간 개념이 막혀 MDN문서를 몇 번 찾아갔었는데 input을 알 수 없는 상황이라서 벌어진 일이 많았다. 거기서 많은 생각을 하게 됐는데, input값이 critical하게 들어온다는 얘기를 마치 코드로 보여주는 것 같았다.

왜 나한테는 Input이 크리티컬했던걸까?

사실 물어본 개념들은 너무도 기초적인 것들이었지만, 중간 중간 input에 대한 고려없이 접근했던 상황들이 많았다. 배열이라고 했을 때, 너무 아무렇지 않게 당연히 배열은 1차원 배열일 것이라고 생각했고, Tree구조에서는 너무도 당연하게 모든 노드에 값이 들어있을 것이라고 생각했다. reduce를 쓰면서 return을 까먹어서 결과가 undefined가 된다던지.
물론 이전까지 풀어오던 코플릿이나, 스프린트들은 input에 대한 것들이 너무 명확히 서술되어있었다. 그렇기 때문에 일단 돌리고 확인하면 됐지만 이번 HA때는 그런 것들을 자세히 알기가 어려웠다. 테스트 케이스에서 말해주는건 있었지만 뭐가 들어온다는 것은 정확히 알기가 어려웠기 때문이다. 이때 문제가 됐던 것들은 돌이켜보면 내가 그만큼 안좋은 습관들이 생기고 있다는 증거라고 생각이 들었다. 나는 그냥 이런 기능이니까 이렇게 쓰면 되는거 아니야?라고 생각하고 써오고 있던 것이다. 어찌 됐던 코드를 작성하는 행위자체는 생각을 순차적으로 정리해서 옮기는 일이다. 함수가 이렇게 갈 거라고 생각을 하고 코드를 작성하는 것인데 나는 그 중간단계를 뛰어넘는 일이 많았다. 이걸 보충하려면 내가 푸는 문제들을 훨씬더 세밀하게 접근해야겠다는 생각을 했다.

결과적으로,

오전에 3시간, 점심시간에 밥먹으면서 코드를 보고 오후 2시 언저리가 되어서야 다 풀어낼 수 있었다. 오후 6시 제출기한이니까 꽤 빠르게 끝내지 않았나 스스로 자만을 하기도 했는데, 생각해보면 너무도 간단한 문제인데 시간을 뺏기거나 놓친 부분때문에 발목이 잡히거나 하는 경우가 많았다. 이 얘기는 작동방식이나 세부 구동에 대해서 이해가 낮다는 얘기인데 HA에서 나온 문제들은 아마도 현업에서 이 파트에서 가장 중요하게 생각하는 부분들일 것이라는 생각이 든다. 잘 마무리 지었으니, 내일부터 주말까지는 공부했던 내용들에서 내가 헷갈렸던 부분이나 놓친부분들을 채워넣어야겠다.

profile
만물에 관심이 많은 잡학지식사전이자, 새로운 도전을 꿈꾸는 주니어 개발자 / 잡학지식에서 벗어나서 전문성을 가진 엔지니어로 거듭나자!

0개의 댓글