신입은 어느 정도의 프로젝트를 해야할까?
필자는 프로그래밍에 흥미가 있었으므로 학교를 다니면서 다양한 프로젝트를 진행했다. 취미든 호기심이든 여러가지 이유였지만 대개는 작은 규모였다. 취업준비생이 된 지금 이 프로젝트들을 되돌아보니 정말 나에게 포트폴리오로써 도움이 될지 의문이 생긴다. 게다가 난 웹 개발자로 취업을 원했지만 그간 해왔던 건 다 데스크톱 어플케이션 개발 뿐...
나에겐 많은 시간이 남지 않았다. 포트폴리오로 제출하려면 대체 어느 정도 수준의 프로젝트를 해야할까? 이 질문에 대한 해답은 아직도 잘 모르겠다. 솔직히 모르는 건 아니다. 애써 모르는 척 하고있다. 이 글을 읽는 사람들도 어느정도 짐작은 하고 있지 않나? 심플하게 다음과 같은 프로젝트를 만들면 될거다.
- 딱봐도 퀄리티가 개쩌는 프로젝트를 만든다
- 미래지향적인 신기술을 사용한다. ex) 인공지능
- 어마어마한 사용자 수를 거느리고 있다. ex) 위키피디아
위 중에 하나라도 체크할 수 있다면 이미 포트폴리오로썬 완벽할 것이다. 두개 이상 체크할 수 있다면 취업이 아니라 창업을 고민하고 있을 것이고... 나 같은 평범한 취준생은 위와같은 프로젝트를 보유하고 있기도 어려울 뿐더러, 짧은 기간내에 만들어내긴 더더욱 힘들다.
현업에 있는 사람들이 "오! 이 친구 괜찮은데?"라고 생각할 법한 프로젝트가 어느정도의 수준일지 궁금했다. 투자대비 가성비가 탁월한 포트폴리오. 욕심일까? 여하지간 아직도 그 정답은 모르며 이 글은 그냥 필자가 포트폴리오를 준비하는 과정을 담은 글이다.
일단 뭘 만들지부터 결정하자
대부분 신입 개발자들은 다음과 같은 프로젝트를 포트폴리오로 제출한다고 알려져 있다.
- 쇼핑몰
- 게시판(커뮤니티)
- 채팅앱(카카오 클론)
- 학사관리
대부분의 신입 개발자들이 위와같은 프로젝트를 실시하기 때문에 같은 소재로 프로젝트를 한다면 엄청난 존재감을 주기엔 어려움이 있다. 만약 이 소재로 프로젝트를 하면서 돋보이고 싶은 욕망이 있다면 위에서 나열된 한가지를 체크할 자신이 있어야겠다.
무슨 말이냐고? 쇼핑몰을 만들거라면 엄청나게 인터렉티브하고 사용자 중심의 UX가 겸비된 프로젝트를 만들거나, 혹은 사용자에게 맞춤 추천을 해주는 알고리즘을 구현하거나 혹은 만들었는데 사용자가 폭주해서 그걸 안정적으로 처리할 시스템 구조를 설계했다거나.
위와같은 포트폴리오를 제출한다면 적어도 내가 인사 담장자면 바로 채용할 것 같다. 물론 이런 포트폴리오가 없어도 취업은 가능할거다. 태어날 때부터 코딩 천재였거나 엄청난 스펙을 가졌거나? 실력 우선 주의라고 알려진 이 바닥에서 스펙이 큰 도움이 될진 모르겠지만, 적어도 스펙을 보는 회사는 수월하게 들어갈 수 있겠다.
지극히 평범한 나 역시 아이디어를 찾아 헤메다 결국 일반적인 프로젝트를 진행하게 되었다. (마땅히 떠오르는 소재가 없거나 떠오르는 소재는 구현이 불가능) 그리고 구차하게 이 프로젝트에 나의 스토리를 담아내고자 하였다. 자소서를 통해서 이 프로젝트가 내 삶에서 어떤 의미가 있는 것인지를 말해주고 싶었다. 내가 선택한 프로젝트의 소재는 블로그였다. 블로그는 여러모로 내 삶에서 가장 오래된 활동이었다.
블로그를 하면서 보냈던 시간은 항상 흥미로웠고 프로젝트 또한 내가 하고 싶은 걸 해야 재밌게 개발할 수 있을거라 생각했다. 굳이 시간내서 프로젝트를 하는게 아니라 무조건 하고 싶다는 생각이 우선시 되도록 동기유발이 가능한 소재라고 생각했다. 사실 블로그는 게시판의 일종으로 매우 간단한 프로젝트다. 그래서 나는 여기에 나의 스토리를 더하고 뭐가됐던 프로젝트를 끌어올려야 했다.
개발을 시작하자!
우선 나는 프로젝트를 단독으로 진행하였다. 그래야 포트폴리오를 평가하는 사람들이 내 지표를 정확하게 볼 수 있을거라고 생각했다. 뒤늦게 사람들과의 협업을 중요하게 보는 회사도 있다는 것을 알게 되었지만 후회하진 않는다. 어차피 친구도 없다 😥
개발하기 앞서 다음과 같은 기술을 사용할 것을 염두에 두고 있었다. 해당 기술은 단지 이름만 알고 있거나 지식의 수준이 매우 낮았다.
Git
,React
,Spring
,Docker
이름있는 회사에 들어가고자 한다면 필수적인 조합이라고 생각했다. 다만 필자의 개인적인 선호도와 프로젝트의 가성비를 따져 다음과 같은 조합으로만 개발을 진행하였다.
Git
,Django
이유는 이렇다. 일단 Git
은 어디서나 사용한다. 사용법을 모르면 오히려 내게 마이너스 요소가 될 것이라 생각했다. 또한 React
를 전혀 모르는 상황에서 단기간에 익혀서 완성도 있는 프로젝트를 진행하는 것은 불가능하다고 판단했다. 웹 백엔드 개발도 익숙치 않았기에 Spring
보다 더 쉽고 빠르게 만들 수 있는 것으로 선택해야 한다고 판단했다.
ADR 일부 발췌
### 어떤 프레임워크를 사용할까?
- 결정 : `Django`(`Python`)를 사용하기로 결정했다.
- 전제
- 단기간에 결과물을 만들어야 하므로 익히기가 간단해야 한다.
- 고려 : `PHP`, `Django`, `Flask`
- 논쟁
- PHP : 대략 어떻게 개발이 진행되고 개발해야 하는지 알고있다. 다만 PHP 언어 자체의 좋지 않은 이미지가 염려스럽다.
- Django : 튜토리얼이 블로그 제작이며, 데이터 베이스 조작이 간단하다. 프론트엔드 문법이 깃허브 블로그와 동일하다. 이미 대부분의 기능이 구현되어 있다.
- Flask : 자유롭다. 그 의미는 대부분의 기능을 프로그래머가 구현해야 한다.
다만 대부분의 웹 개발은 Spring
이 장악한걸 고려하면, Django
를 선택하는 것은 위험한 선택일 수 있다고 생각했다. 하지만 위에서도 말했다시피 내 스토리와 내가 하고 싶은 것에 중점을 두었기에 그냥 이대로 진행했다. 장고는 그나마 내가 자신있어 하는 파이썬을 사용하고 프론트엔드는 깃헙 블로그와 똑같이 개발할 수 있어서 여러모로 현 상황에서 가장 훌륭한 결과물을 낼 수 있을 거라고 판단했다.
프로젝트 제작기
읽으면서 어느정도 짐작을 하셨겠지만, 필자의 프로젝트는 지금 여러분이 보고있는 이 블로그가 맞다. 제대로 된 백엔드 개발은 처음이라 장고는 매우 높은 산처럼 느껴졌다. 프론트엔드 문법이 Jekyll
과 동일하다는 이유 하나로 붙잡고 늘어질 수 있었다.
뭐가 뭔지 모르겠지만 일단 레이아웃을 만들고 이것저것 찾아가며 적용했다. 길고 길었던 여정을 여기에 작성하기엔 아래글과 겹치는게 많아서 링크만 걸도록 하겠다.
블로그 프로젝트를 개발하며 참고한 사이트는 해외 대표 블로그 서비스인 미디엄이다. 미디엄은 내가 본 블로그 서비스 중에서 가장 심플하고 가장 아름다웠다. 따로 디자이너가 있는게 아니라서 디자인의 많은 부분을 미디엄을 참고해서 제작했다.
프로젝트 개선하기
블로그를 어느정도 완성한 후 사람들의 조언을 구하기 위해서 개발자 커뮤니티인 OKKY에 해당 포트폴리오를 올려 평가받았다. 생각보다 많은 분들이 봐주시고 조언도 아껴주시지 않았다. 많은 피드백이 디자인이 예쁘다
, 잘 만들었다
라는 말이었지만... 흠... 솔직히 나는 내 프로젝트에 자신이 없었다. 여전히 누구나 만들 수 있는 수준에 불과하다고 생각했다.
이 프로젝트를 정말 자신감있는 프로젝트로 만들기 위해서 후닥후닥
님의 조언을 바탕으로 다음 기술을 최대한 활용하고자 하였다.
- REST API Architecture
- Asynchronous Communication
REST API Architecture
에 대한 지식이 부족해서 공부를 해야했는데, 우선 장고의 REST Framework
를 사용해 보면서 어떤 원리와 구조로 동작하는지 살펴보았고, 논문과 해당 논문을 정리한 영상을 참고하여 공부하였다. 이후 기존 코드를 리팩토링하여 엔드포인트를 분리하고 디자인 규칙을 준수하고자 하였으나, 지키지 못한 부분이 많다.
동시에 jQuery
를 바탕으로 비동기 통신을 최대화하여 페이지에서 발생하는 모든 동작(댓글 작성, 포스트 추천)에 새로고침을 발생시키지 않도록 하였다. 덕분에 기존의 백엔드 코드가 거의 통째로 바뀌고 프론트엔드 코드가 대량으로 생성되었다. 바꿔보니 왜 이렇게 개발하는지 알겠더라. 혼자 작업하다보니 왔다갔다 번거롭긴 했지만 내가 한 명만 더 있었다면 엄청난 시너지가 일어날 것 같았다.
포트폴리오 준비
프로젝트를 완성하여 블로그에 정리하던 PPT로 만들던 정리가 필요했는데 우선 나는 나만의 포트폴리오 페이지를 가지고 싶었고 그 안에 내 프로젝트를 당당하게 올려두고 싶었다. 다만 포트폴리오 페이지는 그냥 만들면 재미가 없으니까 위에서 사용하지 않았던 React
를 이용하여 개발하였다.
이력서에 제출할건데 웹과 관련된 프로젝트가 하나밖에 없어서 심미적인 밸런스를 맞추기 위해 개발 기간이 짧은 다른 웹 프로젝트도 올렸는데 좀 찜찜한 기분이다. 미래의 취준생이 본다면, 일찍부터 시작해서 2개 정도는 자신감 있는 프로젝트를 만들어 두는것을 추천하고 싶다.
에필로그
저도 블로그를 만들고 싶어요!
최근 이 글과 관련해 블로그를 어떻게 만드냐는 질문을 받았습니다. 혹시나 같은 궁금증을 가진 사람들을 위해서 아래 글을 작성하였습니다. 해당 글은 블로그를 만드는 튜토리얼이 아닌 블로그를 만들기 위해선 무엇을 알아야 하는지 나열한 것입니다.
풀사이클 개발을 해보세요!
풀사이클 개발이 힘들거나 막막하진 않았냐고요? 아닙니다. 정말 재밌었고 저에게 많은 경험을 제공해 주었습니다. 여러분도 한번쯤은 꼭 해보시길 바랍니다.
Ghost