fender
24k
2021-03-18 12:00:37 작성 2021-03-18 12:06:47 수정됨
27
38931

신입 개발자를 위한 간단한 포트폴리오 작성 팁


우선 이는 전적으로 제 개인적인 기준이며, 저 또한 오직 이러한 내용으로 만 포트폴리오를 평가하지 않는다는 점을 전제로 글을 쓰겠습니다.

전 신입 개발자 면접을 볼 때 항상 코드 예제를 요구하는데, 이는 소스 코드만 보면 생각보다 개발자의 수준이나 습관 등에 대해 많은 것을 알 수 있기 때문입니다.

저는 신입 개발자를 뽑는다면 해당 지원자가 개발 자체에 흥미를 느끼고 적성을 가지고 있는지를 가장 중요하게 생각합니다. 그리고 이는 어느정도 제출하는 포트폴리오의 내용에서도 드러나는 내용이기도 합니다.

예컨대 포트폴리오를 받았는데 파워포인트에 멋진 디자인의 최종 화면의 스크린샷이 잔뜩 들어있고 정작 소스 코드는 프리젠테이션에 일부 복사 붙여넣기를 했다거나 하는 경우는 아마도 취업 대비 학원 같은 데서 하라는 대로 작성한 내용일 가능성이 높습니다.

개발자가 웹 디자인도 잘하지 못 하는 건 이상할 것이 없지만, 그 정도로 복잡한 프로그램을 개발했는데 내세우고 싶은 것이 소스 코드가 아니라 웹 디자인 결과물이라면 아마 개발 자체는 배운 거 그대로 따라치는 이상으로 고민을 안 해봤을 가능성이 있기 때문입니다.

비슷한 이야기로, 포트폴리오를 받았는데 클래스 이름이 죄다 "Study202103"이나 "Lesson3" 같은 식이라면 아마 그 개발자는 한 번도 과제를 떠나서 본인이 흥미를 느껴서 프로그래밍을 해본 적이 없을 확률이 높을 것입니다.

저는 그래서 깃헙에서 이른바 "잔디밭 관리"를 하는 것을 좋아하지 않습니다. 물론 꾸준히 커밋을 한다는 건 그 자체로는 분명 좋은 게 맞는데, 신입 개발자 수준에서 구직을 위해 억지로 그런 걸 한다면 아마 커밋 기록을 보면 거의 "3월 18일 복습 내용" 같은 것으로 채워져 있기 십상일 것입니다.

커밋로그에서 어떤 문제를 수정했다거나 구조를 어떻게 개선했다거나 그런 개발에 대한 고민의 흔적을 읽을 수 있는 경우와, 단지 성실성 만을 옅볼 수 있는 경우 누구를 채용했을 때 더 좋은 개발자로 성장할 것을 기대할 수 있을지는 자명한 일입니다.

또한 소스 코드 내용에서도 해당 개발자가 얼마나 프로그래밍을 많이 해보았는지를 짐작할 수 있게 하는 단서는 꽤 많이 찾을 수 있습니다.

대표적인 것이 이름 규칙인데, 만일 자바 예제를 보냈는데 클래스 이름이 소문자로 시작하고 메서드 이름이 대문자로 시작한다면 아마 그 개발자는 제대로 된 자바 코드를 읽어 본 경험이 많지 않을 것입니다.

비슷한 이유로, 캐멀케이스나 스네이크케이스 등을 혼용해서 쓰거나 줄 바꿈에 일관성이 없는 경우 등도 실제 코딩을 해본 경험이 부족함을 의심하게 하는 단서이기도 합니다.

보통 어느정도 개발을 해보면 그런 부분은 눈에 거슬려서라도 바꾸기 마련입니다. 그냥 배운 것을 따라쳐서 돌아가는 것을 확인하고 다시 쳐다보지 않았다거나 했을 때야 그런 문제를 지속적으로 간과하게 된다고 봅니다.

특히 탭과 공백을 섞어 쓰거나 들여쓰기, 띄어쓰기에 일관성이 없는 경우는 보통 다른 예제를 그대로 복사해넣었거나 IDE 사용을 많이 해보지 않았음을 보여주는 단서가 됩니다.

만일 제출한 깃헙 저장소에 "classes" 같은 경로가 통째로 올라가 있다면 해당 지원자가 소스 저장소의 개념을 마치 웹 드라이브 처럼 생각하는 것이 아닌지 의심해볼 여지가 있는 것이나 비슷한 문제입니다.

물론 앞서 말씀드린대로, 전 이런 내용 만을 가지고 지원자의 모든 것을 판단하지는 않으려고 노력합니다. 하지만 이런 사소한 부분에서 의외로 지원자의 개발 경험이나 습관 등에 대해 생각보다 많은 내용을 유추할 수 있는 것도 사실입니다.

다른 회사에서도 이런 부분을 신경 쓰는지까지는 잘 모르겠습니다만, 그래도 포트폴리오를 준비하는 신입 개발자라면 조금 신경써서 보완해도 괜찮을 내용이라고 생각해서 적어 보았습니다.

117
230
  • 댓글 27

  • howoni123
    1k
    2021-03-18 12:51:48

    포폴 퀄리티 보다 포폴의 내용으로 관심의 척도를 해당 항목으로 평가하신다는점 멋있으시네용

  • 류재정
    185
    2021-03-18 14:17:31

    눈팅하다 추천누르고갑니다.

  • Mambo
    6k
    2021-03-18 20:05:58

    fender님의 글은 추천을 안누를수가 없어요..

  • ㅉㅉㅉ
    2021-03-19 00:53:37

    회사 분들께 보여드리고 싶은 글이네요.

    추천누르고 갑니다.

  • 도롱뇽
    2021-03-19 04:50:02 작성 2021-03-19 04:51:09 수정됨

    내용과는 좀 별개지만..

    이직 준비 하다 보니.. 너무 힘든게 많았네요.


    이력서는 예전처럼 자신이 맡은 업무를 정리해서 내는게 아니라, 자신의 업무에서 이루어낸 성과 위주로 정리 해야하고,

    포트폴리오도 정성껏 만들어야 하고,

    코딩테스트 까지 준비해야 하니 알고리즘 다시 복습해야 하고.....


    이직 성공은 했지만 너무 힘들었네요 ㅜㅜ 요즘 취준생들 준비하는 내용 보고 반성도 많이 하는 시간이였네요..


  • Frudy
    7k
    2021-03-21 11:26:54

    좋은지식 공유해주셔서 감사합니다.

  • Frudy
    7k
    2021-03-21 11:47:04

    만일 제출한 깃헙 저장소에 "classes" 같은 경로가 통째로 올라가 있다면 해당 지원자가 소스 저장소의 개념을 마치 웹 드라이브 처럼 생각하는 것이 아닌지 의심해볼 여지가 있는 것이나 비슷한 문제입니다.

    ㅡㅡ


    부끄럽지만 이부분에대해 이게 왜 잘못된건지 알려주실수있나요?


    물론 저는 저렇게 안했었긴했는데 이유는 아래와같아요.


    1. 컴파일된 결과물이 .class로 나오니까 이건 깃허브에 올리지않아도 생성될수있는 파일이니까 이었어요.


    Hello.java 로 Hello.class 만들수있으니까

    Hello.java파일 하나만 깃허브에 올렸었어요.


    근데 뭔가 이거보다 중요한이유가있을거같은데

    모르겠습니다.

  • 사과돌이
    162
    2021-03-21 13:12:48
     
    Frudy .gitignore의 사용법을 모르고있다...가 아닐까요?
  • fender
    24k
    2021-03-21 14:03:34

    빌드의 결과물을 소스 관리 시스템에서 제외하는 건 물론 관행이라는 이유가 가장 크긴 합니다만, 그래도 분명 그런 규칙이 자리잡은데는 합당한 이유가 있습니다.

    우선 그런 이진 파일을 소스와 섞여 커밋하면 diff 명령을 통해 변경사항을 한 눈에 파악하는데 방해가 됩니다.

    또한 언어에 따라서는 같은 소스에서 빌드한 결과라도 빌드 시간이나 호스트 명 등이 포함되어 산출물의 내용이 달라지는 경우가 있습니다. 이 경우 개발자가 빌드를 돌릴 때마다 산출물을 바뀐 소스로 인식해서 커밋 목록에 포함될 수 있어 불편함을 초래할 수 있습니다.

    그리고 배포가 필요한 성격의 프로젝트의 경우, 소스 저장소에서 CI를 통해 빌드 후 배포하는 것이 아니라 개발자가 빌드 산출물을 커밋하는 경우, 각자의 개발 환경에 따라 배포한 프로그램이 다르게 동작할 위험이 있습니다.

    모든 것을 떠나서 빌드 산출물을 버전 관리해서 얻을 수 있는 이점이 명확하지 않습니다. 말씀처럼 클래스 파일 같은 것은 소스에서 빌드하면 생성하는 것인데 굳이 소스와 함께 관리해서 불필요하게 소스트리와 커밋로그를 너저분하게 만들고 클론/푸시 시간만 오래 걸리게 만들 이유가 없다는 점도 감안해야할 것 같습니다.

    14
  • Frudy
    7k
    2021-03-21 15:52:03

    모든 것을 떠나서 빌드 산출물을 버전 관리해서 얻을 수 있는 이점이 명확하지 않습니다.

    ㅡㅡ

    감사합니다. 이게 가장큰 정답이라고 생각합니다


    그리고


    Hello.java 로 Hello.class 만들수있으니까

    ㅡㅡ

    이런 이유가


    diff 명령을 통해 변경사항을 한 눈에 파악하는데 방해가 됩니다.

    이런이유랑 관련이있었군요.


    감사합니다.


  • 스텁
    2k
    2021-03-21 16:46:14

    요즘엔 린터가 좋아서 카멜케이스 스네이크케이스 줄바꿈 같은건

    장인정신보다는 린터로 해결보는게 좋습니다

    현업에서야 당연히 하는거지만 신입들은 잘 모를수도 있긴하겠네요.

  • fender
    24k
    2021-03-21 17:23:58 작성 2021-03-21 17:24:37 수정됨

    스텁 // 오해를 피하기 위해 부연하면, 본문의 내용은 이름 규칙이나 소스 포매팅을 눈으로 찾아내는 것이 실력이다라는 주장은 아닙니다.

    그런 종류의 문제가 소스에 반복적으로 드러나도 눈에 거슬리지 않아 간과한다면 코딩 경험이 부족함을 유추할 수 있다는 것이 핵심입니다.

    내비게이션을 쓰건 안 쓰건 길을 못 찾으면 운전 경험이 적거나 최소한 그 지역의 지리를 모른다고 짐작할 수 있다는 이야기와, 운전을 잘하는 사람은 내비게이션 같은 건 쓰지 않는다는 말은 같은 주장이 아니기 때문입니다.

  • 스텁
    2k
    2021-03-21 18:47:48

    아마도 코딩 스탠다드가 일정해야 한다는 관점을 말씀하신거 같고 매우 동의합니다.


    다만 린터가 없으면 10개중의 7~8개는 일관적으로 하다가도 2~3개는 놓치기도 합니다. 2~3개 정도 갖고

    아 이사람 기본이 없네! 할거냐, 2~3개는 실수 할지도 있지...라는거냐는 매우 주관적입니다


    신입이 아니고 경력자의 경우  회사에 따라서 코딩스탠다드가 제각각 다르기 때문에 어디서는 카멜케이스 어디서는 스네이크케이스 쓰기도 하기 때문에 이직 두번만 해도 한두개 정도는 습관적으로 혼용해서 쓰는경우도 있을수 있긴합니다.

    개발자가 로직도 신경쓰기 바쁜데 코드 포맷팅은 그래도 신경쓰지마라 라고 해서 나온게 린터이니쓰면은 도움이 되시겠다~~ 라고 말씀드린것뿐이구요


    좋은글 잘 읽었습니다 ^^

  • Greed
    6
    2021-03-23 13:00:17
    스스로 흥미를 가지고 프로젝트를 진행해본 경험이 있다면 정말 좋을텐데 말이죠... 
  • 호호프로
    54
    2021-03-31 07:30:00 작성 2021-03-31 07:30:36 수정됨

    구직 준비중인 신입분들에게 좋은 내용으로 보이는데 어떤 부분이 장황 한건지?

  • 공부공부킹이다
    2021-03-31 17:16:59

    뭐지 1페이지가 장황하면 음...혹시 글 4행시만 읽으시나요?

  • fender
    24k
    2021-04-01 09:56:18

    exexexe // 간결한 팁 드립니다:

    "문해력이 부족하면 독서를 하는 것이 좋다."

  • 공부공부킹이다
    2021-04-01 09:58:14 작성 2021-04-01 10:01:15 수정됨
    존나 알찬데여; 그럼 님이 쓰시는건 어때요 exexexe님 존나 송강정철이신거 같은데 본인이 글 쓰시고 밑에 링크 부탁드립니다. 말을했음 시범을 보이셔야죠 ㅎㅎ
  • MADELITE
    913
    2021-04-01 23:30:19

    신입 개발자에게 도움이 되는 좋은 글입니다.

  • chlguswns980105
    149
    2021-04-02 16:52:41 작성 2021-04-02 16:54:53 수정됨

    3달차 신입 개발자입니다.

    굉장히 멍하네요..

    23살 고졸인생 처음으로 코딩 접하고 재밌어서 국비학원 6개월 수료 후

    24살 되고 어거지로 이력서 살포하다 겨우 입사했습니다.

    포폴은 당연히 학원에서 작성하란대로, 이력서도 학원에서 작성하란대로..

    내가 재밌으니 당연히 코딩은 그 학원 내에서는 상당히 많이 한 축에 속합니다.

    학원 팀 프로젝트 비중도 압도적이고,

    현재 BOJ에서도 풀어낸 문제가 900문제 이상입니다.

    그런데 깃허브조차도 안써봤네요.

    무언가 프로그램을 개발해보지도 않았네요.

    그냥 난 코딩이 재밌어! 하고 마냥 문제나 풀어제꼈지, 

    결국 실전에서 저를 써먹을 수는 없네요.

    입사하고 나서 사수는 없고, 상사는 소스코드 던져주고 분석하고있어라 하고,

    임원이나 다른 과장들은 너 하는거 뭐냐 하고있고..

    이직하고자 하는 마음 가득 담은 상태에서 이 글 보니까

    다른데에서 저를 받을 이유가 하나도 없네요.

    국비학원 수준에서 나정도면 괜찮은 축인줄 알았는데,

    이력서를 살포할 때 왜 그렇게 연락이 안오나 했던게 이제 이해가 갑니다.

    10
  • ㅠㅠㅠㅠㅠㅠㅠ
    483
    2021-04-06 10:56:19

    이 글을 읽으며 느껴지는 게 많을 뿐더러

    개발은 재능 등등보다도 적성이 가장 중요 한 것 같음.

    다른 일들도 마찬가지겠지만, 개발이라는 것 만큼은 적성이 정말 중요하다고 생각 됨


  • 베스트오퍼
    124
    2021-05-28 15:29:15

    글을 읽으면서 많이 배웠습니다.


    저는 하나 의견이 다른점이 있다면 언어마다 다른 케이스 이지만 경험상 마이그레이션작업 중

    같은 소스파일을 구 gcc 및 최신 gcc로 버전에 따라서 빌드시 안되는경우들이 있어서 

    메인 소스를 가지고 버전별 빌드 후 해당 파일들을 관리를 했었던 적이 있습니다.

  • 마하카스
    1k
    2021-06-11 16:47:36

    글 읽으면서 배워갑니다.


    정말 오랫동안 노력의 세월이 보이는 말들이었습니다

  • M_AI
    56
    2021-07-08 22:58:03

    조언 감사합니다

  • 궁예
    40
    2021-07-28 13:10:30

    좋은정보감사합니다

  • 황뱁새
    124
    2021-08-11 15:37:31

    좋은 정보 감사합니다. 그 동안은 공부를 위해 구현을 목적으로만 했는데 가이드라인도 찾아보면서 해야겠다는 생각을 가지게 되었습니다. 감사합니다.

  • youngyoung
    2k
    2021-11-03 20:13:59

    커밋의 최소단위는 동작 구현이 다 안되어도 좋으니 에러없이 움직이는 상태로 넣는거라던 사수가 생각나네요

    신입분들이 명령어 한줄씩 고치고 하나하나 커밋하는걸 보다 보니

    깃을 웹하드로생각하냐는 말이 딱 들어맞는거 같아서 좋은내용 잘 읽었습니다

  • 로그인을 하시면 댓글을 등록할 수 있습니다.