액티비티

[위코드 X 원티드] 프리온보딩 첫 과제 후기

yjs3819 2021. 11. 6. 09:31
728x90

[위코드 X 원티드] 프리온보딩 (백엔드) 참여 전

혼자 백엔드 공부만 하고 있던 와중 시영이형이 이러한 교육도 있다며 추천해주었다.
여러 사람과 함께 공부하고, 협업하고 싶던 욕구가 불타던 시기에 당연히 하고 싶었다.
그런데, JS, 파이썬언어를 기반으로 진행하는 프로그램이란다!

자바로 밖에 백엔드 경험을 해보지 않은 나로썬 조금 걱정이 되었지만 그냥 지원하기로 마음먹고 바로 사전과제 제출을 위한 네스트 공부를 하였다.

근데 스프링과 매우 유사해서 어렵지 않게 익혀 과제를 제출했다.(자바스크립트에 타입을 넣은 타입스크립트도 리액트 공부할 때 사용해본 경험이 있어 생각 보다 어렵지 않았다.)

그렇게 제출 완료를 했다.

사전 과제 자체는 간단했지만, 네스트에서의 단위테스트를 하는데 애를 먹었지만 단위 테스트도 하고, 꽤 잘했다 생각하고 제출하였다.

붙을거라 생각했기에 붙었다는 문자가 왔고 바로 프리온보딩 프로그램에 참여하게 되었다.

참여 후

참여를 한 다음 다 함께 모여 첫 수업을 줌을 통해서 들었다.
대략 참여자는 80명정도 였고, 위코드와 원티드 관계자님들도 계셨다.

첫수업은 오리엔테이션으로 프리 온보딩 프로그램이 어떻게 진행되는지, 어떤 과정인지에 대한 설명과, TIL작성의 중요성 강조, 개발자로써 가져야할 기본적인 마인드 셋등을 배웠다.

그리고 팀을 배정받았다. 팀원은 총 5명이었고, 수업이 끝난 뒤 바로 팀끼리 모여 줌을 통해 만나서 인사를 나누었다.

그리고 대망의 해야할 과제에 대해서 안내를 받았다.

수업은 '월요일' 이었고 과제 제출 데드라인은 '수요일 오전 10시였다'
좀더 정확힌 월요일 오후 5시부터(수업 끝난 시간) 수요일 오전 10시였다.

시간이 넉넉하진 않다고 생각 했지만 팀이 5명이서 하기엔 충분하다 생각했다.

그런데 '한팀이 한 과제를 하지말고 그 팀 내에서도 두개의 작은 팀으로 나누어 각 과제를 따로 제출해야 한다'라는 공지를 받았다.

우리는 5명 팀이라 2, 3명 팀으로 나뉘어 져야 했다.

난 2명팀에 들어갔고 본격적으로 과제를 시작하였다.(이때 지율이형을 처음으로 만남)

첫 과제 에이모 기업과제

처음 만난 팀원분들과 함께 에이모 기업 과제를 했다.!
총 5명의 팀원 이었지만 그중 두 팀으로 또 나누라 하여 나는 지율이 형과 둘이서 과제를 하는데 죽을 맛이였다.

먼저 팀이 모여 깃 커밋 컨벤션, git flow적용등을 논의 했다.

전체적인 틀만 맞춘 뒤 이제 각 프로젝트를 진행할 팀과 함께 모여 논의 했다.

나에게 힘들었던 점은 총 다섯 가지이다.

1. 익스프레스를 처음써봄.
2. nosql 몽고디비를 처음써봄.
3. 처음 배우는 기술을 잘 습득하지 못해 팀원에게 민폐를 끼치지 않을까란 걱정
4. 처음 보는 사람들과 소통을 내가 잘할 수 있을까?
5. 스웨거 문서화가 너무 힘들었다.

구현해야할 요구사항 자체는 첫 사전과제에 +알파 된 요구사항 들이었지만
기술자체가 너무 낯설었다.

익스프레스를 처음 써봄

일단 지율이 형이 낸 사전과제에 추가 요구사항을 구현하기로 하여 익스프레스 프레임워크를 이용했다.
프레임워크 자체는 너무 낯설었지만 지율이 형이 만들어놓으신 기본 구조가 있기에 이해하는데는 오래 걸리지 않았다.
(라우터라는 기능은 네스트에 없었는데, 좀 신기했다. 익스프레스는 정말 모든 구조를 커스텀하게 구성할수 있었고 Nest.js는 스프링과 같이 기본 구조가 이미 설정되어 있어 나는 후자가 편했다.)

nosql 몽고디비를 처음 써봄

nosql인 몽고디비도 처음 써보았다. 어떤식으로 디비 서버를 설정할지, 도커를 이용할지, 아니면 로컬 db서버를 직접 설치해서 배포할 땐 ec2에 몽고디비 서버를 설치해서 배포할지..

그러다 태희형(다른 팀)이 Atlas라는 무료 몽고디비 서버를 제공해주는 클라우드를 소개해 주셔서 그걸 이용했다. (이게 간단했기에)

우리는 최대한 간단한 방법을 적용해야 했다.(시간이 너무너무 촉박했기에..)

이렇게 디비서버를 선정하려했더니 이제 타입오알엠(ORM기술)이용 할지 몽구스(ODM기술)을 이용할지가 너무 고민되었다.

사실 전자는 JPA와 매우 유사하여 나에게 힘들지 않았지만 후자는 나나, 지율이 형이나 처음 쓰는 기술이라 적용하기에 너무 부담 스러웠다.

그치만 typeorm - 몽고디비의 조합은 너무 생태계가 작아, 지원을 해주지도 않고 구글링해도 정보가 많이 나오지 않는 문제가 있었다.

그래서 우린 일단 몽구스를 공부하고 오기로 했지만 하다가 막혔다.
그래서 우리에게 익숙한 'typeORM'을 통해 nosql을 사용하기로 하였다.

그런데 그러다 보니 시간이 벌써,, 화요일 저녁이였다. 제출기한은 수요일 오전 열시인데..

월요일 저녁도 거의 새벽 5시에 잤지만, 화요일은 잠을 잘수가 없었다.

처음 배우는 기술을 잘 습득하지 못해 팀원에게 민폐를 끼치지 않을까란 걱정

지율이형 프로젝트에서 시작하였기에 일단 팀원에게 민폐를 끼치지 않기 위해선 해당 프로젝트를 빨리 이해하는 것이라 생각했다. 그래서 최대한 이해하려 코드를 까보고 실제 서버를 켜서 포스트맨으로 테스트도 해보았다. 그러다 보니 지율이형 프로젝트에 대해선 이해가 조금 되었다.

역시 다른 사람의 코드를 보고 이해하는 것은 쉽지가 않다고 느꼈다.

그래도 기본적인 구조가 탄탄해서 해당 구조를 보고 빠르게 이해했다.

익스프레스와 팀원형의 프로젝트에 대해 너무 낯설었기에 실제 개발은 지율이형을 중심으로 개발했다.

그래도 나는 최대한 내일을 찾아서 하기 위해 익스프레스에서 단위 테스트를 하려했다.(그런데 너무 어려웠다. NestJS에서 하던 테스트와는 완전히 달랐따. Nest는 Jest 테스트 프레임워크를 지원해 주지만 익스프레스는 그런게 없이 모든게 커스텀이기에 node환경의 백엔드가 익숙치 않던 내겐 너무 어려웠다.)

그렇게 테스트로 4시간정도 삽질을 한뒤 실패를 했다

시간이 부족하기에 테스트는 일단 버리기로 하고, 요구사항을 구현하기로 했다.

그사이에 지율이형이 댓글-대댓글 기능을 만드셨다.

그런데, 댓글 - 대댓글의 요구사항인 depth가 1이 아니였고, 나는 그 부분을 해결해야 겠다 마음을 먹었다. 그리고 댓글의 Update, Delete도 잘 구현이 되어 있지 않았다.

그래서 이부분을 해결하기 위해 지율이 형이 만드신 구현 코드를 많이 참고하여 개발하였다. 하다보니 너무 재밌었고 시간가는줄 모르게 했다.

일단, 댓글 - 대댓글의 depth는 1이여야 하기에, 다른 엔티티로 분리하였다. comment -> comment -> comment인 자기참조가 아닌 comment -> subComment 이렇게 엔티티 자체를 분리하였다.

그렇게 하니 간단하게 대댓글을 구현하였다.(댓글, 대댓글 페이지네이션은 하지 못했다.. 시간이 너무 부족했다.)

이렇게 구현하니 팀원형이 나에게 코드 구현력이 좋다고 칭찬해주셨다. 이 말을 듣고 '잘할수 있을까?' 라는 불안감, 걱정이 눈녹듯이 사라졌다. 이번 프로젝트를 계기로 같은 팀인 지율이 형과의 믿음이 돈독해졌고 우린 정말 재미있게 과제를 마무리 하였다. 마음이 서로 맞으며, 열정있는 좋은 팀과 함께하는 것만큼 즐거운 것이 없다고 느꼈다.

일단 이정도하고 우린 문서화와 배포, 리드미와 위키작성들을 해야하기에 새벽 4시까지 개발을 멈추고 작성에 돌입했다.

처음 보는 사람들과 소통을 내가 잘할 수 있을까?

걱정은 했지만 실제로 프로젝트를 진행하다 보니 너무 바빠 이런걸 신경쓸 여를이 없었다. 모르는 것이나 궁금한 것, 혹은 내 의견을 나는 자신있게 내었다. ISFP인 내가 어떻게 그럴수 있었을까? 내 생각엔, '열정! 열정! 열정!'때문이라 생각한다. 개발에 열정이있고 재밌는 나는 자연스레 주도적으로 참여할수 있었던 것이다!!. 그렇기에 이러한 사전 고민은 깔끔하게 해결되었다.

그리고 팀원들이 너무 너무 좋으신 분들이라 소통하는데 어려움이 없었기도 하다!.

스웨거 문서화의 힘듦

클라이언트와 주고받는 데이터를 정의한 dto가 하나도 없이 우린 개발을 했다. 그래서 요청, 응답하는 데이터 형식을 찾기 위해 계속 포스트맨으로 api를 요청하는 테스트를 해야했다.

심지어 openapi swagger yaml?이라는 파일을 통해 스웨거 문서화를 하는데 탭 인덴트에 따라 적용을 해야하는데 이때 아침 7시즈음 되서, 너무 피곤한 나는 눈이 너무 아팠다. (집중이 잘되지가 않았음.)

그래서 나와 팀원형은 dto를 잘 정해서 개발해야 겠다라는 생각을 했다...

제출을 끝내고

aws ec2로 배포를 하고, 과제 제출을 8시 반즈음에 하였다.
요구사항은 많이 구현하지 못했다. 개발하는 것보단 환경설정 세팅이 훨씬 오래 걸렸고, 이 부분이 시간을 너무 잡아 먹었다.
과제를 제출할땐 너무 피곤했지만 너무 아쉽다라는 생각이 들었다. 시간이 좀더 있었으면, 이라는 생각이 들었다.

깃 커밋 내역도 보니 약속한 대로 커밋 메시지를 작성하지 않았던 거 같아 너무 아쉬웠다. 이렇게 아쉬운 부분들을 꼭 다음 과제에선 보완하자고 마음먹었다.

첫 프로그램 & 과제 & 협업 회고

이 프로그램은 정말로 추천하고 싶은 프로그램이다. 내가 개발을 정말 좋아하고 정말 사랑한다는 것을 절실히 느낄 수 있게 해주는 프로그램이라 생각한다. 혼자 공부할때 보다 팀원과 협업하며 개발하는 것이 100배, 아니 100000배 재밌다는 것을 느꼈다. 다른 사람과 서로 고민하며 의견을 주고 받는 것이 난 너무 재미있었다. 혼자서 개발할 때보다 정말정말 재미있었다. 혼자서 개발 할 땐 절대 모를 것들을 많이 알게 되었다.
그리고 '좋은 팀, 좋은 사람, 열정있는 사람'과 함께 프로젝트를 진행하는 것 만큼 즐거운 일이 없다는 것을 느꼈다. 내가 협업이 훨씬 재미있다고 느꼈던 건 팀원 덕이라 생각한다. 지금까지 협업을 많이 해봤다.(대학 팀프로젝트 수준이였찌만..) 다들 억지로, 어떠한 데드라인 까지 강제로 제출해야 하기에 열정이 없고, 책임감도 서로 없었기에 대학에서의 팀 프로젝트는 재미가 없고 서로에게 스트레스만 주었다. 그러나 이번 프로그램은 정말로 개발을 하고싶고, 페어 프로그래밍을 하고싶은 분들만 오셔서 그런지, 우리 팀은 정말 소통도 잘 되고, 서로 믿으며 책임감을 가지고 프로젝트를 진행하였다.
그리고 '개발자'라는 직업에 약간의 고민이 있던 내게 '확신'을 주게된 계기이다. 컴퓨터공학과를 전공하여 개발자가 하고싶었던 내겐 '이 길이 정말 맞을까?', '남들은 공기업, 공무원, 군무원등을 준비하는데 나도 이런걸 준비해야 하지 않을까?'라는 걱정이 조금이나마 있었다. 그러나 이번 프로젝틀르 진행하며 가슴이 뛰는 나를 발견하였다. 나는 개발을 정말 좋아하고 사랑한 다는 것을 체감하였고 '개발자'라는 직업에 확신을 갖게 되었던 계기라 생각한다.

728x90