TIL 49 day 3개월간의 달리기를 마치고(feat. 한 달간의 인턴생활)

11157 단어 TIL후기WeCodeTIL

어느새 3개월이 지났다.

반팔입고 위코드에 갔던게 엊그제 같은데 어느새 첫 눈 내리는 날이 왔다.
영원할 것 같던 순간들이 정말 눈 깜짝할 새에 지나가고 드디어 끝났다는 생각과 둥지 밖으로 나왔다는 두려움이 함께 한다.
다시 스타트 라인에 서기 전 3개월을 되돌아 보기로 했다.

스타트 라인에 서기


난 간호사로서의 나에대해 아주 오랫동안 회의감을 가지고 있으면서도 맞는 옷을 찾을 수 있을거라며 줄곧 바둥거리거리고 있었다. 그리고 그 시간만큼 개발자는 내 전직 리스트의 상위에 있었다.

생각한 것을 실제로 만들 수 있는 기술.
개방적인 문화.
배움에 대한 끊임없는 추구.
그게 나에게 제일 필요했다.

5월말의 어느날 문득 생각이 들었다.
계속 이렇게 사는거 아냐?
정신차리고 보니 새 시작이 두려워서 너무 오랫동안 심사숙고 했다는 생각이 들었다. 그날로 여러 부트캠프를 찾아봤다.

난 사람이 제일 절실했다.
내 주변의 그 누구도 개발의 ㄱ자도 관련이 없었다. 난 정말 단 하나의 정보도 없었고 인터넷은 너무 넓었다. 애초에 아는게 없으니 낫 놓고 기역자도 모른다는게 나를 향한 말이었을 것이다.

좋은 부트캠프는 많았다. 하지만 커뮤니티야말로 나에게 제일 절실했다.
그리고 나에게는 신념이 있다.

어차피 공부는 평생한다
가장 중요한 것은 사람이다

내 신념에 가장 잘 맞는 곳을 찾았다.

일단 달리기

어디선가 보기를 인터넷에 자료가 많아서 찾아보면서 html, css, JS를 공부할 수 있다고 했다. 하지만 그 말을 믿은 나는 믿는 도끼에 발등 찍힌 셈이 되었다. 나같은 백지의 입문자에게 인터넷의 정보는 너무 많아서 독이었다.

한 번도 코드라는 걸 구경조차 한적이 없는 새하얀 도화지와 같은 사람이 내 글을 본다면 절대 인터넷의 정보들로 공부하지 않기를 바란다. 그냥 유데미든 인프런이든 강의 하나 결제해서 보기를 권한다.
내용이 중요한게 아니다. 코드를 본다, 코드를 친다라는 그 느낌이 중요하다. 최소한 그 느낌이 뭔지는 알아야 한다!

나는 위코드 3개월이 끝난 지금 처음으로 내용을 정리 할 겸 줄곧 보고 싶던 강의를 결제해서 보는데 내가 백지였을 때 JS강의를 단 하나만 봤어도 내 지난 3개월이 좀 더 달라졌으리라 확신한다.

아무튼 일 하느라 본격적인 공부는 커리큘럼 1달 전인 사전 스터디 때부터 했다.
사전 스터디를 하면서 영어 문서로 된 html와 css에 전전긍긍하느라 코드 아카데미의 JavaScript만 간신히 끝낸 수준이었다. 영어로 전혀 모르는 것을 배운다는 것은 거대한 벽이었다.

결과적으로 커리큘럼을 시작할 때 내 수준은 if문과 for문을 보고 적는 수준이었다.😂


인터넷을 뒤지다가 mdn을 참조해야한다는 글을 보고 mdn을 읽기시작했다.
졸업 이후 거의 처음 써보는 영어와 낯선 단어에 고통 받았던 난 결국 단어장을 만들었다.
즉시 떠오르지 않는 모든 단어를 다 적었다.

참고로 하는 말이지만 나와같은 백지의 초보자는 처음부터 mdn 보지 말 것
공부의 열정이 사그라들 수도 있다...😅

일단 시작은 했고 문제가 산적했다.
개발자는 구글링만 잘 하면 할 수 있다던데...
그 구글링도 문제였다.

영어의 압박+알지 못하는 전문용어+JS 기본 문법도 모르는 나

아니, 애초에 어느 타이밍에 검색을 해야하는지 조차 몰랐다.🤔🤔

진짜 ㄱ부터 시작하는 개발이었다.

전력질주하기

프로젝트를 할 때는 정말 모두가 전력질주한다.
코드를 치기는 커녕 로직을 보여줘도 모르겠고 코드도 뜻대로 안 되고 체력은 떨어지고...
스스로 너무 실망스러워서 화장실에서 눈물 훔치고 나와 컴퓨터 앞에 앉기 시작한 때였다.
너무 속상한걸 어쩌겠나. 그래도 울면 좀 편하다.😂

그래도 포기하지는 않았다.
나는 언젠가는 할 수 있다는 믿음이 있다.
결국 시간이 지나고 익숙해지는 때가 온다는 사실을 안다.

내 길고도 짧은 사회경험에서 얻은 진실 중 하나가
결국 사람은 적응하고 해낸다는 것이다.
그 믿음만큼은 견고하다는 걸 자부할 수 있다.
물론 시간과 고통은 보장할 수 없다.
하지만 그 믿음이 있기에 좌절하되 단 한 번도 포기하지는 않았다.

그리고 기쁘게도 첫 프로젝트가 끝나갈 때쯤 특별한 날이 찾아왔다.
급하게 구현해야하는 기능 몇 가지가 있었는데 그 날은 놀랍도록 빠르게 작성했다! 😲😲
그 특별한 날은 이상하게 코드가 잘 써지는 날이었다.
기능 하나 추가 할 때마다 3-4일씩 잡아먹고도 멘토님과 동기들의 도움이 있어야 했는데 그 날은 하루에 3-4개의 기능을 혼자 다 구현했다. 🤗🤗

아주 특별한 날 중 하나였다.
난 이후에도 기능 하나 추가 할 때마다 길면 일주일 넘게 잡아먹고는 했지만 가끔씩 특별한 날이 선물처럼 찾아오기 시작했다. 그리고 뭔가 찔끔 빨라졌다는 느낌도 들기 시작했다.

내 성장이 느껴지는 때였고 결국에는 할 수 있다는 내 믿음이 더 견고해진 날이었다.

피니시라인 통과하기

내가 인턴이라니!!

위코드의 마지막 달은 기업협업이다. 인턴으로 기업에 한 달동안 나가있는 것이다.
인턴이라는 것도 생소하고 사무실이라는 공간도 생소했다.
그리고 새로운 기술도 익혀야했다.

Next.js와 MobX를 사용해서 시안을 보고 1달동안 만드는 프로젝트를 시작했다.
Next.js는 React와 흡사해 코드를 작성하면서 큰 어려움은 없었다.
심지어 초기 세팅은 기업측에서 해주셨기 때문에 초기 세팅의 어려움도 없었다.

좌절을 안겨준 MobX

복병은 MobX였다.
난 상태관리 라이브러리라고는 Redux 밖에 모르고 그나마도 한 번도 사용해보지 않았다. 하지만 중요한건 이게 아니였다.

원래 기존에 예시로 작성해주신 코드는 class형 컴포넌트로 작성되어 있었는데 decorator를 사용해 MobX를 적용하고 계셨다. 하지만 우리들은 2차 프로젝트 때 함수형 컴포넌트를 사용해서 진행해 함수형 컴포넌트가 더 익숙한 이유로 코드를 함수형으로 작성했다. 당연히 class형에서만 적용되는 decorator는 쓰지 못 했다.

위기는 여기에서 시작했다. MobX를 함수형 컴포넌트에 적용해야하는데 함수형 컴포넌트로 작성된 예시가 하늘의 별따기였다. 10개의 예제를 찾으면 9개는 class형이었다.
MobX 공식문서도 대부분 class형으로 작성되어있었다.
그리고 사용하는 method? 이름도 다 그게 그거 같았다.
observer, observable, useObserver... 🤔....
진심으로 옵저버라는 용어를 본 순간 난 스타크래프트 밖에 생각이 안 났다...🙄

MobX는 자유도가 높아서 너무나 다양하고 많은 예시가 있는 것도 문제였다.

개념도 낯설고 용어도 낯설고 예제도 낯설고...
검색해도 나오는건 그게 그거고.
앞이 캄캄하다는게 이런걸까 싶었다.

모든 팀원이 처음에 막막해하며 함께 MobX를 공부했다.
결국 한 팀원이 함수형 컴포넌트로 작성되고 context API조차 사용하지 않은 예시를 찾으며 이렇게 장애물을 넘는가 싶었다.

응 장애물 넘은거 아냐

일단 단순 사용하는데는 문제가 없었다.
MobX를 적용하면서 상태관리 라이브러리의 위대함을 감탄할 새도 없이 새로운 문제가 생겼다.
안타깝게도 이번에는 팀원들은 필요하지 않는 기능이 필요했다.
처음으로 맞닥뜨린 오로지 나 혼자 해결해야 하는 문제였다.

여러개의 input에 모두 값이 있을 때 버튼이 활성화 되는 기능이 문제였다.
모든 input의 값은 store에 저장되어 있었다.
이 store에 있는 값을 관찰해서 바뀔 때마다 랜더링을 해야하는 것이다.

지금은 저렇게 문제를 한 줄로 적을 수도 있지만 MobX를 그냥 갓 적용했을 때는 문제조차 몰랐다. 애초에 찾게된 예시에 적혀 있는 것만 썼기 때문이었다.

3일동안 useEffect, autorun 등등 내가 찾아본건 다 작성했는데 결국 찾지 못하고 위코드 커뮤니티에 질문글을 올렸었다.

장애물은 넘었다! 하지만 중요한 건 이게 아니지!!

위코더분들이 달아주신 댓글들을 이리저리 시도 해보다가 결국 observer라는 것을 사용해서 해결을 했다.

그 위코더분은 MobX 공식 홈페이지를 캡쳐해서 댓글을 달아주셨다.
MobX를 쓰시는 분도 아닌데 공식홈페이지를 뒤져주신거였다.

솔직히 좀 부끄러웠다.
내가 좀 더 꼼꼼히 찾아볼 걸! 하나도 넘기지 말 걸!이라는 생각이 들었다.
왜냐하면 그 전까지 MobX를 쓰면서 observable과 useObserver만을 써서 observer에 관해서는 간과하고 잊은 채 그 외의 것들을 찾아보고 있었기 때문이다.

덕분에 공식 홈페이지를 꼼꼼히 읽어봐야한다는 정석같은 교훈을 깊이 되새겼다.

내가 1달간의 인턴 생활 중에 가장 크게 얻은 깨달음이라고 생각한다.

기념으로 올리는 코드😂

const Company = observer(function Company() {
  const { RegisterStore } = useStore();
  const route = useRouter();
 
 (중략)

  return useObserver(() => (
    <Fragment>
      <RegisterHeader />
      <div className={styles.accountCon}>
        <RegisterTitle subTitle="회원정보를 입력해주세요." />
        <div className={styles.mainWrap}>
          <RegisterCommonInfo
            isDuplicatedId={isDuplicatedId}
            checkDuplicatedId={checkDuplicatedId}
          />
          (중략)
          <div className={styles.button}>
            <Button text="가입완료" disabled={isAllCheck} onClick={goToMain} />
          </div>
        </div>
      </div>
    </Fragment>
  ));
});

export default Company;

마침내 진짜 끝!

기업협업을 마무리 하는 날까지도 우리 프로젝트는 말썽이었다.
오후 2시에 발표를 하게되었는데 11시에 코드 리뷰도 받았다😁😁
2시에 발표 할 수 있을까? 에러뜨면 어쩌지? 라는 생각이 무수히 스쳐지나갔다.

하지만 우리 컴퓨터에서 수도 없이 떴던 에러가 무색하게 발표할 때는 단 한 번의 문제도 없었다.
우리 팀원들이 해냈고 마침내 발표도 끝이났다.

2달동안 열심히 달리고 모두가 체력적으로 심적으로 지친 상태에서 시작한 기업협업이었지만 우리 팀원 모두가 애쓴 노력을 마지막에 보답받는 것같았다.

기업에서도 코드리뷰며 식사며 매일 잘 되고 있는지 여쭤봐주셔서 얼마나 감사했는지 모른다. 안 해도 되는 세션도 시간 내서 해주셔서 많은 것을 배웠다. 매일 팀원들끼리 좋은 곳에서 좋은 사람이 있는 곳에서 인턴을 하게되어 기쁘다는 말을 하고는 했다.

마지막까지 좋은 사람들을 만나게되어 행운이었고 좋은 경험을 쌓았다.
이 경험을 언젠가 나도 나눠주는 사람이 되고 싶다고 다짐해본다.

자랑하고 싶은 내 동기들

위코드에 다녔으면서 동기들에 대한 이야기가 빠진다는 건 있을 수 없는 일이다. 너무나도 하고 싶은 말이 많지만 내가 동기들에게 하고 싶은 말은 '고맙다'이다.

처음 위코드를 등록했을 때 나는 개발자 커뮤니티가 필요했다.
하지만 지금은 단순히 커뮤니티 그 이상의 인연들을 많이 만났고 지금도 내가 만난 인연이 믿겨지지 않고는 한다.

모두가 좋은 사람이고 좋은 사람, 좋은 개발자가 되려고 노력한다. 자연스럽게 나도 동기들에게 좋은 사람이 되기위해서 노력한다.
그 덕에 3개월이 지난 지금의 나는 3개월 전과는 조금 달라졌다고 생각한다.

인간적으로도 보고 배우고 싶은 사람들이 많아 항상 나를 되돌아보게 한다.
정말 진심으로 여기저기에다 자랑하고 싶다🤗🤗

'여기 이렇게 멋진 사람들이 있어요!!!'

언제나 열린마음으로 대해준 멘토님들도 빠질 수 없다.

3개월간 걱정과 불안으로 흔들릴 때 동기들과 멘토님들이 항상 격려와 애정을 아끼지 않으며 붙잡아주었다.

나는 과연 어떤 사람이었는지 다시금 생각해보며 다른 동기들에게도 자랑스러운 동기이고 싶다.

내가 되고 싶은 개발자

기업협업에서 좋은 코드를 쓰는 것에 대한 질문을 하고 들은 대답이다.

  1. 좋은 코드는 두번째다. 일단 실행이되야한다.
  2. 실행이 안 되면 코드를 보고 코드가 엉망이면 2배로 욕을 먹는다!!💥

웃으며 한 이야기셨지만 난 뼈가 있다는 생각이 들었고 계속 머리에 맴돌았다.

실행이 되어야한다. 버그가 없어야한다.

당연한 말지만 위코드에서의 3개월을 생각하면 모두 좋은 코드, 좋은 개발자에 대해서 더 많이 이야기했다. 너무나 당연해서 언급하지 않았기 때문이다.

나는 이전 경험에서 너무 당연해 놓치고 지나가다가 큰 사고가 나는 것을 많이 보았다.

확인 또 확인.
내가 줄곧 해왔던 일이다.
프로그램이 정상 작동 하는지 테스트하고 또 테스트하고.
확인하고 또 확인하고.

문득 코드의 안정성이라는 단어가 생각났다.
마치 드디어 내가 가야할 방향의 단어를 찾은 것만 같다.

당장에는 여태 배운 것들을 잊지 않고 JS에 대한 이해를 배우는데 초점을 두고 싶다.
그리고 머지 않은 때에 JEST도 배우고 싶다.
그리고는 테스트 코드를 욕심껏 작성하는 개발자가 되고 싶다.
지금보다 더 시간이 지나면 그 유명한 리팩토링 책도 읽고 체득하고 싶다.

결국에 코드의 안정성, 클린코드, 커뮤니케이션 등 모든 필요한 자질이 잘 이루어져야 제대로 작동하는 프로그램을 만들 수 있다.
모든 것이 완벽할 수는 없을 것이다.
하지만 항상 그 모든 것들을 잊지않는 사람이 되겠다.

앞으로의 개발자 삶에서 초석이 될 위코드에서의 3개월을 이만 마무리해야겠다.

좋은 웹페이지 즐겨찾기