본문 바로가기
회고

2022年 1月 개발 실습생 인턴 회고

by M개발자 2022. 2. 4.
반응형

나에게 뜻깊은 기회가 생겨 한달동안 인턴을 하게 되었다.

백엔드 개발자라는 포지션만 정하고 해본게 node.js밖에 없어서 노드로만 개발을 하던 나에게 스프링을 배울 수 있는 기회와 실무 프로젝트 경험을 가지게 되었다.

이 회고는 마지막 프로젝트 발표를 하면서 함께 발표했던 회고이다.

기록하는 걸 좋아하면서 왜 인턴 생활 하면서 기록하지 않았는지... 내 자신이 실망스럽지만 한 번 적은 일기에 많은 것이 담겨 있으니 그거에 만족하기로 했다.

 

첫 문단은 감사한 마음과 한국인의 정신을 담아 인사로 시작했는데 프로젝트 시연 후 회고하는 거라 인사가 뜬금없단 사실을 발표 후에 알았다. 🥺

 


실습 흔적!

깃허브 리포지토리

Notion


2022年 1月 회고

 

만나 뵙게 되어 반갑습니다. 먼저 저에게 인턴의 기회를 주셔서 감사합니다. 이번 인턴을 통하여 소중하고 갚진 경험을 얻게 되었습니다.

모든 게 나에겐 처음

저는 이번 인턴을 통하여 많은 것을 처음 해보았습니다. 백엔드와 프론트엔드를 나누어 팀 프로젝트를 진행한 것도 처음이었고 요구사항에 맞추어 기획과 디자인 및 개발하는 것도 처음이었으며 초면인 사람들과의 팀 프로젝트, 그리고 제일 초면인 스프링으로 개발을 진행한 것을 포함하여 많은 것을 접할 수 있는 기회였습니다.

저는 백엔드 개발자를 꿈꾸고 있으며 node js 서버 개발자를 목표로 하고 있습니다. 저는 단순히 처음 접한 것이 node js여서 계속해서 node js로만 개발을 했습니다. 그래서 아직 배워본 적 없는, 접해본 적 없는 스프링으로 개발을 한다는 건 저에게 굉장히 부담스러운 일이었습니다. 자바를 배우긴 했으나 @를 붙여 서버를 구현한다는 게 매우 생소했기 때문입니다. 그래도 한 번도 접해본 게 아니라고 해서 낙담하지 않고 잘하고 싶은 마음에 인프런에서 스프링 강의를 들어 기초를 잡았습니다. 확실하게 잡은 것은 아니지만 스프링을 어느 정도 이해할 수 있는 단계가 되었습니다.

 

+) 블로그에 작성하면서 생각한 내용

매사에 자신있게 행동하는 게 저의 모티브인데 자신있게 마주할 수 없다는 점에서 이번 일이 부담스러웠습니다. 하지만 하면 한다는 게 '나'이고 하나를 배우면 열을 이해하도록 노력하는게 '나'이기에 기죽지 않았습니다. 그렇지만 함께 개발하는 친구들이 너무나 높은 실력을 가지고 있었습니다. 제가 감히 따라갈 수 있는 정도가 아니었고, 스프링 관련하여 저에게 물어보면 알지 못하는 지식 분야라 대답하지 못할 때면 자신감이 사라졌습니다.

내가 스프링으로 프로젝트를 한다고 ??!

프로젝트 기능은 단순하게 보면 CRUD를 구현하는 것이었습니다. 저는 이 중에서 계정 조회와 삭제를 맡았습니다. 계정을 생성하거나 수정할 때는 해당 계정이 로그인이 되는지 체크해야되는데, 그 로직이 저에겐 감이 잡히지 않아서 그 부분을 피하는 조회와 삭제를 선택하게 되었습니다. 그런데 계정을 조회하는 부분에서 예상과는 다르게 많은 시간을 소요하게 되었습니다. 계정 조회 및 필터링을 하는 기능에게 주어진 시간은 4시간이었지만 저는 3일을 소요하여 기능을 구현하게 되었습니다.

먼저 3일이나 소요하게 되었던 저의 첫 번째 행동은 플랫폼과 환경으로 필터링한 계정을 조회하는 로직을 번거롭게 작성한 것입니다. 조회 api에서는 전체 조회와 플랫폼만 조회, 플랫폼과 환경을 함께 조회하는 3가지 기능을 수행할 수 있습니다. 한 메소드안에서 3가지 기능을 수행하게 할 수 있는지 감이 잡히지 않아 이 세가지 기능을 파라미터 별로 메소드를 작성했었습니다.

그리고 두 번째 행동은 시간 복잡도에 상관없이 findBy 메소드를 사용하여 로직을 구현했습니다. 모든 것이 처음이다 보니 쿼리문을 작성하지 않고 메소드를 사용하여 값을 찾는 게 신기했습니다. 그래서 사용해보고 싶었다는 단순한 이유를 가지고 기능을 구현했었습니다. 그리고 프로젝트에서 쿼리문은 어디에 작성해야하는 지 잘 몰라서 메소드를 사용하여 코드를 작성하게 되었습니다.

지금 생각해도 그 때의 저는 많은 고민을 통해 코드를 작성했었지만 많이 번잡하고 더러운 코드를 작성했던 거 같습니다. 그래서 멘토님의 도움으로 QueryDSL를 접하게 되었고 QueryDSL을 통하여 쿼리문을 작성하여 한 메소드 안에서 필터링하여 계정을 조회할 수 있게 되었습니다.

제가 개발을 좋아하는 이유 중 하나인 요구하는 값을 프로그래밍을 통해 얻었을 때가 대부분을 차지합니다. 그 중에서도 db에서 쿼리문을 작성하고 요구한 레코드들이 나올 때가 제일 기쁩니다. 그래서 QueryDSL을 통하여 db를 조회하여 제가 요구한 값이 한 번에 나오게 되어 3일 동안의 고민이 모두 해결되었습니다.

협업을 배워가는 과정

친구들끼리 프로젝트를 진행하더라도 최대 2 명이서 개발한 경험밖에 없습니다. 그래서 누군가 제 코드를 피드백 해준다는 기회 조차 가지지 않아 제멋대로 짠 경우가 대부분입니다. 그래서 프로젝트를 진행하다 보면 효율적인 코드보다는 일단은 돌아가게 짜자라는 생각을 가지고 짜게된 경우가 많습니다.

그런데 저는 기능 별 이슈를 생성하고 이슈에 대한 브랜치를 파서 작업을 한 뒤 풀 리퀘스트를 올리고 approved될 때까지 기다린 적은 처음이었습니다. 그래서 프로젝트를 통해 누군가 제 코드를 피드백하여 코드가 효율적이게 바뀌는 게 협업에 필요한 부분이라는 걸 알게 되었습니다. 자신이 맡은 기능은 자신만이 로직을 알게 되는데 코드 리뷰를 통하여 상대방의 코드를 볼 수 있고 그 코드에 대해 자신의 의견을 덧붙여 코드가 더 효율적으로 바뀔 수 있게 되니 말입니다. 물론 저는 프로젝트를 진행하면서 코드 리뷰를 해보지 않았지만 코드 리뷰를 받는 것이 좋았습니다.

그래도 하나는 하고 가야지

저는 이슈 산정을 하고 역할 분담을 할 때 배포를 선택한 게 아니라 이전부터 배포는 내가 맡아야겠다고 생각했습니다.

스프링에서 한 건을 할 수 없다면 적어도 경험해본 적 있는 배포라도 해야겠다고 생각했습니다. 물론 스프링을 배포한 적 없지만 aws를 사용하여 배포하는 것은 동일하니 배포에 대한 욕심이 생겼습니다.

배포를 하면서 처음 접한 것과 경험해 본 것을 처리하는 시간은 꽤 차이가 났습니다. java 관련된 모듈을 다운 받고 깃 클론을 받는 등 기초 작업은 경험해 본 적이 있어서 수월하게 진행되었습니다. 그런데 빌드 후 구동하는 작업에서 꽤 지체되었습니다. 처음 시도는 우분투에서 빌드 후 .jar 파일을 실행 시키는 것이었는데, 빌드 과정에서 ec2가 멈추는 변수가 발생해서 다른 방법으로 시도를 했어야 했습니다. 인터넷에 검색해 본 결과 다른 개발자들도 로컬에서 빌드 후 그 파일을 업로드하는 방식으로 진행한다는 것을 알게 되어 로컬에서 빌드 후 .jar 파일을 풀 받는 방식으로 실행하게 되었습니다.

스프링으로 기능 개발을 했던 2차 스프린트 때는 조금 많이.. 힘들었지만 배포를 하는 3차 스프린트 때는 모든 것이 수월하게 진행되는 기분이었습니다.

부족한 게, 모르는 게 자랑은 아니지만

기능 개발을 할 때 조회 기능을 주어진 시간보다 초과되어 구현하였습니다. 이 때 저는 아직 스프링에 대해 잘 모르니깐 시간이 더 소요되는 건 당연한 거겠지 라는 생각으로 계속해서 한 기능만 부여잡고 있었습니다. 하지만 제가 기능 구현을 하는 건 팀 프로젝트의 일부인데 팀원들에게 시간 내에 개발을 하지 못해 더 시간이 필요하다는 말 없이 개발에 임했었습니다. 이 행동이 팀 활동을 하는데 있어 지장이 생기는 행동이란 걸 알게 되었습니다. 앞으로의 팀과의 협업 과정에서 시간 내 해결하지 못한다면 어떤 문제가 있어서 시간 내에 하지 못하였고 얼마의 시간이 더 필요한지 얘기해야겠다고 생각하게 되었습니다.

그리고 인턴을 하면서 저는 아직 취업하기에는 많이 모자란 걸 깨닫게 되었습니다. 저는 이번 프로젝트를 하면서 깃허브를 제대로 사용하게 되었고 선배들이 왜 깃허브를 사용해보란 걸 알게 된 계기이기도 합니다. 저는 커밋만 열심히 해보았지 이슈를 생성해서 작업해 본 경험은 없었기 때문입니다.

또 저는 낯을 많이 가리는 편인데 말주변도 없어서 단체 생활을 하게 될 경우에는 모두와 어울려 지내기 위해선 말솜씨가 필요한 것을 느끼게 되었습니다. 그래서 만약 제가 능력을 한 개 가질 수 있게 된다면 모든 것을 궁금해하는 능력을 가지고 싶어졌습니다. 모든 걸 그냥 받아들이고 이해하려 하는 습성 때문에 상대방에 대해 궁금한 점을 질문하고 싶어도 할 말이 없기 때문입니다. 아마 궁금한 게 많아진다면 많은 사람들과 빠르게 친해질 수 있지 않을까 생각됩니다.

그래서 인턴 경험 없이, 제대로 된 팀 프로젝트 경험 없이 취업을 하게 되었다면 모자란 저를 많이 자책했을 거로 생각됩니다. 흔히 선생님들께서 취업하면 모두 다 서툴러서 결국엔 자책으로 돌리게 된다는데 제발 그러지 말라고 말씀하셨던 적이 있습니다. 저는 자만심이 가득해서 그래도 회사 들어가서도 잘 하지 않을 거란 반박된 생각을 가지고 있었지만 준비되지 않은 나는 결국엔 자책으로 되돌아 온다는 걸 느끼게 되었습니다.

이번 인턴을 통해서 저는 성장할 수 있었고 미래의 내가 더 성장할 수 있는 밑바탕이 되는 값진 경험을 쌓을 수 있게 되었습니다.

감사합니다

모든 게 처음이었던 저는 누구보다 더 많은 경험을 쌓을 수 있는 기회가 되었다고 생각합니다. 이번 인턴을 통해 프로젝트 진행 방식을 알 수 있게 되었습니다. 기획을 구체적으로 작성한 후에 개발하는 것부터 시작하여 소통의 중요성을 알게 되었습니다. 보여지는 소통은 많이 없었으나 프로젝트에 관한 이야기는 나눌 수 있을 만큼 충분히 나누고 의견을 수렴하여 진행했습니다.

그리고 개발 프로젝트 진행 방식을 알 수 있게 되었습니다. 저는 프로젝트를 진행하더라도 제멋대로 커밋하고 개발을 했었는데, 이번 기회를 통하여 git flow를 접하게 되고 이슈 생성, 풀 리퀘스트, 코드 리뷰를 접할 수 있게 되었습니다. 경험이 없어 몰랐던 저를 이끌고 나아가 주셔서 감사합니다.

멘토님을 통해, 친구들을 통해 스프링을 배울 수 있게 되었습니다. 저는 모르는 게 있다면 질문을 하기 보다는 직접 찾아서 해결하는 편입니다. 그래서 업무 시간은 동일한데 친구에게 물어볼 경우 그 친구의 시간을 뻈는 거 같아 처음에는 질문을 주저했지만, 검색하는 것보다 친구에게 물어보는 게 훨씬 빨리 진행될 거라 생각했고 친구도 충분히 아는 내용이었기에 마다하지 않고 알려줄 수 있을 거라는 생각 하에 질문을 주저하지 않게 되었습니다. 그리고 제 코드를 더 나은 방향으로 나아갈 수 있도록 멘토님의 코드 리뷰를 통하여 스프링의 코드 구현 방식을 접할 수 있게 되었습니다.

 


다시 글을 정리하려고 했는데 넘 길게 써서 읽다가 포기했다. 

이거 언제 쓰고 발표했니...??

제 발표를 들어주셔서 감사합니다. ㅠㅠ

반응형

댓글