It's Ward

스프링부트 개발자 이건 고민 해야 돼 - 개인 공부 그리고 프로젝트와 포트폴리오 (준비) 본문

백엔드

스프링부트 개발자 이건 고민 해야 돼 - 개인 공부 그리고 프로젝트와 포트폴리오 (준비)

I'm ward 2022. 7. 1. 18:57

백엔드 프로젝트, 포트폴리오에 대해 고민하다 검색하다보면, 다양하지만 딱 와닿는 포스팅이 많지는 않았다. 

곧 있으면 나도 하나의 프로젝트를 진행해야 할 것이다. 프로젝트는 누군가에게 보여주는 것도 중요하지만 지금까지 공부해 왔던 것들을 정리하고 나의 것으로 만들면서 나를 백엔드 개발자로 성장하기 위한 방법일 것이다.

물론 내가 주니어 개발자가 되기 위한 좋은 포트폴리오가 될 수도 있을 것이다.

내가 채용 담당자라면 어떤 사람을 뽑을 것인지도 고민해봐야 할 것이고, 나는 무엇을 목표로 프로젝트를 진행할 것인지를 선택해야한다. 단순하게 웹 / 게시판 하나 만들어 보지뭐~ 라고 생각하는 순간, 개인적으로 생각하는 그저 그런 재미없는 사람이 되버릴 것이다.

이번 게시글은 주니어 개발자가 되기위해 개인 공부와 프로젝트는 어떤걸 준비할 것이고 왜 그렇게 선택했는지에 대한 내용이다. 다양한 방법들이 있겠지만, 필자가 찾아보고 생각한 방법에 대해서 작성해 보았다.

개인 공부와 프로젝트 주제

1. 웹 사이트 개발(새로운 아이디어)
2. 하나의 게시판 / 쇼핑몰 제작
3. 클론코딩에 덧붙히기
4. RESTful API 서버 개발
5. 클라우드 기반 자동 배포
6. 라이브 서비스
7. 다양한 라이브러리 사용

의사결정

개인 공부

1. 우선 클론 코딩을 진행할 것이다. 클론 코딩 중간 중간 모르는 부분은 당연하게 찾아보며 공부한다.
전체를 바라보는 시선이 중요하다. 코끼리의 한 부위씩 만져서는 이게 코끼리인지 물 호스인지 바위인지 알 수 없을것이다. 
개인적으로 따로따로 공부했을 때에는 느낄 수 없었던 부분을 클론 코딩으로 웹 애플리케이션이라는 것이 어떻게 동작하는지, 실무에서는 어떤 방식을 선택하고 있는지를 맛볼 수 있고, 그동안 공부했던 부분들이 정리되는데 도움이 될 것이다.
클론 코딩 완성을 목표로 하는 것이 아닌 리펙토링을 통한 각 구성들의 의미를 알아보고, 몇몇 기능들 중 레거시한 코드들을 조금씩 변경해 나가는 좋은 경험이 될 것이다.

2. 공부한 내용을 바탕으로 혼자서 게시판을 만들어 볼 것이다.
클론코딩이 끝나고 나면 게시판을 구현해 볼 것이다.
웹에서 수학으로 따지면 사칙연산 이라고 할 수 있는 CRUD를 이해하는 데 도움이 될 것이며, 추가로 기능을 확장하기도 하고, 클론 코딩에서 배웠던 내용들을 기반으로 백지 상태에서 만들다 보면 자연스럽게 내 것이 될 수 있을 것이다.
필자는 처음 스프링을 진행할 때, 김영한님 강의를 보면서 이해했다고 생각했지만, 막상 백지 상태에서 만드려고하니 어려웠고, 시간이 많이 걸렸다. 다만 반복적으로 만들면서 더 깊게 이해할 수 있게 되었고, 조금 더 레벨업 하는 기분을 느낄 수 있었다.

3. 스터디에 들어가 함께 공부할 것이다.
혼자 공부를 하게되면 스스로 핑계를 대며, 시간만 잡아먹고, 원하는 목표까지 나가지 못하는 경우가 많다. 또한 다양한 사람들과 함께 진행하며, 동기부여가 될 수 있고, 다양한 코드들을 경험할 수 있을 것이며, 발표를 하는 스터디라면 내 의견을 상대방에게 전달 할 수 있는 연습과 협업, 코드리뷰를 비슷하게 연습할 수 있을 것이다.

 

개인 프로젝트

클라우드 기반 RESTful API 서버를 개발해 볼 것이다.

1. 프론트엔드를 최소화 시켜, 백엔드에 더 집중 할 수 있다.
보기좋은 떡이 맛이 좋다라는 말처럼 나도 다양한 기술과 화려한 프론트엔드가 추가된 프로젝트 해보고싶다. 하지만 그건 내가 지금 집중해야 하는 부분은 아니다. 나는 백엔드 개발자로서의 성장이 필요하고, 눈앞의 화려함을 쫒기엔 나의 실력이 부족하고, 증명해 낼 수없다. 그렇기 때문에, 더 집중할 수 있는 프로젝트로 구성해야하는데, 단순한 CRUD 프로젝트를 만들어보고싶진않다.

Spring Boot를 이용하면 간단하게 API 서버를 만들 수 있다. 하지만 이렇게 간단하다면, RESTful API 개발자들을 뽑을 이유가 없을 것이라 생각한다. 아직 많이 찾아보지는 못했지만, 해당 내용들을 잘 정리하고 준비를 할것이다. 또한 단순하게 RESTful한 문법에 맞춰 프로그램을 만드는게 아니라, 배포 관리 / 트래픽 최적화 / 테스트 방법 / 멀티 모듈 등을 적용해볼 것이다.

2. 실무에서 사용되는 프로그램
API 를 이용한 프로그램은 백엔드에서 기본이라고 생각한다. 하지만 그 기본이 너무 기본으로 공부하면 곤란할 것이다. 실무에서는 어떻게 RESTful API를 적용하는지 알아 볼 것이다.
또한 새로은 기술들도 사용해봐야 조금 더 익숙해지고, 경험이 될 수 있도록, 실무에서 사용하는 프로그램과 서비스들을 찾아  볼 것이다.  취업 관련 기업 공부도 하다보면 자연스럽게 실무에서 무엇을 요구하는지 조금 더 알게 될 것이고, 그것들을 바탕으로 공부를 할 예정이다.  툴을 적절하게 잘 사용할 수 있는것도 나만의 무기라고 생각한다. 

3. 이후 팀 프로젝트에서도 적용할 수 있다.
내가 이후 프로젝트를 진행한다면 분명 해당 기술을 적용할 수 있을 것이다. 이후 프로젝트에서는 더 향상된 기능과 많은 것들을 배우기 위해서는 이전에 공부한 내용을 적용할 수 있으면 훨신 더 좋을 것이다라고 생각했다. 물론 웹페이지를 만드는 것도 어느정도 재사용이 가능하겠지만, RESTful API는 한번 구성해 두면 조금씩만 업그레이드 하고 잘 사용할 수 있을 것이다.

 

팀 프로젝트

1. 라이브 서비스 기반의 웹 서비스를 만들 것이다.
게시판이나 쇼핑몰보다 비교적 동적인 라이브 서비스을 다뤄보며 서버, 실시간 배포, 로그 관리 등 실무에서 어떤 부분을 더 고려해야하는 지 예외사항은 어떤 것들이 있는지 간접적으로 느껴보고 싶다. 어려운 일이 될 것 같지만, 제대로 운영하겠다는 목표를 잡으면 더 정신차리고 공부할 수 있을 것이다.  

2. 협업 툴을 이용하여 공부하고, 코드리뷰를 통해 협업에 대해 알아갈 것이다.
현재 가장 해보고 싶은 부분이고, 내가 가장 부족한 부분이다라고 생각한다. 개발은 혼자하는 것이 아니다. 다른 사람들과의 협업, 원할한 의사소통과 코드리뷰를 통해 부족한 점을 더 알아가고 보완하고 싶다. 부족한 부분은 숨기지 않고 최대한 연습할 수 있을 때 보완해가며 멋진 주니어 개발자로 성장하고 싶은 욕심이 항상 있다.

3. 프론트 엔드와 결합한 애플리케이션을 개발할 것이다.
백엔드 프로젝트만 진행하다보면 프론트 엔드와 협업할 때 필요한 부분을 놓치고 갈 것 이다. 2번과 마찬가지로 협업함에 있어 큰 걸림돌이 될 것 이다라고 판단되었다.
그리고 기능도 기능이지만, 프론트 엔드와 결합하면 정말 재미있을 것 같다. 내가 구현한 프로젝트들이 살아 숨쉰달까.. 사실 잘 모르겠다. 이 부분은 나의 영역은 아니지만, 이왕 만드는거 멋지게 보이고 싶은 욕망이 있다. 

 

시간과 목표

공부를 열심히하고, 최선을 다하는 것은 중요하다. 다만, 올바른 방향을 찾아 가는것도 굉장히 중요하다고 생각한다. 열심히 뛰어간 길이 옆으로 가는길이라면 그것도 하나의 길이겠지만, 목표와 조금 멀어질 수도 있을 것이다. 
시간이 충분하다면 더 깊게, 다양한 프로젝트들을 통해 공부해 볼 수 있을 것이다. 하지만 무한정 공부할수는 없는 일이고, 내가 공부했던 모든 것들이 취업한 회사에서 사용되지 않을 것이다.

그러므로, 다음과 같이 준비해 기본기는 탄탄하게 가져가면서 전체적인 흐름을 볼 수 있는 주니어 개발자가 되고싶다. 이런 목표를 잃지 않고 노력한다면 멋진 개발자가 될 수 있을거라 스스로 믿고있다.
목표 시간에는 무조건 맞춰 개발해 최소 요구사항은 맞출 수 있도록 할것이다. 이후 대대적인 기능 수정이 있을 지라도.
기업에서는 정해진 시간은 반드시 지켜야한다. 이후 수정이 들어간다 하더라도 어떻게든 기한 내에 납품을 진행하여야 기업의 손실이 적을 것이다. 회사에서의 개발은 더이상 지금처럼의 공부가 아니다.    
어려운 부분들은 당장 처리하기 보다, 다시 한번의 기회라고 생각하자. 나중에 해당 프로젝트나 비슷한 부분이 생긴다면, 문제가 생겼던 부분을 빠르게 체크하고 업그레이드 할 수 있도록 할 것이다.

 

 

사실 뭐가 정답이다 라고 하기엔 개인별로 공부 방법도 너무 다르고, 환경도 다릅니다. 이 글은 제 경험과 앞으로 진행할 부분에대해 방향을 정하는 글입니다. 백엔드 개발을 준비하면서 자신만의 목표와 방향을 정하시지 못한 분들께서는 이런 방법도 있구나 하고 좋은 참고가 되셨으면 좋겠습니다. 감사합니다.

Comments