EveryWare 프로젝트 회고록

Noome_·2022년 11월 29일
1

1. EveryWare

그룹웨어 서비스 EveryWare는 spring framework를 기반으로 mybatis, ajax 등의 기술들을 활용하여 진행한 나의 두번째 웹 프로젝트였다.

프로젝트 주제를 그룹웨어로 선택한 이유는 각자 역할 분담을 비교적 쉽게 할 수 있어서 담당한 역할이 잘 나누어 질 수 있다는 장점이 있기 때문에 선택을 하였다.

파이널 프로젝트이기 때문에 나름대로 진지하고 열정을 다해 프로젝트를 만들어야겠다는 마음가짐을 가지고 대략 한달 반 정도의 시간을 투자하여 프로젝트를 만들게 되었다.

이번 프로젝트는 첫 번째로 진행 했었던 아나바다 프로젝트와는 다르게 내가 맡게 된 기능도 꽤 있었고 형상관리자라는 담당 역할도 생겨서 더욱더 집중을 요하였기 때문에 꽤 힘들었던 시간이었다.

다음에서는 내가 프로젝트를 통해 어떤 것을 배웠고, 앞으로 이런 경험을 토대로 현업에서 어떤 자세를 가지고 일을 해나아가야 할지 그 방향성에 대해 설정해보고 치열하게 한달 반을 몰입했던 과거의 시간을 되돌아보는 시간을 가지려고 한다.

2.1 형상관리자

불과 6개월 전까지만 해도 형상관리 툴을 이용해서 개발자들과 협업한다는 것 자체가 매우 어색했다. 내 작은 실수로 팀원 모두에게 피해를 끼칠 수도 있다고 생각하니, 이번에 맡은 형상관리자라는 역할이 부담이 컸다.

가장 중요했던 것은 깃허브 담당을 하면서 내가 팀원들의 수정된 파일을 꼼꼼하게 체크하고 merge를 하여야 했던 것이다.

이렇게만 보면 파일을 병합하는 게 merge 버튼 하나만 누르면 되는 것이라 어려운 게 없어 보이기도 했다. 하지만, 프로젝트는 각자 맡은 기능을 구현하기에 바빠서 이번에는 이런 파일을 수정하겠다고 미리 말하는 것을 까먹는 경우가 있기도 했고 이로 인해 아나바다 프로젝트 때 팀원들의 수정 파일이 겹쳐서 문제가 있었던 적이 있었기 때문에 나는 막중한 부담을 느꼈었던 것이다.

이런 기억을 살려, 이번 EveryWare는 프로젝트를 본격적으로 만들기에 앞서서 각자 만들 파일을 미리 선언해두고 서로가 알 수 있게 노션이나 카톡에 올려둘 수 있도록 팀원들의 협조를 구하기도 했다. 다행히 팀원들도 잘 협조해주었고 덕분에 나는 큰 문제 없이 프로젝트를 하는 내내 파일 충돌이 나거나 협업 중에 큰 문제를 겪지 않았다.

형상관리자를 하면서 배운 것은 내가 진행한 프로젝트들이 git과 github를 사용한 것이 아니라, sourcetree라는 협업 툴을 사용한 것이기 때문에 git에 대해 더 공부가 필요할 것 같다는 생각이 들었다.

채용 시장에서 요구하는 기술 스택을 보면 git과 github는 거의 필수적인 기술스택인데, 이것도 잘 모르고 입사한다면 큰 낭패를 볼 수 있을 것 같다는 생각이 들었기 때문이다.

더불어, 이런 협업 시 발생하는 문제들을 어딘가에 잘 적어두면, 좋은 자산이 되어 나중에 같은 오류가 발생하게 되었을 때 빠르게 에러를 상기하고 문제 해결을 위해 쉽게 실행에 옮길 수 있을 것 같다는 생각이 들었다.

2.2 Notion 정리에 대해

아나바다 프로젝트에서는 개인 노션 페이지를 생성해서 그 프로젝트에 관련된 모든 내용을 적지 않고 그냥 단체 노션 페이지 내에서 간략하게만 프로젝트에 대한 정리를 했었다.

이 방법은 매우 불편했다. 그리고 무엇보다도 내가 구현했던 기능이 아무것도 기억에 남지 않는다는 단점이 있었다.

그래서 시간을 더 투자해서라도 과감하게 개인 노션 페이지를 만들어서 내가 날마다 구현했던 기능과 어떤 일을 했었는지에 대해 TO-DO를 만들어 기록하였고 프로젝트에 관해 떠오르는 아이디어나 구현 계획에 대해서도 빠짐없이 작성하였다.

그 결과, 프로젝트를 하나를 완성한 것만큼 내 이야기를 집합체로 한 노션 페이지를 만들 수 있었다. 무엇보다도 이렇게 정리를 통해서 내가 언제, 어떤 작업을 했는지 그리고 앞으로 프로젝트의 진행 상황과 구현할 기능은 어떤 방향으로 흘러가야할지를 가시적으로 한 눈에 볼 수 있다는 장점이 있었다.

아나바다 프로젝트를 했을 때에는 느낄 수 없었던 성취감도 있었고, 과거의 코드와 변경한 코드를 비교해서 작성을 해보니 어떤 코드를 지양하여 작성 해야할지도 파악 할 수 있었던 것 같다.

노션 정리를 하면서, 개발자는 협업도 중요하고 개발실력도 중요하지만 이렇게 기록을 통해 배운 것과 작업했던 것을 남겨두면 나중에 이직을 할 때도 아주 좋은 자산이 될 수 있을 것 같다는 것을 깨달았다. 아마 취업을 하고 실무에서 일을 하게 되면 일에 치이고 많이 바쁘기도 하겠지만, 이렇게 기록을 통해서 내가 어떤 것을 했는지 잘 작성해두어야겠다.

2.3 트러블 슈팅

사실, 노션 정리를 하면서 가장 도움을 받았던 것은 에러를 적고 그 에러를 해결한 방법을 기록해두었던 것이었다. 빈번하게 발생하는 에러는 작성하지 않아도 에러 메세지를 확인하면 어느정도 파악할 수 있었는데, 처음 보는 에러는 몇 시간을 구글링 해봐도 명확한 답이 안 나오는 경우도 있었다.

예를 들어, javamailsender 사용시 SSLHandshakeException 오류가 발생했었는데 정말 하루 종일 그 에러를 해결하기 위해 삽질을 했었던 기억이 있다. 에러를 만나면 에러를 해결하는 과정이 재밌기도 했지만, 그 에러가 구글링을 했을 때 답을 찾을 수 없는 에러일 때는 너무나 괴로웠다.

나는 특히 구글링을 했을 때, 주로 한글로 해결 방법을 적어둔 블로그나 글들을 많이 찾아보곤 했는데, 예상 밖에 Stack Overflow나, 영어로 된 깃허브 사이트에서 해답을 발견할 수 있는 경우도 있었다.

그걸 보고 나니, 개발자는 영어를 두려워해서는 절대 안 된다는 것을 깨달았다. 언젠가는 개발자로 해외 취업을 해보고 싶다는 소망이 있는데, 이런 식이면 해외 취업은 커녕 영어가 두려운 개발자가 될 것 같아서 이번 프로젝트에서는 억지로라도 영어로 된 블로그에서 해답을 찾아 해결했던 적이 많이 있었다.

사실 이런 글도 번역의 도움을 받을 수도 있고, 내가 사용했던 full calendar나 chart.js와 같은 api도 공식 문서에서 아주 친절하게 가이드가 나와있었기 때문에 계속 영어로 개발을 하는 것에 익숙해지고 부딪혀보아야 한다는 필요성을 느끼기도 했다.

에러를 만나는 것을 두려워 하지 말고 오히려 성장을 위한 발판으로 삼아서 적극적으로 문제 해결을 위해 파고들어야만 앞으로 부족한 이 실력도 점차 성장할 수 있을 것 같다.

3.1 아쉬웠던 점

결과적으로 나는 이번 프로젝트에서 기획 때 계획했었던 모든 기능들을 구현할 수 있었다. 아나바다 프로젝트를 할 때에는 게시판의 기본 CRUD를 진행하고 그 밖의 부가적인 기능들도 구현했지만, 댓글 기능을 제대로 구현하지 못해 아쉬움이 있었다.

그래서 이번에는 화면 구현을 빠르게 마친 후에 신속하게 백엔드 작업에 돌입했다. 매일 밤을 새고 해가 뜰 때까지 작업하면서 정말 다행히도 원하는 기능을 모두 구현할 수 있었지만, 빠르게 코드를 작성하려고 하다 보니 코드를 작성 할 때 성능적인 부분에서 고려를 못 했던 것 같다.

근태 페이지를 조회할 때, HashMap을 이용할 수도 있었던 부분을 급한 마음에 그냥 하나하나 select 해서 빠르게 기능을 구현하는 데에 중점을 두기도 했다.

그리고 SimpleDateFormat을 사용할 때도 시간이 부족할 것 같다는 생각에 원래 설계했었던 erd의 테이블을 수정하여 format 처리 된 시간과 format처리가 되지 않은 시간을 두개 다 테이블에 insert 한 것 등을 되돌아보면 비효율적이라고 생각되는 부분들이 많았다.

그래서 다음에 또 프로젝트를 하게 된다면, 클린 코드나 서버의 성능적인 부분을 고려해서 코드를 잘 작성할 수 있는 방법에 대해서도 미리 공부해봐야겠다는 필요성을 느끼게 되었다.

4.1 어떤 개발자가 될 것인가

비전공자로 개발에 도전한지 벌써 7개월이 지났다.
그 동안 공부를 하면서 너무 어렵기도 했고 수 많은 에러들이 원망스럽기도 한 적이 많았다.

하지만, 낙담하지 않았다. 앞으로 개발자로 일하게 되면 더 많은 에러를 만나야하고 죽을 때까지 공부해야 하는 것은 물론이며, 지금의 나는 7개월 전의 내가 html,css 코드조차 겨우 작성했던 내 모습을 돌아봤을 때 느리더라도 꾸준히 성장했기 때문이다.

어떤 개발자가 되어야할지에 대해 고민은 정말 많지만, 무엇보다도 내가 들어가게 될 회사에서 사람들과 잘 협업하고 싶다. 나는 프로젝트를 진행하면서 조장 역할을 해보지는 않았지만 팀원들에게 이것저것 시도해보자는 의견을 참 많이 냈었는데, 누군가 내 의견을 받아들여주거나 되려 반박해주면 내가 이렇게 조금씩이라도 성장하는 것 같아서 정말 기쁜 마음이 들었다.

개발을 하면서 작은 실수가 기업 입장에서는 큰 손해가 될 수 있기 때문에 협업이 중요한 것이라고 생각하지만, 팀원들끼리 협업하며 갈등을 해결하고 타인과 소통하는 과정에서 결국 내가 성장할 수 있고 이는 곧 내 자아성장의 중요한 발판이 되기 때문에 협업이 중요한 게 아닐까라는 생각이 든다.

그리고 꾸준히 공부하는 사람이 되고 싶다. 개발 트렌드는 어떤 산업 분야보다도 빠르게 변화하기 때문에 이 일을 계속 하는 한, 꾸준히 공부해서 실력을 키워 나가야 한다고 한다. 내 스스로조차 모르는 것 보다도 안 하는 게 너무 싫기 때문에 모르는 거라면 결국 알게 하고, 아는 것은 분명 잘 할 수 있는 사람이 되기 위해 노력할 것이다.

profile
철수네 개발자

0개의 댓글