민스씨의 일취일장

YdMinS' 일취월장 | 구름톤 풀스택 부트캠프 2차 스터디 회고 [7주차 - 16주차] - 개발자로서의 저변 확대기 본문

Personal Development

YdMinS' 일취월장 | 구름톤 풀스택 부트캠프 2차 스터디 회고 [7주차 - 16주차] - 개발자로서의 저변 확대기

읻민스 2023. 9. 7. 18:11
반응형

구름톤 풀스택 부트캠프 2차 스터디 회고글이다.

민스씨의 일취월장 썸네일 이미지이다.
민스씨 일취월장

두번째 스터디 완료

두번째 스터디가 완료 됐다.

 

격변의 2차 스터디

2차 스터디는 기간도 가장 긴 스터디였지만 그만큼 격변의 기간이였다. 당초 구름톤 풀스택 부트캠프 1회차의 커리큘럼은 2차 스터디까지 자율적인 학습 시간을 가진 뒤 이후부터 프로젝트만 계속 진행되도록 계획 돼 있었다. 하지만 프로젝트 기간이 될 때 까지 과제가 있었으면 좋겠다는 요구들이 있었고 수용돼 2차 스터디 시작 2주 뒤쯤 부터 프로젝트 기간에 진행 예정이였던 과제들이 주어지게 됐다.

당초 계획

당초 우리조의 계획은 알고리즘 문제풀이 주제로 진행한 성공적인 스터디를 이어서 발전시켜 CS지식 학습까지 이어나가는 것이었다.

변경된 계획

2차 스터디 초반에는 당초 계획대로 열정적으로 문제풀이와 CS 지식 스터디가 진행됐다. 하지만 과제가 주어진 뒤 3번의 계획 수정을 겪게 된다.

  • 1차 변경

각자 공부를 이어나가면서 개인 PBL 프로젝트를 진행한다. 1차 PBL 과제는 개인 과제였기 때문에 자연스럽게 새로운 체계를 받아들일 수 있었다.

  • 2차 변경

프론트엔드와 백엔드 파트를 나누서 실제 프로젝트를 진행해 보기로 했다. 기간이 2주로 상당히 짧았지만 최대한 해보기로 했다.

  • 3차 변경

아래항목에서 좀 더 자세히 이야기 하겠지만 2차 PBL 과제를 진행하면서 기초 지식이 부족한 부분을 많이 느꼈다. 그래서 3차 PBL 과제는 각자 진행하면서 다음 프로젝트 기간을 위한 기초를 쌓는데 집중하기로 했다.

CS 스터디

스터디원들의 도움으로 필수적인 CS 학습 로드맵 조언을 얻을 수 있었다. 첫 2주 동안은 자료구조에 대해서 진행했다. 매일 공부한 내용을 정리해 랜덤으로 뽑힌 사람이 다른 스터디원들에게 설명해주는 방식이었다. 기초가 없었기 때문에 매일매일 일정수준 이해도에 도달해야 하는 것이 부담스러웠지만 지나고 보면 정말 도움이 많이 됐다.

하지만 이 공동 CS 학습은 오래하지 못했다. 갑작스럽게 주어진 PBL과제들이 주어져 개인 학습시간이 줄어들게 돼 개인 학습시간에는 공동 과제보단 각자 필요한 부분을 채워나가기로 했다.

민스씨는 자료구조 스터디 이후 <면접을 위한 CS 전공지식 노트>로 전체 CS의 개략적인 지식 체계를 파악하고, 인프런, 널널한개발자님의 <외워서 끝내는 네트워크> 커리큘럼을 따라가며 동시에 네트워크 지식의 골격을 쌓았다. 앞으로 이 골격에 살을 붙이고 더욱 튼튼한 지식 체계를 견고히 해나갈 계획이다.

회고

CS 스터디는 짧았지만 목표가 높은 조원들 덕분에 급하더라도 단숨에 컴퓨터 공학 전반의 지식이 어떤것들이 있는지 어떻게 공부해 나가야 할지 방향을 잡을 수 있었다.

알고리즘 문제풀이 - 구름톤 챌린지

알고리즘 문제풀이는 이전 스터디부터 정말 자신있게 진행해 오던 부분이었다. 이전 스터디에서도 부지런하고 꾸준하게 잘해 왔기 때문에 이번에도 그 방식 계속 이어나갈 계획이었고 이 또한 2주동안은 잘 진행했다. 하지만 PBL 과제를 접해보니 이전 스터디에서 너무 알고리즘 문제풀이에 집중해 Spring 등의 실질 구현 지식이 비대칭적으로 부족하다는 것을 인지했다. 때문에 알고리즘 문제도 각자 스터디하는 방식으로 변경하였다.

그러던 중 구름톤 챌린지가 시작되었다. 매일 오전 10시에 한 문제씩 주어지는데 이것을 한 달동안 총 20문제를 푸는 것이다. 스터디에서 직접 알고리즘 문제풀이는 안하지만 자연스럽게 연습이 이어질 명분이 주어져 알고리즘 문제풀이는 구름톤 챌린지가 끝나는 내일까지도 멈추지 않고 이어지고 있다.

 

구름톤 챌린지 | 4주차 학습일기 [16일차 / 17일차 / 18일차]

구름톤 코딩테스트 챌린지 4주차 학습일기입니다. 4주차 학습일기 Day16 연합 문제 분석 N개의 섬이 있고 M개의 마을 연결 정보가 있다. 연결은 단방향이고 양쪽에서 서로 연결돼 있을 경우 하나의

ydmins.com

회고

스터디를 진행하면서 알고리즘 문제풀이를 도전하지 않았다면 구름톤 챌린지 참여도 불투명 했을 것이다. 이 또한 높고 다양한 목표를 가지고 있던 팀원들 덕분에 따라서 알고리즘 문제풀이 실력도 키울 수 있었고 구름톤 챌린지도 성공적으로 참여할 수 있었다.

PBL 프로젝트

유튜브 첫페이지 클론코딩

개인으로 진행했던 유튜브 클론코딩. 첫 클론코딩형 과제였다. 구름톤 부트캠프에 참여하며 익힌 리액트 연습을 많이 해보기 위해 페이지를 최대한 똑같이 만들어 보기로 했다.

생각보다 똑같이 클론 코딩하는 건 쉽지 않았다. 브라우저 관리자 모드로 접근해 요소들의 크기를 파악하고 레이아웃을 고민하고. 유튜브 로고를 붙이는 데에만 반나절 이상을 사용했다. 그렇지만 시간이 지날 수록 도구와 리액트를 다루는 것이 익숙해 졌고 첫페이지만 흉내냈지만 과제를 마칠 수 있었다.

유튜브 클론코딩 결과 모습이다.
유튜브 클론코딩 결과모습

인스타그램 클론코딩

두번째 PBL 프로젝트는 인스타그램 클론 코딩이었다. 2주간의 아주 짧은 시간이지만 역할을 분담해서 진행해 보기로 했다. 민스씨의 역할은 로그인 페이지를 만드는 것이었다. 따라서 가장 Depth가 낮고 모든 페이지의 기본이 되는 로그인과 과련된 페이지 UI를 만듦과 동시에  Router를 적용해 페이지 라우팅을 구현했다. 그 다음 axios를 활용해 백엔드 팀과 가장 먼저 협업을 진행해 회원가입 및 로그인을 구현했다.

로그인 페이지 UI

유튜브 클론 코딩에서 연습을 많이 했기 때문에 속도감있게 실제 인스타그램과 거의 비슷하게 만들 수 있었다.

실제 구현한 로그인 페이지 모습이다.
실제 구현한 인스타그램 로그인 페이지

 

GIT 협업

이번 인스타그램 클론 코딩에서의 가장 큰 성과는 실제 다른 사람들과 코드를 잘성해보았다는 것이다. 솔직히 클론 코딩정도는 혼자서도 언제든지 할 수 있다. 하지만 다른 사람들과 공동의 목표를 가지고 함께 코드를 작성하고 고쳐나가는 경험은 쉽게하기 어렵다. 이 과정에서 어떻게 Git을 다루는지 많이 훈련해 볼 수 있었다.

React & Spring 서버 통신

과제 수행 중 정말 예상치 못했던 곳에서 이슈가 발생했다. 바로 React로 구현한 페이지들과 Spring으로 구현한 서버가 통신이 안되는 점이었다. 이 문제를 CORS (Cross Origin Resource Sharing)라고 부르는데 리액트가 사용하는 도메인과 Spring이 작동하는 도메인이 달라서 발생하는 문제이다. 알고보니 페이지만 구현하는 React가 내장 서버를 가지고 작동하고 있었던 것이다.

  • 해결방법

다른 포스팅을 이용해 자세히 설명하는 시간을 갖고 싶지만 여기서 간단히 언급하자면 해결 방법은 프록시를 사용하는 것이다. 프록시는 일종의 어댑터라고 생각하면 된다. localhost:3000을 사용하는 React와 localhost:8080을 사용하는 스프링 서버를 연결해 주기 위해 리액트에서 보내는 신호를 8080으로 바꿔주고 또 8080에서 보낸 신호를 3000으로 바꿔준다. 같은 localhost를 사용하고 변하는 포인트가 포트번호밖에 없어서 포트포워딩이라고 생각할 수 있는데 이는 포워딩이 아니다. 실제로 다른 컴퓨터에서 돌아가는 서버와 통신하기 위해선 localhost:3000으로 보낸 요청을 해당 컴퓨터의 IP로 변경해 줘야 한다.

회고

예상치 못한 이슈로 난감하고 시간 압박으로 불안해 하고 있었는데 백엔드 팀분들과 하나하나 수정해 가며 수많은 시도를 한 끝에 통신에 성공할 수 있었다. 함께 코드를 작성해보는 첫 경험과 마찬가지로 다른 컴퓨터끼리 통신 선을 구축(?)해서 성공해 본 경험 또한 정말 짜릿했다. 

넷플릭스 클론코딩

넷플릭스 클론 코딩은 2차 스터디 마지막 과제였다. 첫번째 인스타그램 구현을 해보며 아직 구현 지식이 많이 부족하다는 판단아래 개인 프로젝트로 전환하고 개인 공부를 이어나갔다. 다행히 구름톤 풀스택 커리큘럼 내 리액트 강의내용과 일치하는 과제였기 때문에 수업을 열심히 수행한 뒤 문제 없이 과제를 제출할 수 있었다.

회고 

넷플릭스 클론코딩 까지 진행하면서 리액트로 사용해 보고 싶은 대부분의 기능들은 사용해 볼 수 있었고 정말 재미있었다. 기존에 스프링에서 사용했던 Thymeleaf와 비교해 정말 속도감 있으면서 재밌게 UI를 구성할 수 있다는게 정말 매력적이었다. 특히 속도감이 정말 매력적이어서 JavaScript를 이용한 Server 프레임워크들도 이렇게 빠르게 구현가능한지 궁금해 졌고 앞으로 공부해 나가고 싶어졌다.

2차 스터디 전체 회고

2차 스터디 기간을 되돌아 보면 "끝없는 변화의 시간"이었단 생각이 든다. 열심히 계획했지만 생각지 못했던 과제들이 주어지고 그 과제를 수행해 나가는 과정에서도 또 생각지 못한 부족한 점들을 발견했다. 이런 끝없는 변화속에서 우리 또한 계속 변화해야 했다. 조금 힘들다고 생각할 순 있지만 이게 오히려 이런 변화에 대응하는 훈련이야 말로 개발자로 성장하기 위해 정말 필요한 부분이지 않나 하는 생각이 든다. 그렇기 때문에 어떻게든 이 변화에서 버티고 살아남기 위해 노력했다. 2차 스터디 기간에 한 것들을 요약해 보자면

  1. 다양한 CS 학습의 기틀을 마련했고
  2. 첫 협업 경헙을 해보았고
  3. 끝없는 변화와 이슈에 대응하는 시간을 가져보았다. 

개발자로서의 저변 확대기

때문에 지난 1차 스터디가 알고리즘 문제 풀이의 실력을 쌓는 시기였다면 2차 스터디는 개발자로써의 저변을 넓히는 시기였다고 평가하고 싶다.

각오

스터디는 끝났지만 부트캠프가 막바지로 갈수록 또 2023년이 연말을 향해 달려갈수록 과제와 공채일정등이 연달아 다가오고 있다. 3차 스터디도 역시 그래서 끝없이 변화하고 바쁜 시간이 될 것이다. 이번엔 그 변화를 알고 있기 때문에 3차에서는 좀 더 기민하게 대처해 더욱 좋은 성취를 낼 수 있도록 최선을 다하고 싶다.

728x90
반응형