일단 나는 좀 부끄러운 말이지만 난 4학년 졸업작품 전까진 팀프로젝트를 해본 적이 없었음..
그래서 돌이켜보면 굉장히 서툰 면이 많았던 것 같음.
예를 들면 백엔드에서 받아오는 API들이 전혀 소통이 안된 상태로 설계되었기 때문에
막상 프론트엔드인 내가 사용하는 과정에서 필터링 해야될 것들이 매우매우 많았음..
그 외에도 좀 불편한 일도 있었고,, 그냥 좀 서툴었던 것 같음
그렇지만 첫번째 프로젝트 그리고 무려 1년동안이나 진행한 대형 프로젝트를 성공적으로 잘 끝낸 것 같아 기분이 좋음
이제부터는 걍 어떤 일이 있었나 썰 푸는 느낌으로 쓰려고 함 ㅋㅋ
나는 당시 3학년에는 프론트엔드와 백엔드를 고민하고 있었음.
특히나 자바스크립트와 자바를 같이 공부하고 있었고 (그 전에는 파이썬을 주로 사용)
자바스크립트로 웹 게임들을 만들면서 좀 흥미를 가지고 있긴 했음.
그러나 어느정도 전체적인 과정을 봤을 때, 또 내가 어떻게 성장해나가야 할까를 생각했을 때
그리고 최우선적으로 취업을 생각했을 때!
백엔드로 전향하는게 맞다는 생각을 했고, 3학년이 끝날 무렵에 확정 지은 상태였음.
그러나 내가 씹아싸다 보니...
졸업작품 팀을 포지션에 따라 팀을 정한게 아니라
기존에 친했던 친구들과 하게됐음.
근데 문제는 3명 중 3명 모두가가 백엔드 지망...
취업 포트폴리오라고 한다면 솔직히 보여주는 프론트가 없다해도
여러 설계라던지 그 과정에서 배운 것들을 명명백백히 설명할 수 있을 시에는 문제가 없다 생각한단 말임 (물론 이미 현업 개발자들은 그렇게 생각 안하실 수도 있지만 ㅜ)
근데 졸업작품은 보통 어떠한 성과물로서 하나의 완성된 서비스를 보여주는게 보통이니까..
프론트를 아예 배제하고 할 수가 없었음 아니 당연했음
그래서 오랜 회의 끝에 결론은 내가 프론트를 담당하기로 했다,,, ㅠㅠ
특히나 웹을 할거냐 앱을 할거냐 의견이 꽤 갈렸었음
일단 그렇게 포지션을 정했고, 이제 주제를 정해야 할 때가 왔음.
수원역 카페에 자리잡은 후 진짜 여러 방면에서 주제를 정했음 ㅋㅋ
지금은 생각나는게 딱히 없긴 한데 나는 초반에는 졸업작품이다보니 앱이 제일 노력 가성비가 좋다 주장했던 것 같음.
그러나 백엔드 친구들이 앱에 대해 아예 몰랐던 나머지 (학교에 안드 수업이 있었는데 이것도 안들었었다고함.. 진짜 모르는 상태)
결론적으론 웹서비스를 생각했던 것 같음.
그런데 또 열심히 고민해봐도 매칭 서비스라던지 흔하디 흔한 주제로만 흘러가는거임...
어쩔 수 없이 여러번 논의를 했고, 최종적으로는 정해졌던 주제는 이거였음.
GPT API를 활용해서 스픽 어플처럼 영어 회화 웹을 만들어보자!
하.. 전설의 시작이였음.
처음부터 사실 난 주제가 썩 마음에 들진 않았음.
이유는 당연히 난 영어를 못하니까
근데 어떻게 교육자의 입장에서 서비스를 만들 수 있나!!!
이건 근데 내 생각이였고, 더 중요한건 교수의 생각이였음.
결국 주제를 고르는 건 우리지만 평가는 교수가 하기때문
교수님은 초반에는 음 괜찮을 것 같다~ 이러시더니
나중에 스픽 같은 유사 어플들을 소개시켜드리니
이걸 웹으로 만들면 이점이 있어요?
기존 어플들이랑 차이가 뭔데요?
심지어 스픽은 너네보다 좋은 GPT 4.0 버전 쓴다던데요?
팩폭을 심하게 때려맞아 버렸다.
맞는 말이였다. 솔직히 상용 앱이랑 퀄리티도 차이날 뿐더러 어플이라는 접근성, 그리고 이미 기존 어플들은 상상할 수 있는 모든 서비스들을 이미 만들어 두었다...
그래서 우리 웹은 더욱이 경쟁력이 없는 것이였다.
어떻게든 챙겨보려 GSM 기능을 찾아서
우리는 전화로 하는 영어 회화다! 를 컨셉으로 잡아봤지만
솔직히 ㅋㅋ 구리긴해 그래서 개강하고 한 3주정도를 날린 듯.
너무 답이 안나오다 보니 교수님한테 상담 요청
Yolo 프로젝트에 GPT를 섞는 것은 어떻냐는 답변을 받았음.
꽤 괜찮아 보여서 이거로 결정!
우리는 GPT가 추천해주는 요리 레시피 + YOLO 식재료 인식 어플로 주제가 정해졌음.
그럼 뭐 정해졌다 쳐 그럼 내가 이제 뭐해야하지?
나는 안드도 군대 가기 전 잠깐 해봤던 것 뿐이고 아는게 없었음..
어쩔 수 없이 주위 친구들이 어떻게 하나 지켜봤고, 플러터를 하는 친구를 발견.
처음에는 나도 크로스 플랫폼을 사용해서 리액트 네이티브를 할까 생각도 했지만
너무 어려워 보이기도 하고 관련 자료도 많이 없고 무엇보다 페북이 유기했다는게..
배움에 가치를 매기는건 없다지만 이건 안하니만 못하다는 게 확 느껴졌음
그래서 플러터를 배우기로 했고 코딩애플님의 강좌를 결제해서 봤음
코딩애플 ㅋㅋ 강의가 개웃김 나름 재밌게 또 쉽게 배운 듯 함
근데 아니 기초 강좌 하나보고 어떻게 처음하는 언어에 처음하는 앱 제작을 할 수 있겠냐고...
백엔드 친구들은 신나서 막 만들고 기능 어떤거 넣을까 이건 어때 이러는데
나는 당장 뭔지도 모르겠고.. 뷰도 만들어야 되는데 api는 어떻게 하는지도 모르겠고...
그야말로 총체적 난국이였음.
이 과정에서 백엔드와의 소통이 약간 미스가 났던 게 많은 듯
나는 지금 상황이 너무 어색하다보니까 내가 어떻게 뷰를 설계할 것이고 너는 이것을 주면 된다! 같은 커뮤니케이션이 부족했음
그래서 백엔드쪽은 애초에 프로젝트 이전부터 하던 것이니까 뚝딱뚝딱 만들어 냈지만
나는 계속 헤매고 있었다..ㅠ
그러나 나는 해냈음.
주제 발표 때, 다른 교수들이 이거 너무 기능이 많은거 아니에요? 했지만
모두 만들어내버렸다...
물론 백엔도 GPT 로직을 갈고 갈아서 최적화 시키는 등 같이 고생했지만
나는 뷰도 같이 만들어야된다고!! ㅋㅋ
(백엔 자체만 보면 CRUD 쪽을 만들면 되지만 나는 API 기능 구현에 UI UX는 아예 내가 맡고 있다보니까 내가 만드는 시간이 더 많을 수 밖에 없긴 했다)
그래서 완벽하게 1학기를 A+ 로 마무리
심지어 성적장학금까지 타버렸다..
그러나 이건 비극의 시작점이였다..
2학기 개강하자마자 교수는 꼬투리를 잡기 시작.
기존에 말한 주제에서 중간에 추가되었던 기능은
STT를 활용해서 다음, 이전 같은 명령어로 손 안대고 레시피를 넘기는 기능 이였음.
근데 이게 성능상의 이슈가 있음
현재 모바일 STT는 단기간에 딱 듣고 그거만 Text로 바꿔주는 거만 지원함
다른 말로하면 긴 시간동안 듣고있는게 불가능하다는거임
그럼 요리중에 STT가 꺼져버리면 안되니까
어쩔 수 없이 STT를 주기적으로 계속 실행하도록 설계했음
문제는 이게 꺼졌다 켜지는 과정에서 성능 이슈가 발생한다는 거임..
자세한 설명은 나중에 글로 쓰도록 하겠음.
아무튼 이게 해결 안된다고 아무리 주장해도 교수는 듣질 않음
심지어 "너가 갈피를 못잡고 못하는 것 같은데?" ㅇㅈㄹ
발표 자료에서 진짜 열심히 20분을 그 성능 이슈에 대해 설명했는데
너가 못하는 거다 ㅇㅈㄹ을 박아버리니까 후...
화가 나긴 하지만 참아야지 뭐,,, 상관인데,,
아무튼 그래서 그냥 그 기능을 빼기로 하고 GPT에 집중하기로 했음.
GPT로 부터 받은 레시피를 저장해놓고 수정하거나 써먹는 식으로
실제로도 그게 있어서 평가 때 꼬투리 잡히는 것 보다는 빼는게 맞기도 했고..
지금 생각해보면 내가 감정적이였을 뿐, 옳았던 결정 같긴 함
아까 말했을거임
백엔드와의 커뮤니케이션이 부족했다
이게 이제와서 극에 달해졌음
1학기때는 마이페이지 및 회원 기능을 제외한 모든 것을 해냈었는데
이게 2학기때 만들려고 하니까 여태 묵혀있던 문제점들이 하나 둘 씩 튀어나오기 시작했음.
이것때문에 좋아요 로직, 마이페이지 로직 등등 모든 곳에서 두번 호출 하는 식으로 예외처리가 필요해졌음..
물론 이건 친구들이 노력해도 안되서 어쩔 수 없긴 했지만
뭐 하나 할때마다 오류가 나면 항상 이쪽 문제라 코드를 계속해서 수정해줬어야 해서 가장 인상 깊은 문제였음
계속 말하지만 커뮤니케이션 부재로 인해 DTO에 너무 많은 정보가 들어있었음.
그래서 파싱하는게 매우매우.. 진짜 매우매우 힘들었다..
어느정도냐면 계층구조가 a -> b-> c -> d.foodName 이렇게 호출해야하는 수준
어쩔수 없었던게 내가 헤매던 동안에도 백엔드 개발은 이루어져야 하니까..
내가 조금 익숙한 분야였다면 절대 이렇지 않았을 것이라고 생각함.
백엔드 쪽에서도 일단 개발은 해야하니 아무것도 완성 안됐지만 기능만 어느정도 입맞춰진 상황에서
프론트 맞춤형으로 DTO를 짠다는 게 쉽지는 않기 때문에.. (심지어 둘이 프론트 경험이 없다)
이해는 하다만 좀 쉽지 않긴했다..
이게 친구가 방학동안 좀 손을 본다고 API 스택을 약간씩 수정했었음.
근데 ㅋㅋ 프론트를 아예 모르다보니까 백엔드 위주로 리팩터링을 진행한 것
덕분에 내 코드들은 다 망가져버렸고, 어쩔수없이 또 전체적으로 수정을 진행했었음.
아무말 안하긴 했지만... 나중에 나도 백엔드 설계를 한다면 API 스택은 진짜 최대한 건들지 않기로 다짐했었음
진짜 파급효과가 너무나도 크다,,,
다음 프로젝트는 아마 다른 친구랑 게시판 프로젝트를 백엔드로 진행할 것 같은데,
그때에는 진짜 이런걸 조심해야겠다 생각했음.
1학기 중간 평가에서 지적받던 많은 기능들을 구현해냈고
에러가 솔직히 찾으면 없진 않겠지만, 현재 시점에선 없게 잘 만들었다...!!
그래서 다음 달 1차 심사 때 무난히 통과할 것 같다는 얘기도 있다..
(물론 아직 모른다)
너무 고생했지만, 그만큼 배우는 것도 있었고
나는 의도치않게 프론트와 백엔드를 둘다 하는 풀스택이 되어버렸다.. (팩트 둘다 못함)
아마 이걸 백엔드 포트폴리오로 내긴 힘들 것 같고, 개인 프로젝트 얘기를 할 때 끼워팔수있는 정도로 사용하게 될 것 같다.
다음 주 부터 우테코 프리코스를 하게 될 텐데 그때 다시 글 쓰도록 하겠음.