코드스테이츠 백엔드 합격 - kodeuseuteicheu baeg-endeu habgyeog

  개발자가 하고 싶어서 코드스테이츠에 들어왔다. 그전에는 무엇을 좋아하는지 나는 어떤사람인지 나 자신을 모르는 사람이었다. 그래서 무슨 배짱인지 대학교 때에도 공부도 안하고 살았다. 심지어 집돌이어서 무엇이든 경험을 해보아서 견문을 넓힐 생각도 없었다. 지금 생각하면 참 한심스럽다는 생각이 들지만, 그게 지금의 원동력이 조금이나마 되고 있는것 같고, 되었으면 하는 바람이 있다. 하고 싶은건 없었지만 사촌형들 중에서 ROTC출신이 많았고 자연스레 나도 ROTC를 하게되면서 군 입대를 하였고, 꿈이 없었지만 애국심 하나로 직업군인을 선택하려 하였다. 그리고 장교로서 군복무를 하면서 많은것을 느꼈다. 물론 다른 동기들에 비해 힘든 병과와 열악한 환경에 있어서 더 느꼈는지는 몰라도, 만약 병출신으로 군복무를 하였다면 많은것을 깨닫지 못하였을 것 같다.

우선 애국심과 군인의 직업은 일치할 수 없다는것. 나에게 맞지 않는 옷을 입으려 할 때 그 갑갑함은 견딜 수 없었다. 그리고 나 자신에 대해 잘 알아야 한다는 것. 다만 세상에 대한 경험이 적거나 꿈이 없더라도 애국심이 있으면, 장교로서의 군복무는 정말 좋은 것 같다. 물론 쉽게 생각하여 주위사람들에게 피해를 주면 안된다고 생각한다. 무능한 상관은 적보다 무섭다는 말이 있으니까.

  전역을 하고 나 자신을 많이 돌아보려고 노력하였다. 무엇을 좋아하는지, 나의 성향은 무엇인지. 나를 돌아본적이 잘없어서 심지어 유료로 MBTI검사도 하고 직업적성검사도 하였다. 그리고 많은것을 경험하려고 노력하였다. 그러면서 개발자의 직업에 눈에 들어왔다. 연공서열이 적고, 분위기가 자유롭고, 사회의 흐름에 잘 적응하는 편이며, 필요한 변화가 많고, 앞으로의 수요가 많은 직업이라는 장점이 눈에 들어왔다. 그리고 나의 성향과도 너무 잘맞았다.

개발자를 하기 위해서 많은 곳을 뒤져 보았는데 비전공자가 개발자가 되려면 크게 3가지가 있는 것 같다. 독학, 부트캠프, 국비.

  처음에는 국비는 아무래도 잘 골라가야한다는 말들이 많아서, 돈을 주는 곳이 더 좋다고 생각해 코드스테이츠를 하고 싶었지만 큰돈이 부담이 되어서 We win 모델 (취업을 하고 일정 퍼센트 만큼 지불)을 지원했는데 번번히 안되었고, 그래서 국가에서 지원을 해주는 42서울이라는 곳에 지원을 하였지만 무조건 선착순이어서 어쩌면 시험보다 더 잔인한 방식 때문에 경쟁률을 뚫기가 어려웠다. 42서울은 코드스테이츠와 닮아 있어서 지원 하실분들은 선착순을 뚫기만 한다면 100만원 지원도 해주기 때문에 정말 좋은것 같다. 물론 라피신이라는 한달 지옥도 견뎌서 합격을 해야하지만. 요즘 개발자를 하려는 사람이 많아 생각보다 너무 어려웠다. 공부를 하고싶어도 못하는 상황이 오니 참 답답하고 억울했다. 시간은 계속 흐르기 때문에 돈을 주어서라도 들어가야겠다고 생각하여서 코드스테이츠 upfront 모델을 선택하여 선지불을 하였지만 코드스테이츠에서도 정말 의지가 강한사람들만 뽑아야 손해가 없기 때문인지, 돈을 지불하여도 자소서와 스스로의 성향에 대한 객관식을 진행하였다. 혹시나 하는 마음에 불안 하였지만 경쟁률이 적어서 그런지  다행이 30기수로 되었다.

  코드스테이츠를 하면서 느낀 점은

우선 첫 번째로 불친절한 시스템. 주입식 교육이 아닌 자기주도적학습으로 스스로 시간표, 커리큘럼에 맞춰서 진행해야한다. 하지만 지금에 와서는 굉장히 합리적이고 편하다고 생각한다. 그리고 수업을 진행하다보면 참 어렵다고 느낌이 드는데 함정에 걸린다는 느낌이 좋은 표현인것 같다. 설명도 부족하기 때문에 의도적인 함정인지 실수로 만든 함정인지 궁금증이 막 생겨난다. 하지만 깨달음을 얻어 덫을 빠져나오는순간 나는 성장한다는 느낌도 들지만 성장보다는 지혜가 늘어난 느낌이 더 든다. 그 상황이 되면 정말 답답 그 자체지만 함정에 빠져나온다면 큰 희열을 느끼게 된다.

그리고 코드스테이츠에서 고쳤으면 좋겠다는 점은 오타와 교육자료의 최신화가 좀 필요한것 같다. 오타는 발견하면 계속 발견하게되어서 굉장히 거슬리기도하지만 넘어갈수 있는 부분이지만 교육자료의 최신화가 되지 않아서 이미 알고있는 내용이 아닌이상 의문점을 계속 만들게 된다. 이것 조차도 함정이라 생각하여 스스로 해결하다보면 많은것을 깨닫게 된다..ㅎ

두 번째로 코드스테이츠에는 한 기수에 많은 사람들이 있는데 사람들 간의 지식 차이.

컴공이나, 이미 배워서 잘하는사람들이 종종 있다. 잘하는분들이 왜 코드스테이츠를 하는지 의문은 들지만, 하는 것은 자유이기 때문에 크게 의미가 없다고 생각했다. 하지만 여포처럼 무자비 하거나 박찬호 TMI를 연상케 하시는 분들이 있다. 물론 의도적이진 않겠지만 완전 코딩 처음하는 분들이나 나에게 의욕상실을 제공한다.

지식자랑, 자기가 작성한 코드를 자랑, 어려워하시는 분들의 질문에 답변을 수준높거나 튀어보게 할 때.. 나쁜 의도는 아니고 좋은 문화라 생각하지만 여긴 같은 수준의 개발자들이 아닌, 다양한 사람들이 모인 부트캠프이고 좋은 의도로 남에게 하여도 남에게는 그렇지 않게 느낄 수도 있기 때문에 조금은 조심해야 할 필요성이 있다고 한다. 참 어려운 부분이긴 하다.

그렇기에 나같은 코딩 초보자들은 멘탈을 단단히 해야된다. 잘하는분들 보면 '잘하네' '저렇게도 하는구나 배울점을 찾아야지' 정도의 생각을 하고 '나는 왜 못하지' 라는 생각을 절대 하지 말아야한다. 그렇기 때문에 '나는 나다' 라는 생각으로 비교를 하지 않아야 한다. 마지막으로 구글이라는 좋은 선생님도 있고 스스로 해결하다보면 실력도 늘고 다음 허들이 넘는게 재밌어진다. 허들을 넘을려면 20분 ~ 40분 걸리지만, 동기분들이 항상 내 옆에서 답변해 주지 않기 때문에 스스로 해결하는 능력은 중요한것 같다.

세 번째는 블로그를 작성하는것이 중요하다.

코드스테이츠를 자료를 복붙을 하는것 같아도 블로그를 쓰는 과정에서 정리가 굉장히 많이 되고, 다른사람이 나와 같이 정말 모르는 상태에서 본다면 어떻게 도움을 줄지 생각하게 되면서 자료를 좀 더 다듬고, 조금이라도 더 찾아보는 과정에서 복습도 하고, 생각도 많이 정리되고 무엇보다도 좋은 점은 개념에 대해 놓친 부분을 찾게 된다. 의미없이 아무생각없이 그냥 복붙을 한다면 그냥 안하는게 더 나은것 같다. 자신이 이해하고 생각하면서 블로그를 써야 더욱 더 의미가 있고 가치 있다고 생각이든다. 친구의 필기를 베껴 쓰는거랑 자기가 직접 필기를 하는 것은 다른것 처럼!

두 번째 이야기와 상반되는 이야기일 수도 있지만, 최근 알게 된 내용으로는 자신의 알고있는 내용에 대해 설명을 자주 하면 자신이 막히는 부분을 찾아 낼 수 있고, 막힌다는 것은 알고있지 못하다는 뜻이기에 막히는 부분에서 공부를 해야 된다고 한다. 결국 잘하려면 설명을 자주 많이 해야 한다는 내용이다. 하지만 부모님이나 어린아이들에게 또는 동기들에게 붙잡고 하는건 참 민폐일지 모른다. 그래서 생각한 것이 블로그에 내용을 정리할 때에 코딩에 관심있는 어린아이, 내가 이 내용을 배우기전이라 생각하는 과거의 나에게 설명한다고 가정하고 블로그를 쓰고 있다. 그래서 게시글을 써놓고도 종종 들어와서 읽고 다시 수정하려한다.

마지막으로 페어라는 것에 쓰고 싶었지만 아직 두 분만 만났기에 이렇다 저렇다 말은 하기 어렵지만, 확실한 것은 내가 하는 말이나 태도에 대해 반성이나 스스로 돌아 봐야 될 것 같다. 개발자는 커뮤니케이션이 많이 필요한 직업이라 알고는 있었다. 하지만 페어를 진행하면서 더욱더 그렇게 느낀 것 같다. 상대방의 머리속과 나의 머리속, 상대방의 생각과 의도와 나의 생각과 의도는 무조건 다를 수 밖에 없다. 아직은 상대방 페어분도 코딩이 처음이셔서 어렵기 때문에 서로 피드백이나 나아가는 방향에대해 이야기 하기에는 아직 어려운 경향이 있는것 같다. 그래서 내가 하고싶은 말은 주로 하는 편이어서 불쾌하게 하는건 없는지, 잘못하고 있는건 없는지, 말하는 방식이 공격적이지 않은지 생각을 주로하는데. 나는 급한 마음에 은근히 말을 자르는 것 같아서 되돌아 보려고 노력한다. 착하신분들이라 말을 안 할 수도 있으니까.. 다행이 좋은 페어들분들을 만나서 즐겁게 하였다. 

코드스테이츠를 1주일밖에 안했지만 정말 많은 시간을 부어서 힘들다는 생각보다는 즐겁다는 생각이든다. 하고싶었기 때문에. 힘들어서 더 재밌는 것도 있는 것 같다. 이 생각이 오래갔으면 하는 마음에 코딩을 해야겠다.

오늘 아주 좋은 자극이 될만한 Talk Session 에 참여했다.
나보다 한참 먼저 수료하신 분의 채용과정 후기를 들을 수 있었는데
정말 자세하게 들을 수 있었다 .

순서는 이렇다.

  • 채용일정
  • 코딩테스트 준비
  • 1차 면접
  • 인턴
  • 2차 면접
  • 마지막
  • Q&A

채용일정

총 5개월 소요 !

  1. 9/18 서류마감
  2. 9/24 ~ 9/27 코딩테스트
  3. 10/16 1차
  4. 10/23 인턴합격발표
  5. 11/9~ 12/18 인턴 6주
  6. 2/3 2차 (전환면접)
  7. 2/5 합격발표
  8. 2/22 근무시작

채용까지 진행된 과정인데 , 리스트로 보니 그다지 길지 않아보이지만
안봐도 얼마나 무거웠을지 체감이 되는 과정이였다.

당연히 개발자 채용에 있어서 이러한 과정을 거치는건 어렴풋이 알고 있었으나 ,
실제로 들어보니 내가 생각했던것 이상으로 힘들어보였다.

코딩테스트 준비는 ?

국내는
프로그래머스 , 백준 정도가 유명하다고 하셨다.

내가 아는 사이트도 그정도고 해외로는 해커랭크 , 코드워즈 정도였는데 ,
더 좋은 사이트를 얻었다 .

leetcode 추천

leetcode

장점

  • leetcode 의 장점은 Javascript로 모든 문제를 풀 수 있다.
  • 양질의 해답 제공

    다른 사이트들이 하나의 답을 제공하면 leetcode는 다양한 방안을 제시한 다는것 같아 마음에 든다.

  • 어려운 문제 같은 경우는 결제를 해야 solution 확인이 가능하지만
    다른사람들의 comment 를 통해 다양한 해답 풀이를 볼 수 있다.
  • 다른사이트와 달리 문제를 풀지 않아도 해답을 볼 수 있다.

단점

  • 솔루션이 보통 Java로 되어있음
  • 영어로 되어있음

하지만 다른사람들의 코멘트에서 자바스크립트로 작성된 해답을 얻을 수도 있다고 한다 !

1차 면접은 ?

  • 다수의 프로젝트를 경험한 경우 :

    • 프로젝트 경험 위주로 질문한다.
  • 전공자의 경우 :

    • 전공지식 체크
    • Network , os , db , data structure
    • 간단한 코딩테스트
  • 비전공자의 경우 :

    • 아무래도 비전공자이다보니 면접까지 가는 난이도가 어렵지만 불가능 하지는 않다.주로 기술면접과 네트워크를 보셨다고 한것 같다.
      비전공자인 나에게는 강철벽으로 느껴지기만 한다 😂

    인턴 ( 6주 )

    인턴과제

  • 1 ~ 2명이 한조로 프로젝트 진행

  • 프로젝트의 주제는 현 서비스의 기능 개선 제안의 성격이 강하다.

  • 프로젝트를 통해 실무를 잘 수행할 수 있는지 평가

  • 서비스에서 이미 사용중인 기술 스택에 대한 적응 유도

    코드스테이츠 4주 프로젝트와 유사한 과정을 거친다고 하셨는데 ,
    단순히 기능만 완성해서는 안될것 같다.
    어느정도 분석을 해야 프로젝트를 진행 할 수 있어 보인다 !

2차 면접

keyword : ' 왜 '

  • 왜 그렇게 했는지
    • 왜 서비스를 이렇게 설계했는지
    • 왜 이 기술 스택을 사용했는지
    • 왜 코드를 이렇게 짰는지
  • 하나를 알아도 깊게
    • 사용하는 프로그램, 언어 , 라이브러리 등 외부 API만 숙지해도
      사용하는데 큰 문제가 없지만 , 내부 동적에 대한 깊은 이해가 필요

정말 많은 내용이 있었지만 지금 내가 알아야할것은 " 왜 " 에 대한 구체적인 설명이 가능해야한다는것
설명을 하지 못하면 의도를 완벽히 파악하지 못했다는 것이고 내것으로 만들지 못했다는 말이 될것같다.
깊이 있게 알아야하는것은 더 넓은범위의 지식을 습득할 수 있게 된다고 생각했다.
솔직히 언어 , 라이브러리 , API들은 도구에 불과하다고 보는데 ,
깊게 원리를 이해하면 어느 언어 , 라이브러리든 비슷비슷하리라고 본다 !

마지막

  • 수시 채용과 같은 기회를 적극 활용하자

    수시 채용에서 신입채용을 하는 경우는 해당 포지션에 인력이 부족할 경우가 있다한다.
    지인중 백엔드 개발자로 취업한 분이 있는데 이분은 회사가 처음으로 신입을 뽑는건데
    합격하셔서 지금 일하시는중이다.
    이또한 같은 경우라고 볼 수 있지 않을까 싶다.
    나도 기회를 잘 노리고 적극적으로 움직이도록 해야겠다.

  • 긴 채용 과정은 성장의 또다른 기회다

    앞서 말한 채용과정은 길었다.
    긴 과정에서 얻을 수 있는 지식은 프로젝트로 언어 , 라이브러리를 익히는것보다 더욱 가치있는 일이라 고 생각하고있다.

  • 협업의 경험은 나에게 큰 가치다

    생각해보니 이전에 현업에서 면접보러 온 분 중 실력이 굉장히 뛰어난데 혼자 잘하는 사람이 있었다.
    우리회사는 굉장히 밝은 회사였는데 면접시간이 지나면 지날수록
    점점 소통이 안되거나 , 분위기가 이상해졌었다.
    협업 관련내용을 질문드려도 답이 없었던걸로 기억한다.

Q&A

내가 기억나는 Q&A

회사생활은 어떤지 ?

  • 아침식사 제공이 되는데 원하는대로 담아 먹을 수 있다.
  • 업무 난이도는 상당히 어려운편이라 , 퇴근시간이 되어도 금방 들어가는 분들을 보지 못했다.

근데 생각해보니 나도 업무처리가 우선이라 퇴근을 버린적이 많았다 ㅎㅎ..
이런 상황은 당연 적응할 수 있지만 건강관리를 더 잘 해줘야 겠다.

Course 정규시간 이외의 시간은 ?

  • 주로 그날 한 내용을 바탕으로 복습을 했다.

나도 최대한 그날 내용을 바탕으로 복습하고 문제풀이 , 블로깅에 집중해야겠다.
내가 나중에 잊어버리지 않기위해 블로깅 하는것도 중요하다고 보았다.

수료 후 어떻게 취업준비를 했는지 ?

  • 수료를 한 후에는 더이상 코드스테이츠 캘린더가 주어지지 않아
    코드스테이츠 습관을 그대로 유지해 가는것이 중요하다.

내가 가장 걱정하고 있는 부분은 수료를 한 후였는데 ,
과연 기간동안 열심히하던 열정이 그대로 유지 될까 였다.
그런데 코드스테이츠에서 지키는 룰들을 그대로 적용한다면
그렇게 나태하지도 않으면서 지속적인 동기부여가 될것 같다 !

코스 과정중 공부는 ?

  • 개념 공부시 정말 이해가 안되는데 계속 붙잡지 말것
  • 가끔은 아예 덮어두고 동기들에게 조언을 듣거나 휴식을 취하자
  • 일단 모르겠으면 넘어가고 다음에 다시 돌아오자

나는 여기서 어느정도 해답을 얻었다.
솔직히 며칠전까지도 하나의 개념을 이해못해서 스트레스만 받고
다른 진도를 나가지 못했었는데 내가 일단 그냥 넘어갔다면
그건 그거대로 나중에 다시 돌아봤을때 이해가 좀더 되지 않았을까 ??
단순히 과부하 와서 그런걸 수도 있으니 조금 쉬면서 할 수도 있고 말이다.

결론 : 나중에 다시 돌아오면 보이는것들이 있으니 유연하게 넘어가자 !

TDD를 적용해 프로젝트를 진행했는지 ?

  • 테스트 주도 개발을 적용하면 좋았겠지만 프로젝트 기간을 생각하면 적용하기 쉽지 않았다.
  • 오히려 기능을 빼기도 하면서 완성도에 집중을 했다.
  • 현재 제일 관심도 높은 주제중 하나라고 한다.

TDD 는 사실 이전 부트캠프에서 장고 프레임워크로 공부할때 처음 알았는데
이때 테스트케이스를 작성해나가는 연습을 동기들이랑 같이 했었다.
근데 나는 솔직히 이게 정말 어려웠고 , 적용되는게 맞는지 궁금했다.
이 부분에 대해서는 여전히 의문이지만 좋은 방법론중 하나라는것은 확실한것 같다.

정리

아직 나는 Pre Course 2주차다.
솔직히 코플릿 문제도 페어들 도움을 많이 받고 ,
알고리즘 사이트에 나오는 문제도 전혀 못푼다.
내가 난독증이 있고 , 창의성이 부족하기 때문이라고 생각하는데,

이번 세션에 참여함으로써 안되면 될때까지 ! 라는 도전정신을 자극받았다.
그저 두려운 영역인 개발자 취업이 이번 자극을 통해 나라도 변할 수 있다는것을 기록하고싶다.

나도 좋은 개발자가 되어 언젠가는 나처럼 두려워하거나
조금 더딘 사람들에게 조금은 희망찬 메시지를 던질 수 있는날이 오면 좋겠다.