'개발자 지망생의 고군분투' 시리즈신입 개발자 포트폴리오 준비하기

배진오

@baealex

소비적인 일보단 생산적인 일을 좋아합니다.

신입은 어느 정도의 프로젝트를 해야할까?

필자는 프로그래밍에 흥미가 있었으므로 학교를 다니면서 다양한 프로젝트를 진행했다. 취미든 호기심이든 여러가지 이유였지만 대개는 작은 규모였다. 취업준비생이 된 지금 이 프로젝트들을 되돌아보니 정말 나에게 포트폴리오로써 도움이 될지 의문이 생겼다. 게다가 난 웹 개발자로 취업을 원했지만 그간 해왔던 건 다 데스크톱 어플케이션을 개발하는 것이었으니...

나에겐 많은 시간이 남지 않았다. 포트폴리오로 제출하려면 대체 어느 정도 수준의 프로젝트를 해야할까? 이 질문에 대한 해답은 아직도 잘 모르겠다. 아니 사실 모르는 건 아니다. 모르는 척 하고있다. 이 글을 읽는 사람들도 어느정도 짐작은 하고 있지 않을까 생각해본다. 심플하게 다음과 같은 프로젝트를 만들면 될거다.

  • 딱봐도 퀄리티가 개쩌는 프로젝트를 만든다.
  • 미래지향적인 신기술을 사용한다. (ex: 인공지능)
  • 어마어마한 사용자 수를 거느리고 있다. (ex: 위키피디아)

위 속성중에 하나라도 체크할 수 있다면 이미 완벽한 프로젝트겠다. 두개 이상 체크할 수 있다면 굳이 취업을 고민하면서 이 글을 보고 있진 않을 것이고. 하지만 나 같은 평범한 취준생이 위와같은 프로젝트를 짧은 기간내에 만들어내긴 힘들다. 단지 현업에 있는 사람들이 "오! 이 친구 괜찮은데?"라고 생각할 법한 프로젝트면서 어렵지 않은 프로젝트로. 욕심일까? 여하지간 아직도 그 정답은 모르며 이 글은 그냥 필자가 포트폴리오를 준비하는 과정을 담은 글이다.


일단 뭘 만들지부터 결정하자.

대부분 신입 개발자들은 다음과 같은 프로젝트를 포트폴리오로 제출한다고 알려져 있다.

  • 쇼핑몰
  • 게시판(커뮤니티)
  • 채팅앱(카카오 클론)
  • 학사관리

대부분의 신입 개발자들이 위와같은 프로젝트를 실시하기 때문에 같은 소재로 프로젝트를 한다면 엄청난 존재감을 주기엔 어려움이 있다. 만약 이 소재로 프로젝트를 하면서 돋보이고 싶은 욕망이 있다면 위에서 나열된 한가지를 체크할 자신이 있어야겠다. 무슨 말이냐고? 쇼핑몰을 만들거라면 사용자에게 맞춤 추천을 해주는 알고리즘이 포함된 쇼핑몰을 만들거나 혹은 게시판을 만들었는데 사용자가 폭주해서 그걸 안정적으로 처리할 시스템 구조를 설계했다거나.



위와같은 포트폴리오를 제출한다면 적어도 내가 인사 담장자면 바로 채용할 것 같다. (물론 진짜 제출자가 한건지 테스트하기 위한 코테는 보겠지만 ㅇㅇ) 다른 방법이 있을 수도 있겠다. 그냥 태어날 때부터 코딩 천재거나 엄청난 스펙을 가졌거나? 적어도 실력 우선 주의라고 알려진 이 바닥(?)에서 스펙이 큰 도움이 될진 모르겠지만, 적어도 스펙을 보는 회사는 수월하게 들어갈 수 있을거다.


하... 둘 다 아닌 나는?


지극히 평범한 나 역시 아이디어를 찾아 헤메다 결국 일반적인 프로젝트를 진행하게 되었다. (마땅히 떠오르는 소재가 없거나 떠오르는 소재는 구현이 불가능) 그리고 구차하게 이 프로젝트에 나의 스토리를 담아내고자 하였다. 자소서를 통해서 이 프로젝트가 내 삶에서 어떤 의미가 있는 것인지를 말해주고 싶었다. 내가 선택한 프로젝트의 소재는 블로그였다. 블로그는 여러모로 내 삶에서 가장 오래된 활동이었다.

블로그를 하면서 보냈던 시간은 항상 흥미로웠고 포트폴리오 또한 내가 하고 싶은 걸 해야 재밌게 개발할 수 있을거라 생각했다. 잘 만들거나 아주 훌륭하게 만들어 낼 자신은 없지만 적어도 열심히 만들 수 있는 소재라 생각했다. 프로젝트를 굳이 시간내서 하는게 아니라 그냥 하고 싶은 걸 하는게 프로젝트인 셈이다. 사실 블로그는 게시판의 일종으로 매우 간단한 프로젝트다. 그래서 나는 여기에 나의 스토리를 더하고 프로젝트를 뭐가됐던 끌어올려야 했다.


개발을 시작하자!

우선 나는 프로젝트를 단독으로 진행하였다. 그래야 포트폴리오를 평가하는 사람들이 내 지표를 정확하게 볼 수 있을거라고 생각했다. 뒤늦게 사람들과의 협업을 중요하게 보는 회사도 있다는 것을 알게 되었지만 후회하진 않는다. 어차피 친구도 없다 😥 개발하기 앞서 다음과 같은 기술을 사용할 것을 염두에 두고 있었다. 해당 기술은 단지 이름만 알고 있거나 지식의 수준이 매우 낮았다.

  • Git
  • Docker
  • Spring
  • React

이름있는 회사에 들어가고자 한다면 필수적인 조합이라고 생각했다. 다만 필자의 개인적인 선호도와 여러 이해관계를 따져 다음과 같은 조합으로 개발을 진행했다.

  • Git
  • Django

각각의 이유는 이렇다. 일단 Docker는 어려웠다. 당장 눈에 보여지는 결과물을 토출하기 위해서 그냥 익숙한 방식으로 배포를 진행하고자 하였다. Django를 선택한 이유는 그냥 자바가 싫었기 때문이다. 왠만하면 PHPPython으로 진출하고 싶었다. 구체적인 이유가 있는게 아니라 그냥 단지 이들의 이름이나 철학이 맘에 들었다. 다만 웹 개발은 대부분 Spring이 장악하고 있으므로 장고를 선택하는 건 정말 위험한 선택일 수 있다고 생각했다.

하지만 위에서도 말했다시피 내 스토리내가 하고 싶은 것에 중점을 두었기에 이대로 진행했다. 장고는 내가 자신있어 하는 파이썬을 사용하고 프론트엔드는 깃헙 블로그와 똑같이 개발할 수 있어서 여러모로 현 상황에서 최상의 선택지였다. React를 사용하지 않은 이유는 아래에서 말하겠다.


프로젝트 조지고 올게!



포트폴리오 제작기

필자의 프로젝트는 지금 여러분이 보고있는 이 블로그다. 웹개발은 처음이라 장고는 나에게 매우x3 어려운 프레임워크였다. 다만 프론트엔드 문법이 깃헙 블로그와 동일하다는 그 이유로 개발을 지속할 수 있었다. 백엔드는 뭐가 뭔진 모르겠지만 일단 레이아웃을 만들고 이것저것 찾아가며 적용해보기 시작했다. 길고 길었던 여정을 여기에 작성하기엔 아래글과 곂치는게 많아서 링크만 걸도록 하겠다.

블로그 프로젝트를 개발하며 참고한 사이트는 해외 대표 블로그 서비스인 미디엄과 국내 스타(?) 개발자가 제작한 밸로그였다. 미디엄에선 디자인을 많이 참고하였고 (내가 본 블로그 중에 가장 아름다웠다) 밸로그에선 기술적인 부분을 참고하고자 하였다 (내가 본 블로그 중에 가장 빨랐다)

밸로그는 React를 사용하여 프론트엔드를 구성하고 있었다. 여기서도 동일한 방식으로 개발하고 싶었지만 필자는 자바스크립트에 대한 지식이 매우 부족한 상태였기에 React라는 존재가 매우 어렵게 다가왔고, React를 통해서 프론트엔드를 분리하고 SEO를 향상시키기 위헤서 다시 서버 사이드 렌더링을 구현하는 과정이 나에게 납득되지 않았다. (왜 굳이 돌고 돌아서 다시 제자리로 와야하는 걸까...) 그래서 React가 사용되는 이유를 철저하게 조사하고 이 블로그에서 React를 사용하지 않는 완벽한 핑계를 준비해두고자 하였다.


포트폴리오 발전시키기

블로그를 어느정도 완성한 후 사람들의 조언을 구하기 위해서 개발자 커뮤니티인 OKKY에 해당 포트폴리오를 올려 평가받았다. 생각보다 많은 사람들이 봐주시고 조언도 아껴주시지 않았으며 그 중에선 "디자인이 예쁘다.", "잘 만들었다."라는 말도 있었지만 흠... 솔직히 나는 내 프로젝트에 자신이 없었다. 여전히 누구나 만들 수 있는 수준에 불과하다고 생각했다.


솔직히 댓글볼 때 내 표정


이 프로젝트를 정말 자신감있는 프로젝트로 만들기 위해서 OKKY에서 조언해 주셨던 분의 내용을 바탕으로 다음 기술을 최대한 활용하고자 하였다.

  • REST API 아키텍처
  • 비동기 통신

REST API에 대한 지식이 부족해서 먼저 공부를 해야했는데 간단하게 장고의 REST FRAMEWORK를 사용해 보면서 REST API가 어떤 원리와 구조로 동작하는지 살펴보았고, REST API의 논문과 해당 논문을 정리한 영상을 참고하여 REST API를 공부하였다. 코드는 프레임워크 없이 엔드포인트를 여러개로 분리하여 디자인 규칙을 준수하며 제작하였다.

비동기 통신을 최대화하여 페이지에서 발생하는 모든 동작에 새로고침을 발생시키지 않도록 하였고, 이 동작들이 위에서 구현한 GET, POST, PUT, DELETE의 통신들이 REST하게 발생하도록 하는 것을 중점에 두었다. 덕분에 기존의 백엔드 코드가 거의 통째로 바뀌고 프론트엔드 코드가 대량으로 생성되었다. 그런데 바꿔보니 왜 이렇게 개발하는지 알 것 같았다. 혼자 작업하다보니 백엔드와 프론트엔드 왔다갔다 귀찮긴 했는데 내가 한 명만 더 있었다면 정말 엄청난 시너지가 일어날 것 같았다.


포트폴리오 정리하기

프로젝트를 완성하여 블로그에 정리하던 PPT로 만들던 정리가 필요했는데 우선 나는 나만의 포트폴리오 페이지를 가지고 싶었고 그 안에 내 프로젝트를 당당하게 올려두고 싶었다. 다만 포트폴리오 페이지는 그냥 만들면 재미가 없으니까 위에서 사용하지 않았던 React를 이용하여 개발하였다.

웹과 관련된 프로젝트가 하나밖에 없어서 심미적인 밸런스를 맞추기 위해 개발기간이 짧은 다른 웹 프로젝트도 올렸는데 좀 찜찜한 기분이다. 미래의 취준생이 본다면, 일찍부터 프로젝트를 시작해서 2개 정도는 자신감 있는 프로젝트를 만들어 두는것을 추천하고 싶다. 1개 보단 2개가 미관상 균형이 맞아보여 안정감 있다.


에필로그

저도 블로그를 만들고 싶어요!

최근 이 글과 관련해 블로그를 어떻게 만드냐는 질문을 받았습니다. 혹시나 같은 궁금증을 가진 사람들을 위해서 아래 글을 작성하였습니다. 해당 글은 블로그를 만드는 튜토리얼이 아닌 블로그를 만들기 위해선 무엇을 알아야 하는지 나열한 것입니다.


프로젝트 아이디어를 공유합시다!

정말 많은 사람들이 프로젝트의 아이템을 고민하고 있다는 것을 알았습니다. 그래서 함께 아이디어를 공유하고 서로의 아이디어를 합쳐서 새로운 아이디어를 찾아보는 것은 어떨지 제안합니다. 아래 댓글란에 자신의 아이디어를 적어보세요. 작성자는 익명이며 누구든지 작성할 수 있습니다.

'개발자 지망생의 고군분투' 시리즈

개발자로 취업하려면 도대체 뭘 준비해야할까? 저도 그걸 몰랐습니다. 그래서 무작정 제가 하고 싶은대로 준비하였고 이 시리즈는 그 과정을 담아냈던 공간입니다. 다른 누군가가 취업을 준비할 때 참고가 된다면 좋을 것 같습니다. 도움이 될 수 있다면 더 좋겠네요! 😃
😥 작성된 댓글이 없습니다!
댓글을 작성하기 위해 로그인이 필요합니다.