WIL(2023.2.6 ~ 2023.2.12)

jooyeongmee·2023년 2월 12일
0

TIL2023/2

목록 보기
1/8
post-thumbnail

항해의 시작

2월 6일 월요일에 항해99 코딩부트캠프의 본과정이 시작됐다. 처음에는 내가 과연 이 커리큘럼을 따라갈 수 있을까 걱정이 많이 되었지만 막상 하다보니까 생각보다 너무 재밌는 것이다!! 친구들이 다 나는 개발에 적성이 맞는 것 같다고 해줘서 굉장히 뿌듯했다.

일주일간 거의 매일 오후 3시부터 새벽 5~6시까지 프로젝트를 했다. 토이 프로젝트할 때 팀원 4명 중 2명이나 그만두겠다고 해서 살짝 걱정했엇는데 오히려 남은 2명이 다 전공자여서 진도가 척척 나갔던 것 같다. 사실 학교에서 컴퓨터 사이언스 과제만 해봤지 개발은 처음이었는데 내가 하루종일 안 움직이고 앉아만 있었다는 걸 까먹을 정도로 내가 오늘 물도 별로 안 마셨구나라고 생각될 정도로 몰입해서 작업했던 것 같다. 끝나고 침대에 눕기 전에는 허리는 너무 아프고 다리는 엄청 부어있었다.. 앞으로는 스트레칭도 해야지..

주말에는 22시간 동안 코딩을 하는 스파르톤을 진행했는데 협업의 어려움을 다시 한번 알게 되었고 배운 것도 많았다. 밤새 하다보니 마지막에는 배가 아파왔지만 그래도 끝나니 너무 뿌듯하고 성취감이 가득했다! 기회가 된다면 항해 끝나고 사람 모집해서 해커톤도 나가보고 싶다! 사실 이미 팀원이랑 슬쩍 얘기해보기도 했다,,ㅎㅎ

이 일주일동안 사실 느낌으로만 따지면 내가 학교에서 1년동안 배운 것보다 많지 않았나 싶다. 내가 좋아하는 걸 몰입해서, 같은 것을 목표로 하는 사람들과 공부했을 때 얻는 것이 혼자 공부할 때보다 이렇게 많이 배우는구나를 깨닫게 되었다. 마음 먹고 휴학해서 항해 참가하길 잘한 것 같다.

개발자로서 한걸음

토이 프로젝트에서는 "오늘 뭐 먹지?!"라는 서비스를 개발했다. 평소 내가 가보고 싶었던, 혹은 가봤는데 너무 좋아서 저장해두고 다시 가고 싶었던 맛집들을 저장하고 볼 수 있는 서비스이다. 추가적으로 매일 뭐 먹을지 고민하는 사람들을 위해 내가 저장해둔 맛집들 중 랜덤으로 하나 뽑아주기도 한다.

사실 이 기획을 한건 나인데 처음에 기획할 때는 나도 처음 해보는거라 우리가 이거를 이 시간 내에 완성할 수 있을지 감이 안 잡혔는데 못해도 어떻게든 해내야지! 밤을 새면 어떻게든 해낼 수 있을거야!라는 대책없는 믿음으로 시작했었다. 하지만 진행하다 보니 생각보다 팀원과 손발이 잘 맞았고 재미도 있어서 시간 가는 줄도 모르고 하다보니 척척 진행되었다.

기존에는 맛집 정보를 웹크롤링 해서 카드 형식으로 등록하고, 보여주는 기능을 먼저 구현하고 시간이 남으면 랜덥 추천받기 기능을 구현하려고 했다. 근데 진행이 빨라서 등록한 카드를 수정하고 삭제하는 기능도 추가하고 랜덤 추천받기 기능도 결국 구현해냈다. 수요일에 기능 구현을 끝내서 마지막 날인 목요일에는 깃헙 리드미 작성하기, 웹페이지 전체적인 디자인 수정하기, 배포하기만 여유롭게 할 수 있었다.

이번 토이 프로젝트를 하면서 제일 많이 배웠다. 첫째로, 협업할 때 깃을 만들고 어떻게 깃을 사용해야 하는지, 브랜치로 작업하는 방법을 배웠다. 둘째, 같이 구현할 때 어떤 식으로 파일을 나눠서 코드를 작성하는지, 페이지 간의 연결 방법을 배웠다. 마지막으로 웹종반 강의에서 배웠던 지식들을 좀 더 능숙하게 활욜할 수 있게 되었고 그 외의 CRUD중 CRD를 내가 구현해서 얻는게 많았다. 결과적으로 매니저님들은 우리 팀을 걱정 많이 했지만 나는 아주 만족스러운 기간이었다:D

처음 겪는 22시간 코딩

토요일 9시부터 일요일 아침 7시까지 무박 코딩을 했다. 솔직히 걱정도 있긴 했지만 토이 프로젝트를 너무 재밌게 잘 한 것 같아서 나름 스파르톤도 걱정보단 기대가 더 컸다. 이번엔 어떤 프로젝트를 하게 될까?라는ㅎㅎ

내가 팀장을 맡게 되었는데 그래서 더욱 내가 책임지고 팀원들을 이끌어 모두가 만족해 하는 결과물을 보여주고 싶었다. 그래서인지 초반부터 빠르게빠르게 기획하고 진행하고 최대한 구체적으로 계획을 세웠는데도 시간이 많이 모자랐다. 지금 생각해보면 팀장인 내가 전체적인 시간을 어떻게 사용할건지 제대로 분배를 못한 탓도 있었던 것 같다. 나는 구현하는데 딱히 어려움은 없었다. CRUD를 토이프로젝트에서 했었는데 이번에도 CRUD 기능만 구현하게 되었고 그 중 보여주기랑 수정하기만 내가 맡아서 충분히 할 수 있겠다 생각했다. 하지만 또 한번 협업이란 내가 맡은 것만 잘하면 끝인 것이 아니라고 깨닫게 되었다. 그래서 저녁부터 밤시간 내내 같이 에러 잡고 설명해줬던 것 같은데 잘한 건지 모르겠다. 진정으로 위한다면 내가 일일이 알려주는 것이 아니라 디버깅하고 구글링하는 방법을 말해줬어야 하나 싶기도 하다.

하지만 그래도 모두 끝까지 포기하지 않고 열심히 노력한 덕분에 우리 팀은 완성할 수 있었다. 기능 구현에 배포까지 다 잘 됐는데 테스트까지 다 했는데 왜 항상 하필 발표만 하면 되던 기능들이 잘 안 되는지 모르겠다..ㅠㅠ

그래도 이번 스파르톤을 통해서도 느낀 것이 있는데 바로 내가 22시간을 몰입해서 무언가를 해낼 수 있다는 것이다. 사실 이게 나한테는 굉장히 큰 깨달음인데 항상 나는 끈기가 부족하다, 조금만 더 열심히 해보자, 이런 얘기를 많이 들었었는데 이제는 나름 컸는지 끈기와 악바리가 조금은 생긴 것 같다. 그리고 다급하고 답답해도 인내심을 갖고 마음을 가라앉히고 얘기를 하는 법을 배우면 좋을 것 같다고 느꼈다. 협업을 하는데 말투나 행동, 표정 등은 많이 중요한 것 같다.

개발 과정, API 구현

API란 무엇인가.. 들어도 들어도 계속 헷갈리는 개념이다. 정의 자체는 Application Programming Interface, 응용 프로그램 프로그래밍 인터페이스이다. 나는 사실 좀 모호하게 들린다. 그래서 그게 도대체 뭔데요 싶은.. 그래서 더 찾아보니 클라이언트와 서버가 요청을 주고 받을 때 잘 전달 및 처리될 수 있도록 교통정리를 해주는 "체계"가 API이다. API는 여러 기업과 개발자들이 서로의 프로그램이 호환되도록 합의한 원칙이다. 예를 들면, C언어에서 printf 함수를 이용하여 무언가를 출력할 때 이 printf는 API를 기반으로 설계된 문법이며 이런 것들이 여러개 쌓여 라이브러리가 된다. API가 없다면 프로그래머는 저수준으로 내려가 메모미 영역부터 하나하나 구현해 나가야 하지만 API가 있기 때문에 이미 프로그래밍 언어에 정의된 printf를 사용하기만 하면 편리하게 출력할 수 있다.

일주일간 진행한 프로젝트에서 우리는 REST API를 사용했는데 정식 명칭은 Representational State Transfer-ful API이다. 이것은 네트워크와 웹에 맞춰진 API 통신 아키텍처이다. 요청 자체만으로 내가 뭘 원하는지 알게 하자! 라는 취지에서 만들어진 API이다. 클라이언트와 서버는 고유한 url을 통해 요청과 응답을 주고 받는데, 이 url만 보면 어떤 요청인지 바로 알 수 있게 하는 것이다.

GET, POST, PATCH,DELETE method를 사용하여 보여주기, 작성하기, 수정하기, 삭제하기 기능을 구현하였다. 처음에는 GET이랑 POST만으로도 다 가능한데 굳이 다른 method를 써야할까 라는 의문이 있어서 찾아보았는데 개발자간의 약속이라고 한다. 프론트와 백의 약속이라나.. Representational, 말 그대로 내가 어떤 요청을 주고 있는지 또는 받고 있는지를 서로 바로 알 수 있게 하기 위해서라고 한다. 사실 구현은 해서 제대로 돌아가긴 하지만 내가 짠 코드가 잘 짜여진 코드인지, 불필요한 코드나, 스타일이 좋지 못한 코드나, 좀 더 효율적인 방법으로 대체할 수 있는 코드가 있는지 궁금하다. 같은 기능이어도 사람마다 하는 생각은 다를텐데 다른 팀원들은 어떻게 구현했는지도 궁금하다. 갑자기 드는 생각인데 뭔가 항해 커리큘럼에 코드 리뷰하는 것도 있었으면 좋겠다!

jwt도 쓰긴 썼는데 로그인 회원가입 기능은 내 파트가 아니었어서 제대로 파보진 못했다. 그래도 기능 구현 도와주면서 나도 찾아봐서 JSON Web Token이라고 유저를 인증하고 식별하기 위한 토큰기반 인증이라는 것, 사용자의 정보를 암호화 하여 클라이언트에 저장하는 방법이라는 것 정도만 알고있다. 우리 팀은 로그인 기능을 구현할 때 유저 아이디를 토큰으로 encode하여 웹 브라우저 쿠키에 저장하고 그것을 불러와서 decode하는 형식으로 진행했다. 토이 프로젝트에서는 닉네임 기반 로그인 기능을 web session storigy로 구현했어서 여러가지 방식들을 배울 수 있었다. 하지만 쿠키로 저장하는 로그인 기능은 직접 구현해보진 못해서 다음에 제대로 공부해 보려고 한다.

Conclusion

원래 블로그 같은 거 쓰는 것도 귀찮아 하고 딱히 할 말도 없고 해서 안 쓰는데.. 왜지.. 글이 어느새 이렇게 길어졌지..? 나 사실 할 말이 많았나...? 아무튼 덕분에 일주일을 날리지 않고 정리하고 한번 되새기고 넘어간 것 같아 좋다. 그래도 역시 다음 주에 다시 쓸 생각하니까 너무 귀찮구려.. 다음 주에는 정말정말 간략하게 적어야지..
혹시 매니저님은 이걸 다 읽어보실까? 시간이 엄청 오래걸릴텐데.. 어쩌다보니 그냥 일기장이 되어버린 나의 WILㅎㅎ
지금 시각 새벽 3:12.. 이젠 진짜 자야 한다. 내일부터는 9 to 9 과정이라 9시 줌을 들어가야 한다ㅜㅜ

이번 주 정말 고생 많았고 이제 월요일이니까 이번 주도 열심히 잘 해보자! 나는 할 수 있다아아ㅏ!! 으쌰으쌰

profile
부지런하면서도 게으른 공순이

0개의 댓글