어떤 프로젝트를 해야할까?

🪐 C:on·2021년 8월 8일
12

개발자이야기

목록 보기
2/4
post-thumbnail

많은 신입 개발자들의 고민 중 하나는 포트폴리오이다.
나도 포트폴리오를 위해 무엇을 해야할지 매일매일 고민에 고민을 한다.

좋은 프로젝트


  • 상용 서비스 만큼 사용성, 퀄리티가 높은 프로젝트
  • 딥러닝, 빅데이터 등이 사용된 프로젝트
  • 대용량 트래픽을 경험한 프로젝트

위의 경우 중 하나 이상이 해당된다면 좋은 프로젝트일 것이 분명하다.

하지만 학부생이 이런 프로젝트를 만들기는 정말 어렵다.

그렇다고 프로젝트를 양산형으로 마구마구 찍어내는 것은 바람직하지 못하다.

그럼 어떤 프로젝트를 해야할까?



학부생 수준의 좋은 프로젝트


신입의 포트폴리오는 국비지원 학원에서 만든것, 학부 졸업작품 등을 활용하는 케이스가 많기 때문에 차별성이 없는 포트폴리오가 대부분이다.

  • 클론코딩
    • 쇼핑몰
    • 채팅프로그램
  • 공공기관 API를 활용한 프로젝트
  • 학사관리

위 프로젝트가 신입 포트폴리오의 프로젝트 절반 이상을 차지한다고 한다.

클론코딩은 정말 좋은 연습이다. 다양한 기술들을 프로젝트에 적용해보는 것도 좋다고 생각한다.

하지만 자신의 고민이 들어가지 않은 프로젝트를 하는 것이 정말 나의 개발자로서의 성장에 도움이 될까?

나는 개발이란 문제에 부딪히고 해결하는 과정의 반복작업을 의미한다고 생각한다. 따라서 위의 프로젝트는 코딩연습으로는 충분하겠지만 개발자가 되기 위한 준비로는 부족해보인다.

그러면 얼마나 창의적이고 훌륭한 프로젝트를 해야 면접관들의 눈에 들어올까?

사실 신입이 아무리 열과 성을 다하여 수 많은 기술들을 적용한 프로젝트를 만들었더다 하더라도
현직자, 실무자, 기술자들의 입장에서는 대부분 허점 투성이로 보일 것이다.

그렇기 때문에 면접관은 신입 지원자를 평가할 때 무슨 기술을 사용했는지 중요시하지 않는다. 그것보다 우선하며 기대하는 것은 문제해결 능력, 의사소통 능력, 성장 가능성이다.

위 능력을 어필하려면 팀원과의 의견 불일치를 어떻게 해결해나갔는지, 완성된 프로젝트를 어떻게 리팩터링하여 성능을 높였는지, 어떤 러닝커브를 가지고 있으며 새로운 기술을 빠르게 습득하는 나만의 공부법은 무엇인지에 대해 스토리가 만들어지는 프로젝트를 해야한다.

가령 프로젝트의 보안성을 높이기 위해 ssl을 적용시켜 데이터 전송의 보안을 강화한다거나, 이미지나 동영상처럼 용량이 큰 정적파일들을 효과적으로 관리하기 위한 방법들을 고민하고 적용한다면 면접관들이 정말 좋아하지 않을 까?

또한 기술 스택만 늘려가는 것의 문제점은 우리는 전문 기술자 들에게 평가를 받는 다는 것이다. 예를 들어 JWT를 사용해서 인증시스템을 구현했는데 토큰이 어떻게 만들어졌는지, 세션쿠키와 어떤점이 달라서 사용했는지 알지는 못한 채 적용했다면 안한것만 못할 수도 있는 것이다.

따라서 어떤 기술을 사용하든 꼭 근거를 가지고 원리를 이해하며 사용하도록 해야한다.



스타트업과 대기업이 프로젝트를 보는 관점의 차이


가장 최근 개발바닥(배달의 민족 전 리드개발자였던 분)의 유튜버의 영상과 네이버 백엔드 개발자의 조언글을 보고 대기업과 스타트업의 인재상이 정말 다르다는 생각이 들었다.

대기업은 기업의 매~우 장기적인 측면에서 큰 도움이 될만할 인물을 뽑는 반면,
스타트업은 하루 빨리 실무에 투입될 수 있는 사람을 원한다.

스타트업 개발자들은 라이브러리, 최신 기술, 언어에 대한 얘기를 많이한다.
반면 대기업 개발자들은 CS에 대한 얘기를 많이 한다. CS를 잘 알아야 잦은 트렌드 변화에 금방 적응할 수 있기 때문이라고 한다.

(스타트업도 CS들이 중요하다고 얘기하지만 대기업은 좀 과하다 할 정도로 중요하게 보는 것 같다. 그래서 프로젝트 경험이 전무해도 코딩테스트와 기술면접만 잘 보면 합격하는 사람들도 보았다..)

따라서 대기업을 준비한다면 프로젝트에 목을 메는 것 보다 코딩테스트와 CS에 집중하는 것이 더 좋아보인다. 물론 프로젝트가 없는 것보다 있는 것이 더 좋겠지만 없어도 합격하는 분들을 많이 봤기 때문에 시간이 없다면 억지로 프로젝트를 하는 것을 추천하지 않는다.

반면 스타트업은 오히려 프로젝트가 없다면 취업하기 정말 어려울듯하다. 코딩테스트나 과제테스트를 보는 곳도 많지만 서류를 보고 바로 면접을 거쳐 결정이 나는 회사들도 많기 때문이다. 당연히 서류에 쓸 내용이 프로젝트 밖에 없으므로 스타트업을 지원하려면 프로젝트는 다른 어떤것보다 필수지 싶다.


백엔드 프로젝트에 사용되는 기술 스택들


지원하는 분야가 프론트엔드냐, 백엔드냐, devops냐 등에 따라 프로젝트에 사용할 스택도 맞춰서 진행하는 것이 좋다.

스타트업(인프런) 채용공고

인프런의 채용공고에는 다음의 기술스택들이 나열되어있다.

  • NodeJS
  • Express
  • FxJS / FxSQL
  • Docker
  • CircleCl
  • NewRelic APM & Cloud Watch
  • AWS RDS Aurora(PostgreSQL)
  • Redis
  • AWS ECS & EC2
  • Git / Github

또한 백엔드 개발자로 지원하기 위한 자격요건은 다음과 같다.

  • Node.JS 기반 백엔드 개발 경험
  • JavaScipt (ES6+에 추가된 기본 스펙 사용경험)
  • RDBMS 사용 경험
  • Linux의 기본적인 명령어를 사용할 수 있고 EC2에 기본적인 패키지들을 설치할 수 있는 분
  • HTTP 통신에 대한 기본적인 이해
  • Restful API에 대한 설계나 개발 경험
  • 기본적인 SQL문법
  • RDBMS의 인덱스가 무엇인지 알고 , 어떤 경우 인덱스가 사용이 안되는 아는 분
  • Git과 Github에 대한 기본적인 사용법을 알며 Git Flow를 이해하는 분

인프런은 향로님이 계시는만큼 특정 기술을 사용하는 근거가 명확할 것이라는 믿음과, 채용공고도 꼼꼼하게 작성하셨을 거라 생각해서 가장 참고할 만한 자료라고 생각이 든다.

그렇기에 백엔드 개발자를 준비한다면 nodejs를 제외하더라도 위에 나열된 기술들을 프로젝트에 적용하고 공부한다면 경쟁력을 가질 수 있을 것이다!

0개의 댓글