인프런 비전공자를 위한 개발자 취업 올인원 가이드 강의 정리
취업하기
개발자 포트폴리오
포트폴리오에 대한 오해와 진실
Q. 개발자 포트폴리오가 필요한 이유는?
1. 신입개발자 이력서가 다 "거기서 거기" (서류 전형 통과 이력서 기준)
비전공자의 경우, 학원생들끼리 템플릿이 같거나
전공자여도 열심히 하지 않은 사람들은 대부분 다 비슷한 포맷
-
이력서 = 정량평가
-
포트폴리오 = 정성 평가
-
이력서에 작성된 정보들만으로는 편차가 크지 않기 때문에 면접에 초대할 지원자를 추려내기 힘들다.
-
포트폴리오는 지원자마다 편차가 꽤 큰 편이기 때문에, 이력서가 비슷하다면 포트폴리오로 우열을 가릴 수 있다.
2. 신입 개발자는 스펙보다 개발 실력과 잠재력이 더 중요
- 개발자를 조선시대에 비교하자면 선비가 아니라
도공 (도자기 제작자)
- 실제로 도자기를 잘 만들고 배우고 성장할 수 있는지의 여부
- 개발 실력과 잠재력을 어필하는 포트폴리오 제출
3. 포트폴리오에 대한 오해와 진실
오해 | 진실 |
---|
포트폴리오 == 프로젝트 | 자신이 개발한 프로젝트들을 모은 것이 포트폴리오 포트폴리오 만들기 == 프로젝트를 모아서 보여줄 매개체 만들기 |
포트폴리오는 웹페이지 형식으로 만들어야 한다? | 개발 분야에 따라 적합한 형식이 다르다. Github, Web |
프로젝트 동작 화면을 보여주는 게 중요하다? | 프로젝트 소개 글과 코드를 잘 보여주는 것이 더 중요하다 (동작화면보다는 Code가 보이는 포트폴리오) |
창의적인 아이디어의 프로젝트를 만들어야 한다? | 흔한 아이디어라도 상관 없다. 창의적인 아이디어라고 개발 수준이 높아지는 것은 아니다. |
프로젝트가 많을수록 좋다? | 평가자에 따라 다르지만, 일반적으로 양보다 질이 중요하다. |
포트폴리오는 프로젝트를 다 만든 후에 만든다? | 포트폴리오는 프로젝트 제작과 병행한다. (트러블슈팅 등 경험하는 기록들) |
토이 프로젝트 & 팀 프로젝트
토이 프로젝트?
- 개인프로젝트
- 장난감(Toy)처럼 비교적 가볍게 만들고 활용하는 프로젝트
- 자신에게 필요해서 만들거나, 만들고 싶은 것을 자유롭게 만드는 프로젝트
- 포트폴리오에서 가장 영향력이 큰 아이템
토이 프로젝트 주제 선택 방법
- 개발 공부를 시작하는 시점부터 만들고 싶은 프로젝트에 대한 고민 시작 + 기록
- 미리 생각해두지 않으면, 결국 흔한 주제를 선택하게 됨
- 흔한 주제 == 개발 강의에서 많이 다른 주제 (게시판, 메모앱, To-do List 등)
- 흔한 주제들은 그만큼 개발을 연습하기에 적합한 주제들이기 때문에 무조건 낮게 평가받는 것은 아님
- 하지만 토이 프로젝트는 포트폴리오에 넣기 위해 만들기보다, 만들고 싶은 것을 즐겁게 개발한 결과물이어야 한다. (만들어야 한다는 압박감보다는 개발의 재미에 빠질 수 있는 계기가 되는 것이 좋음)
- 프로젝트 주제를 미리 고민해두면, 어떤 기술을 학습할 때 이 기술을 프로젝트에 어떻게 녹여야 할지 떠오른다.
- 혼자 만들기에 부담스럽지 않은 규모의 주제 선택
- 회사에서 만들법한 큰 서비스를 주제로 선택하면 안된다.
- 특히 개발 경험이 부족한 상태에서는 욕심을 버리고 최대한 보수적으로 프로젝트를 기획해야 한다.
- 많은 사용자를 확보한 서비스를 만들다가 중간에 포기하는 것보다, 나만 쓰더라도 작은 서비스를 완성하는 게 훨씬 낫다.
- 강사의 경우, '프리랜서 디자이너들을 위한 포트폴리오 공유 플랫폼'을 주제로 토이 프로젝트 제작 도전하다 실패함
- 토이프로젝트는 완성이 목적이므로 만들고 싶은 서비스 vs 만들 수 있는 서비스를 잘 구분해서 만든다.
- 본인 혹은 주변 사람들이 겪는 사소한 불편함을 해소해주는 서비스를 만든다.
- 주변 사람들이 겪는 사소한 불편함 중에는 의외로 프로그래밍으로 쉽게 해결되는 문제들이 있다.
- 주변 사람들이 서비스를 사용해보기 때문에 별다른 홍보 없이 사용자를 획득할 수 있다.
- 주변 사람들이 신기해하고, 유용하게 사용하면 동기부여가 되서 밤을 새워서라도 더 많은 기능을 개발하게 된다.
- 주변 사람들로부터 피드백을 받기도 쉽기 때문에, 프로젝트 퀄리티를 계속 개선할 수 있다.
- 나의 경우, 이전 회사 동기들의 불편함을 해소해준 '간편식 거래봇' 개발
- 본인이 취업하고 싶은 도메인/회사에 관련된 서비스
컨텐츠, 커머스 도메인
- 관련된 서비스를 만들면서 학습하고 사용한 핵심 기술들과 문제 해결 경험이 포트폴리오에서 가장 중요한 평가 요소가 된다.
- 프론트엔드/모바일 개발자 > 취업하길 원하는 서비스를 그대로 따라 만드는 클론 코딩 프로젝트 추천
- 클론 코딩 강의 혹은 따라 만드는 강의에서 만든 프로젝트를 개선하고 발전시킨다.
- Github에서 '토이프로젝트'를 검색해 다른 사람들이 만든 토이프로젝트 저장소를 참조해 insight 얻기 (똑같이 만들거나 코드 베끼는 것은 X)
★ 번외 : 프로젝트 배포 따라해보기
스프링부트로 웹 서비스 출시하기 https://jojoldu.tistory.com/250
스프링부트와 AWS로 혼자 구현하는 웹 서비스 http://www.kyobobook.co.kr/product/detailViewKor.laf?ejkGb=KOR&mallGb=KOR&barcode=9788965402602&orderClick=LEa&Kc=
★ 개발자들이 토이 프로젝트를 만드는 이유는?
프로젝트가 장난이야?! https://woowabros.github.io/experience/2018/11/12/toy-project.html
코딩덕후(코덕) https://co-duck.com/
https://github.com/kingbbode
팀 프로젝트?
- 회사에서 개발자로 일한다는 것은, 팀에 소속되어 다른 개발자들과 함께 일한다는 것
- 개발자는 개발 능력만 중요한 게 아니라 협업 능력도 중요하다 > 협업 능력도 비중있게 평가된다.
- 프로젝트 경험과 협업 능력을 모두 어필할 수 있는 것이 바로 팀 프로젝트
- 전공자들은 학교에서 팀 과제(프로젝트)를 여러 번 수행하고, 동기들과 취업용 팀 프로젝트를 마들기도 함.
- 비전공자들은 팀 프로젝트 경험을 자연스럽게 갖기는 쉽지 않지만, 여러가지 방법이 있다.
비전공자가 팀 프로젝트를 만들 방법은?
1. 그룹 스터디 팀원들과 팀 프로젝트 진행하기
OKKY 정기모임/스터디 게시판 https://okky.kr/articles/gathering
- 모르는 사람들이 만나서 프로젝트부터 만들면 서로의 실력도 모르고 신뢰도 없어서 제대로 진행되기 어려움
- 팀 프로젝트를 목적으로 모이기 보다, 먼저 그룹 스터디 목적으로 모여서 우선 그룹 스터디를 진행한다.
- 그룹 스터디가 끝날 때쯤 성실하게 참여해서 신뢰가 쌓인 스터디원들과 팀 프로젝트까지 진행한다.
- 서로 신뢰가 쌓인 상태로 팀 프로젝트를 진행해야 중간에 이탈할 확률이 낮다.
- 함께 학습한 기술을 기반으로 팀 프로젝트를 개발하면 팀원 간의 기술 격차가 줄어들어 프로젝트를 지속하기에 수월해진다.
+
강의 듣다 딴 생각
이건 토이 프로젝트뿐 아니라 기본적으로 팀이나 협업으로 할 때 느끼는건데
나도 협업이나 팀플을 잘하는 편이라고 자신있어 할 수는 없으나, 내가 전직장의 중간급 리더에게 배웠던 걸로 협업의 핵심은 신뢰
이고 그 신뢰의 기반은 커뮤니케이션
이라고 알려줬다.
그런 커뮤니케이션을 위해선 같은 언어로 대화해도 같은 주제에 대해 이야기하고 있다고 할지라도
내가 알고 있는 정보와 상대방이 알고 있는 정보가 서로 다를 수 있어 그 싱크
를 맞춰가기 위해
대화의 톤, 속도, 자주 쓰는 용어나 문구 등 그러한 사소한 게 하나씩 쌓여야 정보의 공유가 점점 적어저도 서로 간의 오해가 생기지 않고 그러한 건 단시간에 이루어지지 않는다는 말을 해주었던 게 아직도 기억에 난다. (그것 역시 서로 간의 트레이닝이 필요) 그리고 이러한 게 없는 경우 아무래도 센스나 대응이 부족한 경우 처음부터 불협화음이 생기거나 프로젝트 진행 속도나 결과도 달라질 수 밖에 없게 된다. 그리고 함께 일하는 게 힘들다고 느껴질 수 있기 때문에 프로젝트에만 촛점을 맞추기 보다는 어떤 방식으로 목적을 진행해 가야할 것인지가 약속되어지는 게 중요하다.
이건 내가 커뮤니케이션에 대한 새로운 정의를 얻게 된 경험으로 그 이후부터는 그러한 싱크를 맞추지도 않고 문제 해결부터 요구한다든가, 이원화하여 이야기, 상황에 따라 (본인에게 분리해지면) 말을 바꾸기, 동일 정보가 아닌데 혼동 식의 정보 전달 등의 커뮤니케이션을 하는 사람을 회사에서 만나게 되면 나는 그 때부터 그런 사람을 대체적으로 신뢰를 하지 않게 됐다. (잘 관찰하면 보임)
생각보다 사소한 건데 소중한 가르침이었고, 계속 함께하진 못했지만 나 역시도 내가 이후에 경력이 더 많아져서 비슷한 고민을 하는 후배가 생긴다면 똑같이 알려주고 싶은 방법이라고 생각했던 경험이다. (반면, 이런 '찐' 경험을 하고 나면 사람에 대한 기대도 자체가 높아져서 힘든 것도 있다. 그러나 모든 사람은 다 같지 않다
)
+
읽을거리 : 분업화의 빈 공간을 메우는 커뮤니케이션의 힘 https://brunch.co.kr/@haewonchoi/59
2. 학원 동기들과 팀 프로젝트 진행하기
- 학원에서 팀 구성해주지 않더라도, 열심히 하는 동기들과 따로 팀 프로젝트를 진행하는 것이 좋다.
- 학원 동기들은 기술 베이스도 비슷하고, 취업을 해야 하는 공통된 목표가 있기 때문에 진행이 비교적 수월하다.
- 단, 열심히 하려는 동기들과 팀을 구성하는 것이 좋다. 대학교 수업처럼 학점이 걸린 문제가 아니라 취업이 걸린 문제다.
- 작업 시 프리라이더나 게으른 사람들을 끌고 갈 필요는 없다(의지가 없는 사람들). 냉철하게 버리고 목표 달성을 최우선해야 한다.
- 열정적이고 성실한 팀원들과 친해지는 것이 좋다.
3. IT 동아리/모임에 가입해서 팀 프로젝트 진행하기
디프만 https://www.depromeet.com/
프로그라피 https://www.prography.org/
넥스터즈 http://teamnexters.com/
- 디자이너와 함께 만드는 팀 프로젝트라서 개발자들끼리 했을 때보다 완성도가 더 높다.
- 가입하려면 면접 등의 평가 절차가 있기 때문에, 열정과 능력이 어느 정도 검증된 참여들과 함께 만들 수 있다.
- 실제 개발자로 일할 때에도 기획자, 디자이너와 협업하기 때문에, 실무와 비슷하게 팀 프로젝트를 경험할 수 있다.
팀 프로젝트를 진행할 때 주의할 점
- 팀 인원이 많으면 많을수록 프로젝트는 산으로 간다. 2~4명이 적당
(핵심적인 기능은 결국 2명이 다 했고, 사람 많으면 서로 눈치보고 결정하는 데 시간도 오래 걸림)
- 최대한 단순하게 기획하고, 프로토타입을 완성한 후에 기능을 덧붙여나간다.
(나도 못할 거 같은 기능은 팀원도 못 만든다. 기획은 최대한 보수적으로 한 후,
뼈대 위주로 빠르게 만들어 서버에 배포)
- Github에 Organization을 만들어서 코드가 올라간 저장소를 공동으로 관리한다.
(저장소를 팀 권한으로 구성해서 만들어서 동등한 권한을 갖고, 오너십에 대한 분쟁도 덜 수 있음)
개발 블로그 & Github
(모 회사 입사지원서 양식 중) 자유양식의 포트폴리오 또는 경력기술서
자신을 드러낼 수 있는 개인 블로그나 github 링크 등을 자유롭게 입력해주세요.
지원서에 대한 자세한 사항보다 이름, 연락처, 이메일, 지원경로,
개인블로그/github만 보고 평가하는 회사도 있음
★ 취업할 때 개발 블로그와 Github이 필요한 이유
- 비슷한 이력서와 포트폴리오를 갖추었다면, 개발 블로그와 Github 링크를 추가한 지원자가 더 높은 평가를 받는다.
- 개발 블로그와 Github으로 잠재력을 어필할 수 있다.
- 신입 개발자 채용 시, 당장의 실력도 보지만 잠재력을 더 중요하게 평가한다.
- 이력서와 포트폴리오는 개발과 직접 관련된 내용만 담긴다.
- 이력서와 포트폴리오만 제출하면, 개발과 직접 관련은 없지만 개발자로서 성장하는데 중요한 가치/능력들을 어필할 수 없다.
- 거의 전공자들만 뽑는 회사에 신입 개발자로 입사할 때, 개발 블로그와 Github이 결정적인 역할을 했다. (잠재력)
★ 개발자들이 개발 블로그를 운영하는 이유
1) 개발로서 성장에 도움이 된다.
- 공부한 내용과 경험한 것들을 자세하게 정확하게 설명하기 위해 더 깊게, 더 정확하게 공부하게 된다.
- 블로깅 driven 성장 (블로그에 쓰기 위해 공부하고 경험한다)
- 머리로만 아는 내용을 문장으로 설명하고, 예시 코드를 만들어 설명하는 과정에서 더 확실하게 이해하게 된다.
- 댓글 피드백(틀린 내용 지적)을 통해 잘못된 이해를 바로 잡을 수 있다.
2) 개발자 세계에 자신을 알릴 수 있는 가장 쉬운 방법
- 개발자 세계는 정보 공유가 활발한 세계 (같이 일한적이 없는데도 알게 되는)
- 간접적 소통 방식
- 강사의 경우 개발자 세미나 강연, 출판 제의, 칼럼 및 추천평 기고, 면접 제안 모두 블로그 글(특히 회고록) 덕분에 여러가지 기회를 얻게 됨
개발자가 블로그를 운영해야 하는 이유 https://taegon.kim/archives/7107
개발자 글쓰기, 기술블로그에 대하여 https://jbee.io/essay/writing-of-developers/
3) 자신의 생각과 감정, 경험을 공유할 수 있다.
- 회고록, 에세이, 책 리뷰 등을 통해 자기 자신을 표현할 수 있다.
개발블로그 어디에 만들까?
1) 네이버 블로그로 만들면 되나요?
- No. 네이버 블로그는 네이버에서 검색되는 것에 특화된 블로그
- 구글 검색 결과로 네이버 블로그는 잘 안 나온다.
- 개발자들은 구글에서만 검색한다 (심지어 네이버 개발자들도 개발 관련 검색은 구글에서 한다)
- 네이버는 마크다운(Markdown) 문법을 사용할 수 없다. (현재는 추가되었을지 모름)
- 마크다운 문법으로 작성된 글은 HTML 등 다른 서식 문서로 변환 가능 (개발자들은 보통 마크다운 문법으로 글을 쓴다)
네이버 블로그에서 마크다운 기반 글 올리기 https://blog.naver.com/2___j
네이버 블로그에서 이전했습니다 https://velog.io/@embeddedjune/%EB%84%A4%EC%9D%B4%EB%B2%84-%EB%B8%94%EB%A1%9C%EA%B7%B8%EC%97%90%EC%84%9C-%EC%9D%B4%EC%A0%84%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4
- 블로그에 구글 애드센스를 붙일 수 있다. (네이버 애드포스트는 광고 수익 배분 정책에 따라 다름)
2) 개발 블로그는 어디 플랫폼에 만들어야 할까?
- | 티스토리 | 브런치 | 미디엄 | 노션 | 벨로그 | Github 블로그 |
---|
예시 | 이동욱 님 | 옛날개발자 님 | Moon 님, 박상권 님 | youngho9 님, 정다운 님 | velog | 한재엽 님, 이종립 님 |
코드삽입 | Good | Bad (이미지 캡쳐식) | OK | Good | Good | Good |
자유도 (커스터마이징) | OK | Bad | Bad | OK | Bad | Good |
구글 노출 | Good | Good | Good | Bad | Good | OK |
광고 삽입 (애드센스) | Good | Bad | OK | Bad | Bad | Good |
장점 | 지속적 기능 개선, 다양한 플러그인 | 깔끔한 디자인과 한글 폰트 (감성적) | 깔끔한 디자인, Publication WYSIWYG 에디터 | 작성이 쉽다. 메모앱으로도 활용 | 개발 블로깅에 최적화, 자체 유저들에게 노출 | 높은 자유도 |
단점 | 테마, 아직 불편한 에디터 | 본문 복사 금지 | 한글 폰트, 목록/검색 무 | 메모앱 > 블로그 | 모두가 같은 디자인 | 다소 높은 진입장벽 (Git, SSG 및 언어, SEO) |
총평 | 가장 무난한 선택 | 개발 블로그로는 한계 글만 작성하기에는 좋음 | 한국에서 사용하기에는불편 | 아직은 생산성 도구로 적합 블로그기능이 보완되면 최고일듯 | 첫 선택으로 강력 추천 | 개성 살리기에 최고 개발 실력 향상에 도움 |
대부분의 개발자라면 아마도 (사고방식부터 바꿔야하는군 ㅠ)