될때까지

위코드 인턴쉽 회고록 본문

프로젝트/wecode : 기업협업

위코드 인턴쉽 회고록

랖니 2022. 9. 9. 23:58
728x90

다들 고생많았습니다!!

🌸 회고

위코드에서 2달간 python & django를 배웠다. 첫 달은 파이썬 기초 문법과 전반적인 CS지식 및 개발에 필요한 개념들을  배웠다. 그리고 두번째달부터는 2주동안 팀 프로젝트를 진행했고, 그렇게 총 2번의 프로젝트를 경험해봤다. 사실상 자라홈, 에어비앤비를 모티브로 해서 초기단계부터 배포까지 직접 개발하긴 했지만.. 뭐랄까 뭔가 비어있는 느낌이였다. 기한 내에 맡은 기능을 구현하기에 급급해서 '제대로 모른다'는 생각이 들었다. 당연히 그럴 수 밖에 없지 어떻게 2주만에 비전공자가 어떻게 프로젝트를 진행하고 그렇게 만든 프로젝트로 취직을 떡~하니 하겠어. 4,5시간 자면서 절대적인 시간투자를 하긴 했지만 시간이 '더' 필요했다. 이제까지 배우고 써먹은 기술들을 정리하는 시간이 필요했다.

그래서 기업협업도 django를 사용하는 회사로 가길 희망했다. 이제까지 배운 걸 다시 써먹으면서 부족한 개념들을 채우고 싶었다. 하지만 javascript와 express를 사용하는 회사로 발탁이 되었고?? 새로운 언어 배우랴 정신없겠다 걱정 가득했는데 기업협업 참여하기 바로 전 주에 맥북이 고장났고(눈물의 92만원😭😭..)...?? 엎친데 겹친격으로 코로나에 걸려 협업 1주차에 의도치않게 재택으로 참여를 했다.

노트북이 없는데 재택근무라니 이때도 참 심리적으로 스트레스를 많이 받았다 ^^. 실제로 협업 발표를 듣고 너무 속상해서 울었었다. 세상이 뭐 내 마음대로 되나 이런적이 한두번도 아닌데 왜 울었을까? 2차 프로젝트 진행하면서 난 왜 이것밖에 못할까 자괴감 + 지친 내 멘탈을 어디에 털어놓고 기댈 곳이 없어서 힘들었는데 협업 발표조차 내 마음대로 되지 않아서 감정이 터졌던 것 같다. 이제 생각해보니 창피하군

<1주차>

해당 회사는 Node.js, Javasciprt, Express를 사용해 프로젝트를 진행하고 있었다. 하지만 우리는 노드를 모른다. 아니 자바스크립트도 몰라 다 모른다. 그래서 기업에서 1주일간 재택하며 자바스크립트, 노드를 공부하라 시간을 줬고 출근하면 과제를 준다했다. 주로 새로운 개념을 배울 때 학원을 이용했던 나로서, 혼자 공부는 처음이였다...  과연 내가 새로운 언어, 새로운 프레임워크를 1주일만에 익혀 과제를 진행할 수 있을까 걱정이 컸다.

자바스크립트는 싱글 스레드 언어래, 비동기 동기, 콜백지옥을 조심해야 한대, 노드는 뭐고 익스프레스는 뭐야 모르는 개념의 대거 등장이였다. 나는 자바스크립트 문법을 배우고 싶은데 해당 문법을 숙지하기 위해선 메모리힙, 콜스택, 이벤트루프 등 배경 지식 3,4개가 필요했다. 재택이다 보니 도움을 요청할 곳도 없어서 더 힘들었다. 하지만 과제가 있다 들었고 얼렁뚱땅 대충하기 싫었고 잘하고 싶었다. 위코드도 다음 기수부터 노드로 변경되는 이유가 요새 대세인가 싶었고 따라가고 싶었다.

그렇게 주어진 1주일간은 이해가 안가도 계속해서 관련 유튜브 시청, 공식문서, 구글링을 반복하면서 해당 키워드들에 노출되는 시간을 가졌다. 회사에서도 고맙게 연습레포지토리를 생성해줬는데 코드, 구조를 하나하나 뜯어봤다. 또 위코드 36기들의 노드 프로젝트 코드도 살펴보며 노드와 익숙해지는 시간을 가졌다. 덕분에 첫 미팅때는 사수분이 썼던 용어(dao, mvc패턴, raw query, 컨트롤러, 서비스, 미들웨어)를 하나도 못알아들었는데 그때 받아적었던 키워드들의 개념을 80% 정도 확립할 수 있었다.

<2주차>

2주차 드디어 첫 출근날. 출근했더니 사수분께서 위코드에서 각자 진행했던 1차 프로젝트를 Node.js로 리빌딩하라 하셨다. 기능 구현 후 시간이 남으면 refresh token/swagger적용까지 해보라고 추가 과제도 던져주셨다. 위코드에서는 팀 프로젝트로 진행했기에 나말고 다른 동기가 작업했던 코드도 있는데.. 해당 기능들을 모두 기간내에 마무리할 수 있을까? 아니지 할수있을까가 아니라 기한 내에 끝내고 싶었다. 그래서 매일매일 작업일지를 작성했고 효율적으로 시간분배를 해서 기한내에 추가 사항까지 끝냈다. 2주차에 진행했던 작업은 아래와 같다(당시 메모장에 작성했던 내역들 복붙입니다.)

8/22(월)

  • 초기세팅
  • mvc패턴 분리
  • created_at, updated_at sql 기본값 설정해야함(이것이 바로 장고 ORM 단점이군)
  • 회원가입 : 이메일 중복X, 비밀번호 정규식 적용, 비밀번호 암호화(bcrypt)
  • 로그인 : DB 이메일 조회 후 결과에 따른 결과값 반환, 비밀번호 확인,비밀번호 일치 jwt 토큰 생성

8/23(화)

  • 상품 전체 리스트
  • 상품 디테일 리스트
  • 상품 정렬(미완)
  • Sql inner join/outer join/(미완)
  • req.params.id 사용해 상품상세리스트 작업

8/24(수)

  • 상품 정렬 : 최신순/낮은 가격순/높은 가격순
  • 상품 전체 리스트에 상품 최저가, 최고가 정보 추가

8/25(목)

  • 상품 디테일 리스트에 배열로 상품 옵션당 가격 정보 추가

8/26(금)

  • 가격 필터(상품 정렬과 중복적용)
  • Offset, limit
  • access_token, refresh_token 개념 공부하기

8/28(일)

  • 장바구니 CRU
  • 로그인 데코레이터 -> 미들웨어로 적용하기

<3주차>

8/29(월)

  • 장바구니 D
  • Access token, refresh token 정리
  • 상품 사이즈 필터 + 정렬 중복 적용 시키기

8/30(화)

  • Access token, refresh token 적용중 미완..

8/31(수)

  • Access token, refresh token 완료!!!!!
  • 장바구니 총합계액은 프론트에서 계산할수도 있고 내가 할수도 있다! => 대신 총 수량과 단가를 줘야함 => 수량 안주고있음 => 수량 주게 수정함
  • config에 때려넣은 코드들 분리해서 utils로 관리하기
  • 지금 상품 정렬, 필터 이상함..!?!? => 코드 드럽지만 일단 다 분리해서 해결완료

9/1(목)

  • 장바구니 전체 삭제
  • 모의면접 진행하면서 질문 키워드 추출

9/2(금)

  • Inner join, left join, right join, outer join 정리 및 실생활 예시!! (완료)
  • Http 응답 요청 메시지?? 구조! + 옵션 정리하기
  • 팔로우 팔로잉?.?
  • Offset, limit의 개념 정리

9/4(일)

  • Sql, rib, dbms, nosql 개념 정리
  • 팔로우 팔로워 실습해보기

<4주차>

9/5(월)

  • 팔로우 팔로워 정렬 어떻게?
  • join을 사용하는 경우 vs where를 사용하는 경우?? : 성능차이는 없지만 가독성이 join더 좋다.
  • Swagger(로그인, 회원가입, 인증)

9/6(화)

  • Swagger(장바구니)
  • 장바구니 => create 201 updated 201(완료)
  • 회원가입 유저 이메일 중복 => 409 처리(완료)
  • 장바구니 조회 시 담긴상품이 없으면 404 처리해야함(완료)
  • 장바구니 전체 삭제 => 유저의 카드가 없다면 404 처리줘야한다(완료)
  • 상품 상세보기 => 404 업데이트(완료)

9/7(수)

  • 배포하기!!!!!(완료)
  • Pm2 사용하기(파이썬에서는 구니콘, 노드에서는 pm2)(완료)
  • 리드미에 swagger => 링크걸기(완료)

9/8(목)

  • 자바스크립트 문제 내용 정리하기

 

💗 느낀점

결론부터 말하자면, 나는 기업협업 경험이 아주 값졌다. 물론 첫주에 혼자서 javascript도 배워야하지 node가 뭐야 express는 또 뭐야 모르는 개념들이 대거등장하면서 고통받긴 했지만 지금은 node를 사용해서 api를 만들어낼 수 있다. 또 회사 소개서에서 봤던 swagger를 꼭 써보고 싶었는데 swagger까지 적용했고 추가기능구현까지 모두 완료했다. 사내 프로젝트가 아니라 과제인 점은 아쉽긴 했지만... 그래도 기한을 지켜 과제를 모두 마무리했기에 너무 뿌듯하다. 사수분도 칭찬해주셨다 >_< 추가 요구사항까지 완료했다니 난 참 대단해!!

회사 코드에 기여를 했다거나, 실제 프로젝트에 참여할 기회가 있었다면 더 좋았겠지만 만약 바로 현장에 투입됐다면 지금처럼 만족도가 크지 않았을 것 같다. 덕분에 새로운 언어, 프레임워크를 또 배워야한다면 아무 거리낌, 두려움없이 잘 해낼 수 있다는 자신감이 생겼다.

💪 배운점 및 느낀점

  1. Javascript와 express를 사용해 api를 만들 수 있다.
  2. 새로운 언어, 프레임워크를 또 배우게 된다면 두려움없이, 다음에는 더 빠르게 숙지할 수 있다는 자신감이 생겼다.
  3. swagger를 사용해 api명세서를 만들 수 있다.
  4. 토큰도 단점이 있고 이를 보완하기 위한 refresh token개념을 적용할 수 있다.
  5. 아키텍처의 중요성을 깨달았다 : mvc패턴을 적용하고 3계층 구조로 코드를 작성할 수 있다.
  6. raw query를 사용해 데이터를 CRUD 할 수 있다.
  7. 나는 기한 내에 추가 기능까지 모두 완료했는데, 참여한 동기 중 나만 끝까지 해냈다. 너무 뿌듯하다.

🤓 계획

파이썬 장고를 사용하는 회사에 취직하고 싶어서 위코드에 등록했었다. 이때까지만 해도 파이썬이 좋았는데 협업 이후 생각이 바꼈다.

자바스크립트와 익스프레스를 사용하는 회사로 취직하고 싶다. 자바스크립트 문법이 파이썬보다 지저분하다고 느껴졌지만, 장고보다 익스프레스가 더 재밌다. 이렇게 추상적으로 정리하지 말라그랬는데 진짜로 이게 더 재밌는걸 우째.. 이미 다 갖추어져있던 장고를 사용할때도 재밌었지만, 아키텍처부터 미들웨어 등 유연한 익스프레스가 더 재밌다. 내 마음대로 조립할 수 있는 그런느낌..!? raw query를 작성해 내가 짠 sql에 따라 가져오는 데이터가 변하는 것도 장고 ORM을 사용해 가져올 때 보다 재밌었다. 

그래서 나는 노드를 공부할 계획이다. 익스프레스도 ORM 개념이 있지만, 일단은 raw query를 작성하면서 sql을 공부할거다. 익스프레스와 장고 비슷한 개념으로 날것을 다룰 줄 알면 장비를 사용해 데이터를 다루는 법도 쉽게 할 수 있기 때문이다.

그리고 CS공부를 하면서 취직준비를 해야지. 위코드에서 사용했던 기술들의 개념정리 및 왜 사용했고 다른 선택권이 무엇이 있는지 비교하며 토양을 다져야겠다. 새 프로젝트는 따로 진행하지 않을 것 같다. 사용했던 기술들을 정확히 숙지하고 토양을 다져 입사하게 될 회사에서 꽃피우고 말겠다. 파이팅!!!

728x90