본문 바로가기
기술 트렌드, 생각 정리 & 회고/생각 정리, 회고

인프런 워밍업 클럽 0기 수료 후기 및 회고(Back-End : Java, Spring)

by TwoJun 2024. 3. 20.

인프런에서 주최하는 자체적인 스터디 클럽인 인프런 워밍업 클럽에 0기로 합류하여 3월 15일을 수료식을 기점으로 모든 여정을 마무리지을 수 있었다. 이번 스터디를 진행하며 느낀 점, 백엔드, 프론트엔드 코치님이 Q&A에 해주셨던 조언들, 마지막 인프런 실무 백엔드 개발자분과 진행했던 네트워킹 타임에 대한 회고를 작성해 보고자 한다.

 

 

 

 

1. 이번 스터디를 진행하며 느낀 점

인프런에서 주최한 워밍업 클럽 스터디 0기

(1) 워밍업 클럽의 처음 기수로 열린 인프런 스터디 클럽으로 백엔드(Java, Spring), 프론트엔드(JavaScript, React.js) 파트로 나뉘어 주최되었고 나는 백엔드 파트에 참여했다.

 

(2) 주차별로 지식공유자님의 별도의 학습 영상을 수강하고 그 부분에 대한 개별 과제, 중후반부부터 배운 내용을 기반으로 한 미니 프로젝트가 진행되었다.

 

(3) 파트별로 스터디를 이끌어 주시는 코치님이 있었다. 코치님이 별도로 제시한 모든 커리큘럼을 따라갔고, 미니 프로젝트도 어느 정도 완성시켰기 때문에 스터디를 성공적으로 완주할 수 있었다.

 

(4) 별도로 기록하지 않으면 오래 남을 것 같지 않아서 내 블로그에 관련 학습 내용, 과제 수행 내용, 회고 등을 정리하고 인프런 블로그에도 별도로 작성했다.

https://twojun-space.tistory.com/category/%EA%B8%B0%EB%A1%9D%2C%20%ED%9A%8C%EA%B3%A0/InFlearn%20Warming-up%200%EA%B8%B0%20BE

 

'기록, 회고/InFlearn Warming-up 0기 BE' 카테고리의 글 목록

 

twojun-space.tistory.com

 

 

(5) 진행한 최종 미니 프로젝트에 대한 부분도 깃헙 원격 리포지토리에 커밋했다. 여기서 아쉬웠던 점은 다른 스터디원분들은 따로 조를 만들어서 코드 리뷰 형식을 통해 미니 프로젝트를 진행하신 것 같았다. 이 부분에 대해서는 나도 다른 분들과 함께 코드 리뷰를 하며 과제를 진행했다면 좋았을 것 같다는 아쉬움이 남았다. 또한 스터디를 진행하면서 부분적으로 부족한 개념들이 눈에 보였는데 이 부분을 보완할 수 있었다.

 

 

 

 

 

2. 스터디 수료식 -  판교 스타트업 캠퍼스 도착

판교 스타트업 캠퍼스

 

 

(1) 판교 스타트업 캠퍼스, 인프랩 오피스에서 수료식을 진행했다. 오후 6시 50분쯤 도착했으나 이미 퇴근 시간대라 대부분의 인프랩 임직원분들은 퇴근하신 것 같았다. 이번 스터디 진행을 위한 디스코드에서 뵀던 셰리님, 다른 관계자분들을 만날 수 있었으며 스터디 러너들이 점점 모이기 시작했다.

 

 

 

 

 

 

3. 백엔드, 프론트엔드 코치님의 Q&A

 

(1) 러너들의 다양한 고민들을 들어주시면서 각 코치님들이 좋은 말씀을 많이 해 주셨다. 이 부분에 대해 정리해 보고자 한다.

 

 

 

 

3-1. 개발자 커리어 중 내가 개발자를 하길 잘했다고 생각했던 경험, 개발자 커리어를 이어갈 수 있었던 동기부여가 있었는지 궁금합니다.

(1) 백엔드 코치 최태현님

- 새로운 사실을 계속해서 알아가는 것, 그렇게 알아온 것들을 다른 분들께 공유하며 함께 공부하는 과정이 즐겁다.

 

- 배움을 즐긴다. 이러한 강점이 본인에게 가장 큰 동기부여가 된다고 말씀해 주셨다.

 

 

(2) 프론트엔드 코치 John Ahn님

- 개발자의 장단점을 생각해보면 답이 나올 수도 있다, 개발자의 장단점은 "분명하다"라는 것.

 

- 단점은 항상 공부해야 한다라는 것, 취준뿐만이 아닌 회사 업무를 하면서도 공부가 필요한 직업이다. 퇴근 후 쉬고 싶고 이런 분들에게는 치명적인 단점이 될 수도 있겠다. 

 

- 장점은 단점 덕분에 생기는 거라고 생각, 개발자는 "전문직"에 가깝다고 생각을 한다. 그래서 사실 개발 공부를 열심히 했다면 어느 도메인을 가던 본인이 공부한 지식을 요구하는 곳이 많다고 생각한다.

 

- 다른 직종으로 일하는 분들을 보면 그 직종에서 아무리 열심히 하더라도 그에 걸맞는 보상이 제대로 따라오지 않는 경우가 많다. 하지만 개발자는 한만큼 많은 보상이 뒤따라오는 직종이라고 생각한다. (첫 번째 장점)

 

- 두 번째 장점은 다양한 분야의 개발을 하며 다양한 경험을 해볼 수 있다. 

 

- 마지막 장점은 개발자에게 많은 기회가 주어진다. 개발자는 개발의 역량을 사용해서 개발 업무 외에 다른 업무도 도전해볼 수 있다. 일반적인 경우는 본업과 부업의 종류가 다르지만 개발자는 어떤 학원을 가서 코드 리뷰를 해준다던지, 특강을 한다던지, 외주로 웹이나 앱 개발을 해준다던지, 본인의 경력을 쌓으면서 부업을 할 수 있는 기회가 많다. 이러한 장점을 경험해 보면서 개발자를 한다는 동기부여를 계속 받는 것 같다고 말씀해 주셨다.

 

 

 

 

3-2. 취업 준비 중인데 공부할 게 너무 많다. 프로젝트부터 확실하게 하고 싶은데 기능부터 테이블 개수까지 프로젝트의 규모를 어느 정도의 규모로 어느 정도의 기간을 잡고 만들어야 할지 궁금하다.

(1) 백엔드 코치 최태현님

- 우선 한 줄 요약 : 이 부분에 대해 정답은 존재하지 않는다.

 

- 사실상 정답이 없는 문제, 김창준님의 "함께 자라기"라는 책이 있다. 그 책에 나온 내용 중에 나의 레벨이 5라고 해보자. 수준 레벨 1짜리 작업을 시킨다면 당연히 지루하다고 생각할 것이다. 만약 레벨 10짜리 작업을 맡았다고 해보자 본인 수준과 너무 떨어져있기 때문에 머리가 아프고 하기가 싫을 것이다. 사실 가장 효과적으로 성장하는 방법은 본인의 수준에서 +1, +2 수준의 작업을 해 보는 것이다.

 

- 그렇다면, 본인의 수준은 어떻게 알 수 있나요?

- 본인의 수준을 알아야 한다. 이 부분은 잘못된 난이도를 두려워하지 말고 무엇이든 해보자. 지루하다는 감정을 느낀다면 쉽고, 어렵다는 감정을 느낀다면 본인에게 당연히 어려운 것이다. 무엇이든 도전해 보고 주기적으로 도전한 부분에 대해 회고를 해본다면, 나의 적정선 난이도가 어느 정도인지 감을 잡을 수 있다. 감이 생길 때 사이드 프로젝트의 규모, 테이블 개수 등이 자연스럽게 정해질 수 있을 것이다.

 

- 아니면 다른 방법도 있다. 실전적이고 직접적인 피드백을 받을 수 있는 기회를 찾는 것이다.

 

- 물론 이제 현실적으로 시작하는 단계에서는 본인의 단계를 알기 어렵다. 여러 단계를 경험해 봤고 단계를 설명해 줄 수 있으며, 현재 내가 어떤 단계인지 잘 파악해줄 수 있는 분을 만나서 컨설트를 받아보는 것도 좋다.

 

- 이런 멘토분을 만나기 어려울 수 있다. 그런 경우에는 사이드 프로젝트를 국한된 예로 들어본다면 여러 테크 회사의 기술 블로그에서 "파일럿 프로젝트"라는 글들을 정독해보자. 여러 기술 블로그에서 리뷰된 파일럿 프로젝트 정도의 수준을 내 것으로 체화한다면, 이후에는 무엇을 해야 할지 감이 잡히게 될 것이다.

 

 

 

(2) 프론트엔드 코치 John Ahn님

- 사실은 무작정 먼저 부딪혀 보는 부분이 중요, 개발을 하다 보면 워터폴 또는 애자일 방식으로 프로젝트를 진행한다. 특정한 서비스를 봤을 때 큼지막한 기능들이 있는데 그 부분을 개발해 보고 본인이 살을 조금씩 붙여보고 싶은 기능들이 있을 것이다 그런 부분들을 조금씩 추가하다 보면 큰 규모의 프로젝트가 될 것이다.

 

- 기간은 무의미하다. 기간은 같아도 얼마나 열심히 했느냐에 따라 프로젝트의 규모, 품질은 충분히 달라진다.

 

 

 

 

3-3. 어느 순간 개발 실력이 멈춰버린 것 같다. 주어진 업무는 해결할 수 있지만 성장하고 싶다는 기분이 전혀 들지 않는다. 성장하기 위해 어떤 것을 해야 할까?

(1) 백엔드 코치 최태현님

- 실력이 멈춰버린 것 같다는 생각을 한다면 지금 하고 있는 업무가 본인의 수준보다 쉽기 때문이다. 쉬운 일만 하고 있다면 이렇게 느낄 수도 있는데 이 부분은 조금 더 난이도 있는 업무를 요청해 보거나 스스로 할 수 있는 부분을 찾아봐야 한다.

 

- 본인의 수준보다 높은 업무를 수행한다면 성장하고 있다는 느낌을 충분히 받을 수 있을 것이다. 만약에 난이도가 높은 업무를 받기 어려운 조건이라면, 현재 맡고 있는 업무(시스템, 코드 개발 및 유지보수 등)에서 현재 시스템, 인프라 조건 그대로  "사용자가 10배, 100배로 늘어버리면 어떻게 해야 할까?" 과연 지금 아키텍처로 버틸 수 있을까? 라는 고민을 해보며 성능 테스트를 해 보자. 

 

- 만약 성능 테스트를 한 번도 해보지 않았다면 나에게 도전적인 과제가 충분히 될 수 있고 재미를 느낄 수 있을 것이다.

 

- 실제로 이러한 문제가 생겼다면 어떻게 해결할 수 있을까, 더 좋은 방법이 없을까? 라고 고민해보며 언어, 데이터베이스, 인프라 등 다양한 관점에서 문제 해결을 위한 접근을 시도해보고 적용해 본다면 개발자의 성장에 있어 큰 도움이 될 것이라고 생각한다.

 

 

 

 

3-4. 공부를 시작할 때, 사이드 프로젝트 등에서 강의 내용을 적용해 직접 코딩해 보는 것도 중요하다고 생각, 하지만 본인이 부족하다고 생각해서 계속 강의만 듣게 되는데 이 부분에 대한 팁이 있을까요?

(1) 백엔드 코치 최태현님

- 본인도 어떤 심정인지 충분히 이해한다. 요즘은 좋은 레퍼런스들이 넘쳐나다보니, 공부를 하면서도 새로운 게 보이고, 이런 부분에서 내가 모르는 게 더 많다고 생각이 들 수 있다.

 

- 배운 내용들을 직접 적용해야 하는 순간들이 올텐데 과거에 들었던 강의 자료, 학습 내용들이 다 사용된다라는 점을 알아주셨으면 한다. 강의를 듣는 시간들이 헛되게 쓰이지는 않는다.

 

 

(2) 프론트엔드 코치 John Ahn님

- 어떻게 보면 공부 방법같은 부분은 상당히 주관적일 수밖에 없다. 주관적인 기준으로 설명해 보겠다.

 

- 먼저 코딩은 컴퓨터 언어를 사용하는 것을 기억해야 한다, 영어를 배울 때나 어릴 때 한국어를 배울 때 가장 먼저 하는 것이 무엇인가? 바로 듣는 것이다. 듣는 것은 올바른 것을 모방하는 것이다.

 

- 따라서 강의를 듣거나, 잘 만들어진 서비스를 클론하는 것이 모방하는 단계라고 생각한다. 이 시기에는 어떠한 부분이 이해가 안 되더라도 멈추는 것이 아닌, 계속 앞으로 나가면서 따라해 보고 모방해 보는 것이 중요하다고 본다.

 

- 강의를 듣는다면 어려운 내용이 나오더라도 멈추지 말고 본인이 계속 강의를 들으면서 별도로 정리하고, 내용을 찾아가면서 공부한다. 이렇게 모방을 하면서 학습한 기술들이 익숙해지는 시점이 오면, 그 다음 단계로 이러한 기술들을 직접 사용해 보아야 한다.

 

- 직접 사용하는 단계에서 많은 분들이 하는 착각이 "무조건 내 힘으로 코드를 짜야 한다", "조언을 얻으면 안 된다."라는 생각을 많이 하는데 알아야 할 건 개발은 사실상 오픈북 업무이다. 개발자는 사실 더 많은 자료들을 더 이용하고 활용할 줄 아는 사람이 더 좋은 개발자가 될 확률이 높다는 것을 알아주었으면 한다.

 

- 따라서 모방 이후에 직접 사용(만들어보는 단계)하는 과정에서는 여러 가지 레퍼런스(오픈소스, Stack OverFlow, 여러 강의자료나 기타 블로그 등)들을 참고하면서 개발을 해야 한다. 결국은 창조하려는 소스 코드를 이해하는 능력, 그것을 응용하는 능력이 중요하다고 생각한다. 이렇게 참조를 하면서 반복하다 보면 배우고자 하는 기술을 효과적으로 습득할 수 있다. (어떤 소스코드가 관습화된 코드인지, 성능이 더 좋은 코드인지 등에 대한 인지)

 

- 최대한 듣고 보고 따라해 보고, 이 부분을 실제로 사용해 보는 과정에서 내 힘만으로 하는 것이 아닌 참조할 수 있는 부분은 참조해가면서 개발하는 부분을 반복하다 보면 언젠가는 참조하지 않아도 개발을 할 수 있는 타이밍이 올 것이라고 생각. 가끔 나는 절대 외부의 도움을 받으면 안 된다라고 생각하시는 분들이 종종 계시는데 이러한 스트레스까지는 받지 않았으면 좋겠다.

 

 

 

 

3-5. 어려운 일이 생겼을 때에도 꾸준히 공부하며 업무 성과를 어느 정도 유지할 수 있는 방법이 있을까요?

(1) 백엔드 코치 최태현님

- 개인적으로는 목표를 향해 움직일 때 잠깐 느려지거나 멈출 수도 있다고 생각한다. 하지만 원하는 목표를 향해 전진하는 것 자체가 즐겁고 행복한 편이기 때문에 질문자분이 꾸준히 공부하고 업무 성과를 유지해야 하는 이유를 스스로 찾게 된다면 어려운 일이 생겼을 때에도 충분히 극복할 수 있는 힘을 얻게 될 것이라고 생각한다.

 

 

 

(2) 프론트엔드 코치 John Ahn님

- 공부를 하거나 어떤 어려움을 이겨낼 때에 특별한 방법이나 지름길을 찾아가려는 경향이 있다고 한다. 사실 특별한 방법은 힘들 수 있지만 남들보다 좀 더 노력하고, 인내하며 간절함을 갖고 있는 부분이 특별한 방법이라고 본인은 생각하고 있다.

 

- 선의의 경쟁자와 함께 가는 것도 좋다고 생각, 찾아보면 좋은 스터디들이 있는데 이 부분에 참여해서 다른 분들과 배운 것들을 공유하고 함께 프로젝트를 진행하며 성장하면 좋다. 

 

 

 

 

3-6. 코틀린(Kotlin)에도 흥미가 있는데 우선순위가 이게 아닌 것 같아요. 코틀린을 언제 학습해 보면 좋을까요?

(1) 백엔드 코치 최태현님

- 첫 번째는 내가 가고 싶은 기업에서 코틀린을 쓸 때이다. 미리 배워둔다면 업무 적응도 빠르고 면접 과정이나 지원 과정에서도 조금이라도 이점을 챙길 수 있어서 자연스럽게 우선순위가 올라갈 수 있다.

 

- 주관적이지만, 자바를 어느 정도 알고 있는지 가늠하고 싶을 때 들어보면 좋다. 이유는, 코틀린을 공부하면서 자바와 비교해야 하는 상황이 오는데 비교 과정에서 자바에 대한 특정 파트의 개념을 모르고 있었다면? 이 부분을 되돌아볼 수 있는 기회를 코틀린을 통해 알게 된 것이다.

 

- 따라서 자바 진영에서 놓친 부분이 있는지 자바에 대한 개념을 더 촘촘하게 정리하고자 하는 생각이 있다면 코틀린을 학습해 보는 것도 좋다.

 

- 코틀린을 배움으로써 자바의 지식 범위를 확인해 보기 위한 용도나, 프로그래밍 언어에 대한 지식 자체를 늘릴 수 있는 기회가 될 수 있다고 생각한다. 자바를 몇 달 정도 공부해 봤다면 본인이 자바를 잘 알고 있는지 확인해 보고 싶을 때 코틀린 강의를 들어보는 것도 추천한다.

 

 

 

 

3-7. 온라인 세션 질문) 자체 서비스 회사에 재직 중이 아닌, 제조업 IT 팀에 재직 중이다. 국내 백엔드 계열에선 대부분 자바나 코틀린 계열 위주로 채용이 진행되는데, 서류나 면접에서 자바나 코틀린이 아니여도 다른 요인을 통해 합격을 하는 경우가 있을까요?

(1) 백엔드 코치 최태현님

- 그런 사례도 충분히 있을 수 있다. 하지만 왜 그런지 이해해야 하는데 프로그래밍 언어와 그 옆단에는 서로 비슷한 개념을 공유한다. 

(자바에도 변수 존재, 자바스크립트에도 변수가 있듯이, 변수라는 개념은 여러 프로그래밍 언어에 존재)

 

- 이러한 변수에도 가변 변수, 불변 변수, 변수가 객체로 매핑되어 있다면? 이런 부분들이 파생되는데 이런 개념들은 언어와 무관하게 대체로 공유되는 개념이다.

 

- 프레임워크도 마찬가지다 다양한 웹 프레임워크에서도 웹 애플리케이션을 개발함에 있어서 여러 api에 대한 규약이나 네트워크 처리 등에 대한 기능을 모두 제공한다. 그런 것들에 대한 개념을 깊이있게 이해하고 있다면  그 개념들을 가져와서 자바, 스프링에서는 어떻게 적용되지? 이 부분을 검색해보고 알아내면 끝이다. 이 부분을 할 수 있다면 자바 스프링에 대한 직접적인 경험이 없어도 면접 과정에서 좋은 인상을 남길 수밖에 없다.

 

 

 

 

3-8. 오프라인 현장 질문) 본인의 토이 프로젝트를 채용 과정에서 제출한다. 보면은 이러한 기술스택을 왜 활용했는지 면접 과정에서 물어보시는데 이 부분에 대한 답과, 프로젝트를 진행하면서 기술 스택을 선택하는 의사 결정 과정에서 어떠한 근거가 있어야 하는지 궁금하다.

(1) 백엔드 코치 최태현님

- 백엔드쪽의 경우 언어나 프레임워크는 거의 고정적인 경향이 있다. 자바 + 스프링이 한국에서 많이 쓰는 스택이다 보니 이러한 기술 스택의 조합들이 자연스럽게 결정되고, 남들 다 하니까 사용했다고 면접에서 대답한다면 좋지 못한 인상을 주기 쉽다.

 

- 기술 스택 결정에 있어서 이러한 기술을 왜 써야 하는지 직접 고민해본 사람, 고민해보지 않은 사람은 면접 과정에서 차이가 날 수밖에 없다.

 

- 최소한 이 부분을 깊게 고민해 본 사람이라면

- (예를 들어, 자바는 JVM 내부에서 동작하기 때문에 플랫폼에 종속적이 아닌 독립적으로 서비스를 배포할 수 있는 특징, 자바+스프링이 인력 구성이 풍부하고 레퍼런스를 찾아보기 쉽다. 문제를 부딪혔을 때 다양한 레퍼런스를 찾아보기 위해 대중적인 자바+스프링을 선택했다.)

- 이러한 답변을 해볼 수 있겠는데 "남들 쓰길래 저도 사용했어요"라는 답변과 비교했을 때 딱 봐도 차이가 크다는 것을 알 수 있다.

 

- 기술 스택 선택 과정에서 내 프로젝트의 상황, 어떤 것들을 중점적으로 고려했고 따라서 이러한 스택을 사용했다라는 본인만의 논리와 흐름, 근거가 있다면 충분하다고 생각한다.

 

 

 

 

 

4. 인프랩 개발자분과 함께한 네트워킹

(1) 인프랩에 입사하신 신입 개발자분과 네트워킹을 해 볼 수 있었다.

 

(2) 앞으로 진행할 웹 서비스 졸업작품에 대해 전반적인 부분을 물어봤는데, 친절하게 잘 답변해 주셔서 많은 도움이 됐다.

- 추후 배포 및 운영 과정에서 일부러 부하를 많이 줘서 성능에 병목이 생기는 지점을 찾고 이 부분을 개선해 보는 경험, 과정 등을 어떻게 생각하시는지 여쭤보았는데 문제를 찾아 해결해본 경험은 신입에게 있어 도움이 될 것이라고 말씀해 주신 부분도 기억난다.

 

- 더 좋은 피드백을 많이 해 주셨는데 현재 기억이 잘 안 난다.. 이 부분은 생각나면 추가로 또 작성해 보겠다.

 

(3) 네트워킹 자리에 실무에서 일하고 계신 개발자분도 한 분 계셨는데 그분도 졸업작품을 실제로 배포해 보고 운영해보는 경험들이 신입 입장에서 도전적인 부분이고 좋은 경험이 될 것이라고 말씀해 주셨다.

 

(4) 추가적으로 현재 인프랩에서는 백엔드 개발자에 한해서 노드 스택 외에 자바 +  스프링은 채용하고 있지 않으시다고 한다.

 

 

 

 

5. 회고 

(1) 길었다면 길고 짧았다면 짧은 스터디 기간 동안 많은 부분을 알아갈 수 있었던 것 같다. 그 과정에서 자연스럽게 부족한 부분이 무엇인지, 어떻게 학습하고 프로젝트를 해야 할지 전체적인 방향성에 대해 감을 조금 잡은 것 같다.

 

(2) 다시 한 번 워밍업 클럽을 열어주신 인프랩 관계자분들, 열정적으로 모든 러너들을 이끌어 주셨던 백엔드 최태현 코치님께 감사드립니다!

댓글