후하하핫
5k
2021-10-16 19:56:25
38
11170

네카라쿠배 가고 싶은 (특히 학생) 분들께 드리는 조언


1. 네카라쿠배를 가장 쉽게 가는 방법은 자신의 기준을 올리는 것입니다.


추상적으로 들리시겠지만, 실제가 그렇습니다. 바깥에서 볼 땐 어떨지 몰라도 이 회사들은 학벌을 많이 보는 회사들이 아닙니다. 그럼에도 불구하고 좋은 학교 출신들이 많은 이유는 그 학교들 내에 학생들의 스스로에 대한 기준이 높습니다. 그 분위기에서 열심히 하다보면 그냥 학교 공부만 열심히 해도 저 회사들을 가는거고요.

그럼 그 바깥에 있는 환경에선 어떻게 하냐가 문젠데, 기준을 높일 수 있는 기회에 많이 도전하셔야 합니다. 저의 경우에는 최대한 시야를 넓히기 위해 노력했습니다. 공모전, 오픈소스, 인턴도 많이 하고, linkedin 서치 하다 내가 가고 싶은 직장에 계신 분들에게 메일을 보내서 어떻게 공부하면 좋을지 여쭤보기도 했고요. ACM ICPC 와 같은 대회를 준비하시는 것도 좋고요.

최대한 높은 기준을 가진 사람들을 많이 만나보세요. 자기가 중요하다고 생각했던 것들이 생각보다 별로 중요한게 아닐 수 있어요. (면접 스터디 등) 자기가 되고 싶은 사람들의 시선에서 볼 수 있으면 그 실력이 바로 되진 못해도 언젠간 될 수 있을거에요. 애초에 네카라쿠배 가는 실력이 탈 인간급 실력이어야 가는 것도 아니구요.


2. 최대한 깊히 파라

네카라쿠배 중 한 회사에서 학부 때 인턴을 했었는데, 그때 정직원 면접에 대한 얘길 들었던게 재밌었습니다.

예를 들어서, Java 언어 사용자를 대상으로 면접을 본다고 합시다. Garbage collection이 뭐냐고 물어본다고 하죠. 거기에 대답을 잘 했다면, 그 다음 질문으로는 Garbage collection 알고리즘들에 대해서 알고 있는 것에 대해서 얘기해 달라고 합니다. 보통은 여기에 대답을 잘 못하죠. 예를 들어서 mark-and-sweep 같은 알고리즘을 얘기했다면, mark-and-sweep 알고리즘의 단점이 뭔지를 물어봅니다.

이런식으로, 하나의 토픽에 대해서 잘 모르겠습니다가 나올 때 까지 계속 깊히 들어가는겁니다.

어떤 것이든 깊히 판 사람은 다른 것도 쉽게 배울 수 있기 때문에 이렇게 하는건데, 보통 학부 졸업생 중에 이게 준비 되어 있는 사람이 매우 드뭅니다.

즉, 이것도 해야 할 것 같고 저것도 해야 할 것 같은 불안한 마음이 드시겠지만, 언어나 framework 하나 정해서 끝까지 파보세요. 주변에서 자기가 그걸 제일 잘 아는 사람이 되고, 시중에 나와 있는 2차 자료들 중에 자기가 못 본 게 없을 때까지 계속 파세요. 깊게 파면 다른걸 배우는데 아주 적은 시간만 걸립니다. 포트폴리오는 시간만 들이면 누구나 만들지만, 이런 기술적 깊이는 아무나 만들 수 없어요.


3. 기본을 튼튼히

네카라쿠배가 문화가 다 다를진 모르겠는데, 최소한 제가 인턴 했던 곳에선 신입이 학부 때 쓰던 언어나 framework 같은 곳은 크게 보진 않았습니다. 학부 수업에서 다루는 내용 잘 숙지하고 있는지, 협업을 하는데 문제가 없는지가 더 중요하죠. 항상 프로젝트는 바뀌고 언어들도 새로 나오니까요.

역시 기본은 학교 수업입니다. 학교 수업 열심히 들으시고, 슬라이드나 수업만 보고 끝내지 마시고 꼭! 교과서를 읽어보세요. 문제를 다 안풀어봐도 되니, 교과서를 열심히 읽고 문제를 보면서 생각을 깊히 해보세요.


4. “세상에 쥐톨만큼의 영향이라도” 주는 프로젝트를 하세요.


”내가 ~언어 할 줄 압니다” 에 대해서는 현업자들은 학생들의 말을 믿지 않습니다. 실제로 서비스를 해서 고객들을 만나봤냐의 여부가 아주 큰 차이를 가지기 때문인데요,

이런 의미에서 프로젝트를 하실 때 포폴용으로 하시는건 임팩트가 작을 수 밖에 없습니다. 세상에 쥐톨만한 영향이라도 주는, 고객이 있는 서비스를 만들어 보세요. 누구도 이 경험을 무시하지 못할거에요.


5. 마치며


네카라쿠배는 (최소한 이제는) 대기업이고, 대기업에선 엄청난 고수를 뽑는게 아니라 톱니바퀴에 넣어서 문제가 되지 않을 사람들을 뽑을 수 밖에 없습니다. 많이 뽑아야 하니까요.

그렇기 때문에 네카라쿠배에 가고 싶으시다면, 네카라쿠배에 간게 인생에서 가장 큰 자랑이 되면 안됩니다. 그보다 더 높은 기준을 갖고 가셔야 그 다음 커리어가 성립합니다. 이 허들은 전체 개발자 일생에서 시작에 불과하니까요.

좋은 개발자들이 업계에 많이 들어왔으면 좋겠다는 마음에서 긴 글을 남기게 되었는데요, 다들 화이팅입니다.

68
94
  • 댓글 38

  • hoon Cli
    92
    2021-10-16 20:09:54

    공부하는데 있어서 참고가 되는 글 감사합니다.


    위의 예시는 얼마전에 공고나왔던 초록회사같네요 ㅎㅎ

  • ReturnNull
    2021-10-16 20:47:32 작성 2021-10-16 20:50:41 수정됨

    정말 맞말인데 '네카라쿠배'라는 단어를 빼고 '연봉 4천 이상 주는 좋은 기업' 바꾸면 완벽할 것 같습니다. 

    '네카라쿠배'는 사실 'SKY 가는 비법'같은 이야기가 되어버려서....-_-

    사실 학생신분에서 그냥 등록금을 알바 뛰어서 버는 학생들 입장에서는 사실 네카라쿠배는 불가능...



    -15
  • 후하하핫
    5k
    2021-10-16 21:11:01

    @윌리양: 절대 그렇지 않다는 얘길 하고 싶었습니다. 네카라쿠배를 신화적 존재들이 가는게 절대 아닙니다. 저부터도, 또 제 주변에서도 집안 어렵고 알바 뛰어가면서 공부해서 간 친구 후배들 많습니다. 또한 최근에 국가근로장학금으로 교내 입주기업에서 일하면서 벌 수도 있고요. 방법은 많습니다.

    핵심적인 문제는 시야가 넓지 않은 이유로 시간 낭비를 한다는겁니다. 쓸데없이 교양학점 높히려고 수업을 이상하게 듣는다거나, 도움도 안되는 챌린저스 같은걸 한다던지, 괜히 보여주기 위한 포폴 만드는 걸 하는겁니다. 그냥 학교 수업 열심히 듣고 기본 탄탄히 하고 파면 되는데요.

  • 개발마라토너
    4
    2021-10-17 19:29:54 작성 2021-10-17 22:10:02 수정됨

    도움되는 글 잘 읽었습니다!

    글을 읽다 궁금한 게 생겨 질문드려봅니다


    저는 컴공과 2학년에 재학 중인 학생입니다

    글에 교과서를 잘 이해해라 라는 말씀이 있으셨는데

    저도 교과서를 정독하며 기본기를 탄탄히 쌓는 것이 중요하다 생각하여

    교과서를 정독하기 위해 노력하였습니다

    그러다 보니 학기 중엔 다른 의미있는 공부, 활동을 생각할 수 없을 정도로 빠듯한 것 같습니다

    몇몇 사람들은 그러다 실무능력없는 똑똑한 바보가 되기 십상이라며 학교 공부보단 실무능력을 중점으로 공부하라고 조언해주시더라구요


    그래서 교과서만 읽기도 벅찬 상황이 정상인 것인지 아닌지 궁금합니다


    제가 부족한 것이라면 
    1. 그래도 일단은 실무능력을 위한 공부보다 교과서를 최대한 정독하려 해야하는지
    아니면

    2. 저의 공부 효율을 높여 교과서를 빠르게 정독하고

    제가 원하는 진로의 공부도 추가적으로 해야하는지 궁금해서 댓글 남겨봅니다!

  • 후하하핫
    5k
    2021-10-17 23:21:46

    @개발마라토너

    좋은 질문이고 저도 같은 고민을 많이 했었습니다. 제 중간적인 결론을 공유합니다. (완벽하지 않습니다.)

    1.

    어떤 공부이든, 잘 알고 있으면 다음 것을 훨씬 빠르게 배울 수 있지만, 처음에 습득하는데 시간이 걸립니다. 어쩔 수 없는 부분이죠.

    저는 이런걸 고려해서, 학부 다닐 때 전공과목을 한 학기에 너무 많이 듣지 않는 것을 권장합니다. 최대 세과목 이상을 듣지 않고, 대신 듣는 과목들을 빡세게 공부 하는것이죠. 이렇게 하다보면 후반으로 갈수록 훨씬 쉬워질거에요. 컴구조와 시스템 프로그래밍을 잘 들어 놓으면 운영체제를 더 쉽게 공부할 수 있고, 운영체제를 잘 공부하고 나면 DB를 훨씬 잘 이해할 수 있어요.

    2.

    실무능력 없는 똑똑한 바보가 된다는 의견을 저도 많이 들었고, 그에 따른 조급함이 없었던 것은 아니지만, 더 멀리 볼 필요가 있다고 생각합니다. 신입이 실무를 못하는건 당연한거고, 그 부분은 회사에서 메울 수 있지만 공부하는 능력과 통찰은 메우기 굉장히 어렵습니다. 다행히 최근의 좋은 회사들은 그런 부분에 좋은 점수를 줍니다.

    생각하셔야 하는건, 그렇다고 해서 코딩을 등한시 해도 된다는 얘기가 아닙니다. 코딩은 정말 잘해야 하고, 책으로만 배운 지식은 의미가 없습니다. 제가 드리는 말씀은, 학부 때 node.js 나 spring을 "쓰는 방법"에 골몰하지 마시고, 어떻게 node.js나 spring을 만들 수 있을지에 대해 생각해 보라는 뜻입니다. Linux의 advanced 한 command를 배우기 보다는 linux를 어떻게 만들었는지 kernel.org 가서 소스코드를 까보세요.

    이렇게 하는게 바보 같고 더뎌 보이지만, 후에는 찐하게 남고, 따라올 수 없는 차이를 만듭니다.

    3.

    방학을 잘 활용하세요. 방학 때야 말로 코딩을 많이 할 수 있는 좋은 기회입니다. 개인적으로 계절학기를 비추하는게, 그 시간을 보내고 남은게 학점 하나 밖에 없습니다. 그 시간에 코딩을 겁나 하세요. 하고 싶은 공부도 많이 하시고, 만들어 보고 싶은 것도 만드시고, 오픈소스도 까서 읽어 보시고요.

    저는 좀 미련하게 모든 방학 때 인턴십을 갔는데, 이렇게까지 할 필요는 없어요. 안좋은 회사에 인턴십 가는건 시간 낭비이니, 준비 잘하셔서 좋은 회사나 해외 기업에서 인턴을 하시든 Google Summer of Code, Imagine Cup 같은 대회에 나가시든 좋은 경험을 많이 하시길 바랍니다.


    궁금한게 더 있으시면 얘기해 주세요. 화이팅!

  • 후하하핫
    5k
    2021-10-17 23:23:46

    하나 빼먹은게, 같이 공부할 동료들을 꼭 만드세요. 어려운 공부는 같이 하면 훨씬 진도가 쉽게 쉽게 나갑니다. 게다가 지금와서 돌아보면, 저랑 이렇게 같이 공부했던 친구들이 제가 생각했던 것 이상으로 너무 너무 잘 나가고 있어요. 이렇게까지 열의를 가지고 공부하는 사람은 한국에 그렇게 많지는 않거든요.

  • 코딩을지켜츄
    1k
    2021-10-18 09:39:56

    결국 공부의 정도와 같은 내용인거 같네요.

    React도 사용하려고 API문서 대강 읽고 바로 만들어서 하나하나 읽으면서 쓰고 약간 advance한건 다 넘어가고 이렇게 오랫동안 썼더니만 이제 깊게 공부해야 할 시기가 오더라고요. 돌아돌아 다시 API문서 재회독을 해야할 단계가 오니, 시간이 급박하지 않다면 하나배울때 그거 약간 끝을 본다는, 내가 이런것까지 공부해야할까 한 것 까지도 공부하면 나중에 그 쪽에선 탄탄한 자신감이 나오는것 같아요. 

    저 위 글에서 살짝 빼먹은? 아니면 포함된거긴 하지만 강조가 안된게 있는데 코테는 일단 빡세게 공부해야 한다는거 ㅎㅎ
    하긴 학부때 알고리즘 빡세게 해놓으면 되겠네요.

  • 후하하핫
    5k
    2021-10-18 09:46:40

    @코딩을지켜츄: 좋은 의견 감사합니다.

    스탯을 어디에 찍냐에 따라 다르긴 한데, 제 주변에 ACM ICPC 준비하던 친구들은 코테를 거의 준비 안하고 가기도 하고 (평소에 이미 준비가 되어 있으니), 꼭 그렇지 않더라도 알고리즘 기본기를 잘 다져 놓으면 저나 제 주변의 경우에 1개월 정도 문제 풀어서 익숙해 지면 면접 때 큰 문제는 없더라구요.

  • Lee Yeongja
    32
    2021-10-18 13:16:16

    꿀같은 조언 감사합니다 !

  • Dive_Drink_Develope
    6k
    2021-10-18 15:01:25

    학부때 개발파트너

    학기중에 주요 CS과목 확실히 이해하고 넘어가기

    방학중에 토이프로젝트

      - ~~언어/~~프레임워크 튜토리얼로 시작해서 이거저거 살붙여서 실제 서비스 단계까지 진행해보기


    CS과목을 깊이 팔 시간은 학부때밖에 없습니다.


  • SMleejs
    16
    2021-10-18 16:22:09

    감사합니다 ! 잘 봤습니다!

    혹시 현직자(1년차미만~ 2년차 미만)에게 줄 수 있는 조언은 없을까요?

    네카라쿠배는 아니여도 대기업정도를 준비하고 싶어서요.

    프론트를 주로 하고 있습니다.

  • 후하하핫
    5k
    2021-10-18 17:25:45

    @SMleejs

    좋은 질문 감사합니다. 기술적인 부분과 인간관계적인 부분을 나눠서 얘기해 볼 수 있겠네요.


    1.

    공부는 어차피 죽을 때까지 계속 하는거고, 일정 수준 이상을 하시는 분들은 공부하는건 체화 되어 있습니다. 공부는 그냥 열심히 하시고요.

    신입이면 증명할 수 있는게 많지 않기 때문에 포텐을 스펙이라는걸로 간접 증명하는 것인데, 경력자는 경력으로 증명하셔야 합니다.

    가장 좋은건 프로젝트가 성공하는 것이고, 그게 아니라면 최소한 완성해서 출시해야 합니다. 특히 프론트라고 하시니, 만드신게 직접적으로 보여질텐데, 사람들이 감동할만한 UX를 구현하는건 매우 좋은 플러스입니다. 대부분 개발자들이 코딩은 좋아해도 제품에 대한 열정이 많지 않은데, 완성도 높은 웹을 만드실 수 있으면 누구라도 인정합니다.

    만약 본인의 회사에서 하는 프로젝트가 그닥이라는 생각이 드시면 오픈소스로라도 가치를 증명하셔야 합니다. 특히 프론트 쪽은 오픈소스 생태계가 많이 만들어져 있고, 기여할 프로젝트가 많습니다. 업무 외 시간에 오픈소스 돌면서 버그도 잡고 기여하고 해보세요.

    3년차부터 사람 없다고 징징 대는 걸 보셔서 아시겠지만, 진짜 사람이 찾을래도 잘 없습니다. 깃헙 잔디밭 관리 잘 되어 있고, 성실하게 열심히 경력 쌓으신게 보이면 네카라쿠배가 그렇게 어렵지 않아요.

    2.

    사실 경력 채용의 많은 부분이 내부 추천으로 이루어 집니다. 저도 어느정도의 경력이 쌓인 후부터는 제가 먼저 지원하는 것 보단 공고가 뜨기 전에 저한테 먼저 오퍼가 오는 경우가 더 많았고, 공고를 먼저 보는 경우가 있어도 그 공고를 그 회사 아는 친구한테 보내서 어떤 분위기인지 물어봅니다. (NDA를 위반하지 않는 선에서)

    만약에 경력자인데 가고 싶은 좋은 회사에 아는 사람이 없다면 이직의 난이도가 매우 올라갑니다. 경력 공채를 뚫어야 하는데, 좋은 회사일수록 경쟁자가 많아지고, 특히 대규모 채용이 아닌 경우에는 실력이 만족되어도 그냥 등수가 밀려서 못들어가는 경우가 생깁니다.

    제 결론은 네트워킹을 하라는건데 (이건 학생도 포함해서 말씀 드립니다), 한국에선 문화적으로 네트워킹 기회가 많지 않아서 쉽지 않긴 합니다.

    그나마 가능한 팁을 공유해 드리자면,

    1) 위에 말씀 드린 것처럼 오픈소스나 블로그를 하세요. 특히 오픈소스는 그냥 contributor 수준으로 머물지 마시고, committer 들에게 연락 많이 해가면서 어떻게 하면 기여할 수 있는지 물어보세요. 좋은 기회가 생길 수 있습니다.

    2) 국내의 크고 작은 개발 컨퍼런스에 참석하시고, 되도록 발표 기회를 가지려고 노력하세요. 발표로 끝내지 마시고, 개발자 컨퍼런스 운영 위원회 같은 곳에 참여하려고 노력해 보세요. 페이스북 그룹들 돌면 특히 이런 기회가 꽤 많습니다. 이 과정에서 상대방에게 어떤 단어 하나로 기억 되면, 나중에 지원할 때 도움을 받을 수 있습니다.

    3) Linkedin에 가고 싶은 직장의 사람에게 메일 보내보세요. 열심히 하는 사람은 웬만하면 도와주기 때문에 (특히 우리 문화에서는), 조언도 얻을 수 있을 뿐더러 그 김에 친추도 하면서 인맥을 늘릴 수 있습니다.


    이 사이트 하면서 인맥에 대한 얘기가 나올 때 마치 부정한 것인양, 혹은 특권을 가진 사람들의 이야기인양 나오는 상황을 많이 봤는데요, 최소한 IT 업계에서의 인맥이라는건 전통적인 인맥이라는 단어와 성질이 매우 다릅니다. IT 업계는 친하다고 뽑아주는 나이브함이 특히 회사가 커질 수록 거의 없습니다. 친해도 실력이 있지 않으면 추천하기 어렵죠. 다른 측면으로는 예전에는 같은 학교 나오고 고향 같아서 인맥이 됐다면, 지금은 그냥 개발자 커뮤니티에서 만나고 친해진걸로도 가벼운 인맥이 되는거에요. 이런 네트워크를 만드는게 지금 시대에는 부정적인게 아니고 엄연한 실력이고, 좋은 사람들이 주변에 많아야 더 빨리 많이 성장할 수 있습니다.


    정리하면,

    1) 공부 열심히 하시고, 그걸 자기 브랜드로 만들어서 컨퍼런스나 블로그, 오픈소스로 홍보하세요.

    2) 네트워킹 열심히 하세요.

    로 요약할 수 있겠네요.

    건승하시길 바랍니다.

  • SMleejs
    16
    2021-10-18 17:49:56
    좋은 말씀 감사드립니다. 덕분에 방향성이 잡혔네요!!
  • 코들러
    34
    2021-10-19 01:47:18 작성 2021-10-19 01:52:53 수정됨
    좋은 글 감사합니다. 요즘 진로 때문에 고민이 많았는데 많은 도움이 되었습니다. 저는 올해 3월부터 개발을 공부한 비전공자 대학생입니다. 현재 3학년이고 프론트엔드를 희망하고 있습니다.

    질문 드리고 싶은 점이

    1.  바닐라 js를 능숙하게 다루고 싶어 다른 라이브러리를 사용하지 않고 UI, UX도 고려한 사이트를 만들려고 합니다. 이 프로젝트를 포트폴리오로 사용해도 괜찮은지 여쭙고 싶습니다. 사용한 경우를 거의 못봐서 여쭙습니다.

    2. 현재 js를 이용해서 간단한 기능들(좌표 이용해서 물결 만들기, 페이지네이션 등)을 만들어서 github에 올리고 있습니다. 이 공부법이 실력 향상에 도움이 되는지 여쭙고 싶습니다.

    3. 프론트엔드는 js가 가장 중요하다고 들었는데 js 실력을 향상시킬 수 있는 공부방법이 있다면 말씀해주시면 감사하겠습니다.

    읽어주셔서 감사합니다.
  • 후하하핫
    5k
    2021-10-19 02:35:23

    @코들러: 제가 프론트엔드 엔지니어가 아니기 때문에 제 의견은 참고만 하시고, 더 좋은 의견은 다른 곳에서 더 찾아 보세요.


    1.  바닐라 js를 능숙하게 다루고 싶어 다른 라이브러리를 사용하지 않고 UI, UX도 고려한 사이트를 만들려고 합니다. 이 프로젝트를 포트폴리오로 사용해도 괜찮은지 여쭙고 싶습니다. 사용한 경우를 거의 못봐서 여쭙습니다.
    -> 바닐라 js를 능숙하게 다루는건 일종의 수련에 가까운 것인데, 이런 종류의 hard skill을 높게 사줄 사람도 있겠지만, 저는 개인적으로 최고의 포폴은 아니라고 생각합니다.
    어떤 단에서 일을 하든 우린 Software Engineer고, Software Engineer는 소프트웨어로 사람들이 가진 문제를 푸는 사람들이잖아요. 저는 어떤 방법으로든 실제 유저들의 문제를 풀어본 경험을 훨씬 높게 칠 것 같아요.

    2. 현재 js를 이용해서 간단한 기능들(좌표 이용해서 물결 만들기, 페이지네이션 등)을 만들어서 github에 올리고 있습니다. 이 공부법이 실력 향상에 도움이 되는지 여쭙고 싶습니다.
    -> 같은 맥락에서, 저는 그렇게 중요한지 잘 모르겠습니다. 기본에 해당하는 공부가 더 중요하다고 봅니다.

    3. 프론트엔드는 js가 가장 중요하다고 들었는데 js 실력을 향상시킬 수 있는 공부방법이 있다면 말씀해주시면 감사하겠습니다.
    -> 저는 프론트엔드 엔지니어가 되기 전에 소프트웨어 엔지니어로서의 기본을 갖추기를 권합니다. 이것은 js를 하지 말라는 말이 아니라, 지금처럼 시야가 좁으면 가질 수 있는 기회도 놓치기 쉽다는 얘기를 하고 싶어 얘기합니다. JS를 아마추어 수준에서 아무리 잘한다고 얘기해 봤자, 현업자 입장에서는 귀엽게 보일 따름입니다. JS 조금 못해도 되니까 근본적인 사고력과 컴퓨터 공학의 기초를 다지세요.

    잔소리는 이쯤 하고, JS를 잘하고 싶으시면 React.js 깃헙 들어가서 소스코드 뜯으면서 공부해 보세요. 한줄 한줄 어떻게 작동되는지 이해해 보시구요.

    참고로, Angular.js  (요샌 안쓴다곤 하지만…) 를 만든 Misko Hevery 는 part-time, 즉, 주 업무 시간 외 시간에 JavaScript를 공부하면서 Angular.js 를 만들었습니다. 즉, 기본이 되어 있고 좋은 프로그래머라면 언어는 도구에 불과하고 금방 배울 수 있습니다.

    비전공자이시고 3학년이시니 취업이 막막하시겠지만, 지금이 가장 취업이 덜 급한 시점일겁니다. 시간이 더 가면 갈수록 이런 기본과 기초에 투자할 마음의 여유가 사라질거에요. 지금이라도 기초를 쌓으시고, 실제로 세상에 자그마한 영향력이나마 줄 수 있는 프로젝트를 만들어 보세요.
  • 코들러
    34
    2021-10-19 08:16:18
    결국 유저에게 도움이 되는 포폴과 cs 기초를 다지라는 말씀이시군요. 답변 감사드립니다.
  • 개발마라토너
    4
    2021-10-19 10:36:50

    멀리 가기 위해서는 학부생 때 학기 중엔 공부하는 능력과 통찰을 중점으로 기르고 방학 때는 많은 코드 경험을 쌓으라는 말씀이시군요

    좀 더 큰 틀에서 공부를 보게된 글이었습니다

    답변 감사드립니다!

  • RP24
    5
    2021-10-19 16:52:38

    좋은 글 감사드립니다.


    써주신 글에 감명받아 네트워킹 첫 걸음으로 오키 가입 후 로그인했습니다.


    첫 댓글이네요.


    앞으로도 좋은 활동 많이 부탁드립니다.

  • soldesk2020
    1k
    2021-10-19 16:57:38

    정말 좋은글이예요~ 몬가눈이확! 띄인듯합니당+_+

  • latissimus
    13
    2021-10-19 20:56:36

    좋은 글 감사합니다. 열심히 살겠습니다.

  • crazygun22
    1k
    2021-10-20 13:12:26

    좋은 글 입니다.


    CS 공부 방법에 대해 말씀드린다면.. 단순히 이론을 배우는 것으로 그치는게 아니라, 아래와 같이 공부하셔야 합니다.


     - 기본 알고리즘(sort, linked list, search ...) 등 모두 vanilla code 직접  구현 해보셔야합니다.

    - 소켓, 어셈블러, C, 커널 같은 저수준에서 다 구현 해보셔야 합니다.

    - 식사하는 철학자 문제 같은 것도 다 구현 해보시구요.

    - 멀티스레드에 의한 공유 메모리 침범 같은 문제도 실제 발생하는지 구현 해보셔야 하구요..

  • GrandeisHorse
    453
    2021-10-20 14:34:01

    자극되는 말씀 감사합니다:)

  • bb-in-hoodie
    14
    2021-10-22 00:35:10

    여러분 이 분 얘기 진짜 태클 걸 거 하나 없이 다 맞는 말씀이에요. 준비 중이시라면 꼭 새겨들으시길!

  • 호롤롤루
    201
    2021-10-22 03:02:16

    너무 좋은 말씀 감사합니다.

    댓글에 써주신 말씀 중에

    'node.js 나 spring을 "쓰는 방법"에 골몰하지 마시고, 어떻게 node.js나 spring을 만들 수 있을지에 대해 생각해 보라는 뜻입니다.'

    라고 하셨었는데 스프링으로 예를 들면 토비의 스프링 같은 책이 혹시 이에 가까운 내용의 책일까요??

  • 후하하핫
    5k
    2021-10-22 09:08:55

    @호롤롤루: 좋은 질문 감사합니다.

    토비의 스프링이 좋은 책입니다만, 제가 의도한 것과는 다릅니다.

    제가 의도한 것은 http server 를 tcp 소켓으로 짜보고, multi thread 방식, multi process 방식, single thread 이지만 async로 처리를 던지는 방식 등을 구현해보면 좋고, 최소한 고민해 보라는 뜻이었습니다.

    책에서는 OSI 7 Layers 를 배울 때 Session layer, Presentation layer, Application layer 를 글로 배우지만 실제로 이게 왜 필요한지, 어떻게 사용하는지는 코딩으로 짜보면 이해하실 수 있습니다.

    또한, node.js 나 spring 모두 오픈소스이기 때문에 소스코드를 까볼 수 있습니다. 개념이 이해가 안가면 책도 좋지만 소스코드 clone 받아서 읽어보세요.

  • 후하하핫
    5k
    2021-10-22 09:54:52

    그런 의미에서 혹시 네트워킹 관심 있으시면 아래 행사 참여 독려 드립니다 ㅎㅎ

    관계자는 아닌데, 와서 네트워킹 하는 좋은 경험이 되실 것 같아 추천 드려요. (글로 썼더니 홍보가 잘 안되는 것 같아서…)

    저도 참여할 예정이라, 이때 만나서 얘기하고 친해져요!


    (참고로 학생 아니어도 참석 가능합니다.)


    DevFest Universe: Devfest Campus Korea 2021

     


    전세계 유일, 대학생 개발자를 위한 챕터인 GDG Campus Korea 와

    Google Developers Student Club의 18개의 학교가 모여 🏫DevFest Universe를 개교합니다!


    2021년, 코시국으로 즐기지 못한 캠퍼스 라이프를 여기서 즐겨보세요!


    행사의 자세한 내용은 링크를 통해 확인해주세요.

    https://festa.io/events/1862/  

  • 호롤롤루
    201
    2021-10-22 22:00:28 작성 2021-10-22 22:01:57 수정됨

    아 답변 감사합니다! 어떤 의미로 말씀하셨는지 이해한것 같습니다.

    학교에서는 정말 글로만 배웠던 거라 어떻게 코드로 만들어야할지 감이 잡히지 않는데

    만약 네트워크나 운영체제 관련해서 말씀하신 것처럼 코드를 직접 짜보는 예제코드를 주는 도서가 있을까요?? 있다면 추천 부탁드립니다!

    만약 없다면 어떻게 저런 것들을 구현해볼 수 있을까요??


    마지막으로 저도 독려해주신 행사에 참여해서 작성자님 만나 궁금한 것도 여쭤보고 싶네요.

    그리고 티켓이 두개가 있던데 무료로 참석하는 티켓으로 참여하면 되는건가요??

    아 또 혹시 직접 현장에 가서 하는 건지 네트워크 상으로만 하는 건지 궁금하네요.


  • 후하하핫
    5k
    2021-10-22 22:11:11 작성 2021-10-22 22:12:46 수정됨

    @호롤롤루:

    - 구현 관련


    OS 에서 가장 유명한 공부용 구현체는 Stanford에서 만든 pintos 입니다.

    https://web.stanford.edu/class/cs140/projects/pintos/pintos.html

    KAIST 에서 관련 슬라이드도 올려 놓은게 있네요.

    https://oslab.kaist.ac.kr/pintosslides/


    네트워크는 pintos 만큼의 정형화 된 틀이 있는건 아닌데, 저는 주로 해외 대학 강의 자료를 많이 참고했습니다.

    Stanford computer network 강의: https://cs144.github.io/


    다른 공부 방법으로는 오픈소스를 까면서 노는 방법이 있습니다. 예를 들어서, node에서 write 하는 함수가 있다고 하면, 그 함수의 가장 내려갈 수 있는 아래까지 소스코드를 까보면서 내려가 보는거죠. 시간이 좀 걸리더라도 이러면서 배우는게 되게 많습니다. 보통 대학원 연구실에서 system 연구 하는 랩은 이런걸 하면서 논문을 쓰곤 한답니다.


    - 행사 관련: 네트워크 상으로 이루어집니다. 무료티켓은 기존 회원만 참석이 가능하고, 저희 같이 기존 회원이 아니면 유료로 참여하시면 됩니다.

  • 호롤롤루
    201
    2021-10-22 22:26:53
    질문이 많았는데 친절한 답변 감사합니다! 나중에 행사에서 뵙겠습니다!
  • LateNightCoding
    2
    2021-10-24 21:43:38

    안녕하세요. 

    우선 너무 좋은 글 제공해주셔서 감사드립니다.

    최근 취업에 관한 고민이 많아 글을 남기게 되었습니다.

    저는 27살 취준생입니다.

    26살 4학년 컴퓨터 공학과 복수전공을 시작하면서 개발을 시작하게 되었습니다.

    복수전공 시작 후 cs 전공 40학점을 1년만에 듣고 졸업했습니다.

    그 기간 동안 학점, 알고리즘, 웹 동작 원리에 대해 공부를 하는 것도 너무 바빠서 어느 한 분야를 깊게 파지 못하였습니다.

    졸업 후 6개월 간 1개의 React 프로젝트, 2개의 Spring 프로젝트를 진행했습니다. 하지만 해당 기술을 공부해가며 개발하는 것도 벅찼던 지라 깊게 파는 경험을 해보지 못하였습니다.

    이후 현재 하반기 공채에 여러 기업을 지원하고 있는데요.

    코딩 테스트와 CS 공부는 나름 빡세게 했던터라 서류와 코딩 테스트는 네카라 포함 왠만한 기업은 다 통과를 했지만 문제는 면접에서 다 탈락을 했습니다.

    이 글을 보고 나니 급하게 진행했던 프로젝트인지라 깊이가 부족했던 점, CS를 깊게 이해하지 못했기에 말로 잘 설명하지 못한 점이 탈락 요인이라는 생각이 듭니다.

    현재 취준에 집중하느라 Github 잔디에도 빵구가 점점 늘어나는데다가 하반기에는 큰 희망을 걸어보지 못할 거 같아 고민이 많습니다.

    희망을 잃다보니 SSAFY, 우아한 테크코스 등 교육을 1년 더 들을지, 만족하지 못하는 회사더라도 일단 가서 커리어를 쌓으면서 공부할지, 혹은 프로젝트를 더 깊게 파보며 취준 기간을 연장할지 고민이 됩니다.

    당장 다음 주에 카카오 면접인데 이 역시 떨어질 것이 뻔하기에 걱정부터 앞서게 되네요...

    실례가 안된다면 제 상황에 대한 단기적, 장기적 조언이 가능할까요..??

  • 호롤롤루
    201
    2021-10-31 02:16:25

    혹시 오늘 행사 참여하셨나요?? 저는 메일이 안와서 참여를 못했네요 메일로 문의는 넣어놨습니다 ㅜㅜ 

  • OKKY
    3k
    2022-01-01 02:43:53
    해당 게시물은 관리자에 의해 사는얘기에서 칼럼로 이동 되었습니다.
  • winfly
    113
    2022-01-01 03:24:35 작성 2022-01-01 03:27:10 수정됨

    조금 지난글이라 보실 수 있을 지 모르겠지만

    이 글이 제가 질문 드리고 싶은 부분과 맥락상

    일치해서, 이 글에 질문 남기게 됐습니다. 


    https://okky.kr/article/1077309

    위 글은 비전공자 국비학원에 대해서 작성해주신 글입니다. 

    현재 글과 위 글을 읽고 궁금한 점 질문 드립니다. 


    [배경]

    현재 게임프로그래밍 학원을 다니고 있습니다, 

    하지만 저는 게임을 만들고 싶어서가 아닙니다. 

    메타버스에 미래가 있다는 사실을 굳게 믿고,

    막연하게 3D 그래픽스 와 메타버스 관련된 분야를

    찾다가 그나마 비슷한 게임을 배우고 있습니다 . 


    저는 궁극적으로 메타버스를 활용한 가상산업학교를

    만들고 싶습니다. 실습이 필요한 분야에서 가상환경을

    이용해 효과적으로 배우고 학습하며, 기술을 배우는

    부분을 바꿔볼 수 있는 가상세계를 만들고 싶습니다. 


    [질문 1]

    진행되는 커리큘럼은 대략 

    c++ -> win32api -> directx 순으로 진행됩니다. 

    이 안에서 제가 집중해야 할 부분은 어떤 부분이며, 

    어떤식으로 깊게 파고 들 수 있을까요?

    win32api 는 게임의 구조를, directx 는 그래픽 관련된

    부분을 공부하는걸로 알고 있습니다. 


    [질문 2]

    절대적으로 코딩을 많이 하라는 조언을 실천하면서도

    드는 생각은, 군대군대 기본 개념이 비어있다는 느낌을

    떨칠 수 없다 라는 것입니다.

    이런 부분은 어떻게 채워 나갈 수 있을까요? 


    [질문 3]

    마지막으로 제가 스스로 점검해 볼 수 있도록

    c++ 관련 질문들을 몇 개 던져주실 수 있으실까요?

    던져주신 질문에 스스로 생각하고 답해 보면서 

    제가 알고 있다고 생각한 부분을 바로 잡을 수 있다면

    더할 나위 없이 좋은 시간이 될 거 같습니다. 


    긴 글 읽어주셔서 감사합니다!


    좋은 글과 토론을 위해 사용해주신 시간 모두

    너무 도움 됐습니다. 다시 한 번 감사드립니다.


    항상 코로나 조심하시고,

    하시는 일  모두 잘 되시기 바랍니다.

  • 후하하핫
    5k
    2022-01-01 05:22:24

    @LateNightCoding: 아앗…. 제가 댓글을 미처 못봤네요. 좋은 결과 있으셨길 바랍니다! 궁금한게 있으시다면 메일 주소를 팠으니, huhahahot@gmail.com 으로 보내주시면 제가 아는 범위에서 답변 드리겠습니다.

  • 후하하핫
    5k
    2022-01-01 05:58:04

    @winfly: 먼저 주신 질문들에 대한 답을 남기고, 추가적인 조언들도 남깁니다. 도움이 되길 바랍니다.


    1. 모두 다 깊게 파려면 팔 수 있는 부분입니다. Win32 API가 좀 old fashion이라고 느껴지실 순 있지만, system programming을 빡세게 해본다는 관점에서 역시 빡세게 파볼만 하고요.

    C++은 C++ 기초 플러스, Win32 API는 저 때는 제프리 리처의 Windows via C/C++, DirectX는 Frank Luna 의 책을 추천합니다. 링크는 아래에 남깁니다.

    https://book.naver.com/bookdb/book_detail.naver?bid=13253304

    https://www.amazon.co.uk/Windows%C2%AE-Developer-Reference-Christophe-Nasarre-ebook/dp/B00JDMQK9G/ref=sr_1_3?crid=15X410X3GU83M&keywords=windows+via+C%2FC%2B%2B&qid=1640983036&sprefix=windows+via+c%2Fc%2B%2Caps%2C288&sr=8-3

    https://book.naver.com/bookdb/book_detail.naver?bid=6882230


    2. 두가지 방법이 있을 것 같네요.


    첫 번째로, 모르는 개념이 있으면 찾아서 공부하시면 됩니다. 이건 좀 당연한 것이긴 하지만, 중요한 실천 방법입니다.


    두 번째로, common sense 라고 여겨지는 지식들을 채워 가실 필요가 있습니다. 컴퓨터과학의 기초 과목들 (자료구조, 알고리즘, 컴퓨터 구조, 운영체제, 데이터베이스, 컴파일러, 컴퓨터 네트워크, 프로그래밍 언어론 등등) 을 비롯하여, 컴퓨터 그래픽스를 공부하신다면 선형대수와 통계학의 기본 정도가 그에 해당합니다.

    물론, 지금 당장 공부하시기에는 너무 양이 많으시겠죠. 하나하나 천천히 채워가시길 권해드립니다. 제가 권하는 가장 optimal 한 시작 포인트는, 자료구조 및 알고리즘에 있어서는 코딩 테스트를 준비하기 위한 알고리즘 강의를 인프런에서 사서 듣는걸 추천드리고, CS 기초에 있어서는 CMU에서 나온 Computer Systems: a Programmer's Perspective (https://csapp.cs.cmu.edu/) 라는 책으로 시작하시는 것을 추천 드립니다. 수학에 관련된 것은, 일단 Frank Luna 책의 수학 부분이 설명이 나쁘지 않으니 그 부분으로 시작하시되, 잘 모르시는 부분들은 다른 부교재를 보세요.


    노파심에 조금 남기자면, 커리어를 끝낼 때까지, 계속 모든 것을 확실하게 알 순 없습니다. 기초가 부족한 느낌은 계속 함께 할거고, 그게 어쩌면 내가 잘 모르는 부분에 대해서 공부를 함을 통해 성장하고 있다는 신호로 볼 수 있습니다. 다소 어색하시더라도 좋은 개발자가 되기 위해서는 평생 그 느낌과 함께 사실 각오를 하실 필요가 있습니다. 예전에 어떤 댓글에서도 썼는데, 프로 운동 선수들이 알배긴 상태를 평생 안고 살아가는 것과 같다고 봅니다.


    3. 저도 C++을 놓은지가 꽤 된지라 (ㅎㅎ) 잘 하는 사람은 아닙니다만, C++ 신입을 뽑을 때 던질만한 질문 몇개는 남기겠습니다. (객체와 클래스의 차이는 무엇인가요, overloading과 overriding의 차이는 무엇인가요, 상속이 뭔가요, 등의 객체지향 일반적인 질문은 스킵하겠습니다)


     - operator new 와 new 의 차이점은 뭔가요? new와 malloc의 차이점은 뭔가요? 왜 new 와 operator new, malloc이 따로 있을까요? 더불어, malloc은 stdlib에 정의된 함수로 제공되는데, new가 언어적 feature로 제공된 이유는 뭐라고 생각하시나요?

     - Virtual inheritance 는 왜 사용될까요? 다중상속을 함으로 인해 언어가 가지게 되는 이점과 단점은 뭘까요?

     - std::map 과 std::unordered_map 의 설계상의 차이가 뭔가요? 어떤 때 어떤 associative container를 써야하나요? (등의 STL의 자료구조에 대한 질문들)

     - Template에 대해서 설명해 주세요. (만약 Java를 안다면) Java와 같은 언어들은 generic 이라는 기능이 있는데, 이게 template 과 구조상 어떤 차이를 가지나요? Template 은 code generation을 하는데, 그럼 binary가 비대해 지지 않을까요? 이렇게 비대해 지는 binary를 만들지 않기 위해 어떤 방법을 적용하고 있나요 / 적용할 수 있을까요? template meta programming과 그 장점에 대해 설명해 주세요.

     - C++ 11 이후로 가장 크게 바뀐 부분이 뭐라고 생각하시나요? 어떤 언어적 feature가 C++에 도입될 필요가 있을까요?


    이 질문에 대해서도 하나를 말씀 드리면, 어떤 마음에서 하시는 질문인지는 다분히 이해 합니다만, 자신이 얼마나 이해했는지를 확인 받을 방법이 고급 지식을 얻어갈수록 잘 없습니다. 정말로 이해했는지 확인해 보고 싶으시면, 주변 사람들에게 가르쳐 보시기를 권합니다.

    C++ specific 하게, 어떻게 더 잘 공부할 수 있는지에 대해서 답을 드리면, 위에 언급한 책을 보는 것도 있겠지만 역시 오픈소스 코드를 까면서 보는게 최고입니다. 특히 boost (https://github.com/boostorg/boost) 같은 프로젝트는 교본이라고 할 수 있을 정도로 좋은 코드들이 다양한 영역에 걸쳐 많습니다. 꼭 boost가 아니더라도, 코드들 많이 까보세요. 게임 쪽 관심 많으시니까 Unreal Engine 소스코드도 클론 받아서 까보시고요.

  • 후하하핫
    5k
    2022-01-01 06:06:52

    @winfly: 답글이 길어서 쪼갰습니다. (쓰다 날아갈까봐...)


    질문하신 기술적인 사항들에 대해선 답을 드린 것 같고, 아래는 제 조언입니다.


    1. 기술은 점점 쉬워집니다. 그에 반해 지금 공부하시는 기술들은 다소 현재 트렌드와 시차가 있는, 어려운 기술들입니다. 아마 회사에 가서 쓰실 일이 거의 없으시겠죠.

    그럼에도 불구하고, 저는 그 커리큘럼이 매우 좋다고 생각합니다. 다른 칼럼에서 프로그래머는 배워서 95%를 버리고 5%를 취하는 직업이라고 얘기했는데, 저 기술들을 통해 어떤 것들을 취하고 어떤 것들을 버릴지를 잘 생각해 보세요. 예를 들어, Windows API를 현업에서 사용하게 될 가능성은 그렇게 크지 않습니다만, 그곳에서 배운 System programming 적인 아이디어는 거의 평생 사용하실거라고 봅니다.

    2. 메타버스에 대한 이야기를 해보자면, 메타버스는 굉장히 포함하는 영역이 넓은 단어입니다. (나중에 기술사 시리즈에 쓰려고 하는데) 메타버스에서 중요한 점은 digital transformation, 즉, real world의 많은 "체제"들을 디지털로 옮기는 지점이라고 보고 있는데요, 그 체제에는 유통망이나 돈을 버는 방법도 포함 된다고 생각합니다. 오히려 핵심이라고 생각합니다. 그래서 저는 유튜브도 일종의 메타버스라고 보고 있고요.

    즉, 광의의 메타버스에서 실감 컨텐츠는 매우 일부의 기능입니다. (필요하지 않다는 것은 아닙니다!) 공부를 하셔서 좋은 경력을 쌓으시되, 진지하게 메타버스에 관심이 있으시다면 어떤 것들이 digital로 바뀌게 될 지에 대해 생각해 보기 위해 세상에 대한 이해를 쌓으실 필요가 있다고 봅니다.

    책 많이 읽으시고, 생각을 많이 해보세요. 이에 관련해선 다른 칼럼들에서 얘길 많이 했으니 참고 하시구요.


    이미 잘 하고 계신 것 같아 보입니다. 화이팅 하시고, 질문이 있으시면 또 저에게 이렇게 던져 주세요.


    새해 복 많이 받으세요!

  • 개발머신쓰
    4
    2022-01-04 23:25:36 작성 2022-01-04 23:26:13 수정됨

    안녕하세요~ 저는 지거국 통계학과 재학중이고 3학년입니다.. 보시다시피 저는 비전공자입니다. 이쪽(웹개발)으로 발을 담근지 일주일정도 됐네요. 원래 빅데이터분석쪽으로 공부를 해보려고 했으나 분석보단 개발이 더 재밌을거같아서 길을 틀어버렸습니다. 제가 편입을 했는데 학점이 안좋은 상황입니다. 3.1..? 편입을 했다보니 노력을 해도 성적이 잘 안나오더라고요.. 소수과이기도 하고요 ㅠㅠ 

    그래서 궁금한건 1) 이 학점이 취업에 영향을 줄지. 2)비전공이더라도 학교가 4년제면 4년제로 쳐주는지.. 

    3) 지금 과외를 받은지 일주일됐는데 과외보다 국비를 해야할지..?

    마지막으로 비전공자도 노력하면 네베라쿠베 들어갈수있는지..!    이 정도가 궁금합니다!

  • 후하하핫
    5k
    2022-01-05 09:33:33

    @개발머신쓰: 질문 감사합니다.

    1. 학점은 상관 없고, 비전공도 상관없습니다.

    2. 제 주변엔 과외로 시작한 사람도 있고, 국비로 시작한 사람도 있습니다. 모두 비전공자였고요. 물론 신입으로 네카라쿠배에 갈 수 있다는 장담은 할 수 없지만, 제 주변에 간 사람이 있다는 말은 드릴 수 있을 것 같네요. 최소한 경력으로 가는것은 매우 가능합니다.

    3. 제 친구 중에 사회학과, 식품영양학과, 사학과, 철학과 나온 친구들이 네카라쿠배에 신입으로 입사했거나, 그곳을 거쳐서 소위 FAANG 이라고 부르는, Facebook, Apple, Amazon, Netflix, Google 에서 일하고 있는 사람들입니다. 즉, 비전공이 Software Engineer의 커리어에는 장벽이 되지 않습니다.

    비전공자 분들이 경쟁력으로 삼아야 할 것은 “적극성”이라고 생각합니다. 당연히 회사에서도 비전공자 뽑을 때 코딩을 전공자나 어렸을 때부터 코딩 한 사람보다 잘할 거라는 기대를 하진 않습니다. 다만, 회사에선 코딩을 잘하는 사람만 필요한게 아닙니다. 기초가 탄탄하고, 소통이 잘 되고 (발표, PR 등), 기획을 할 수 있는 마인드, 자기 전공과의 융화를 어떻게 할 수 있는지, 얼마나 적극적인지를 보고 싶어 한다고 생각합니다.

    적극적으로 두드리시고, 학생이신 만큼 (지방이고 코로나라 쉽진 않겠지만) 네이버 D2 같은 학생 개발자 지원 프로그램이나 공모전, 컨퍼런스 등 참석 많이 하셔서 구체적으로 Software Engineer가 뭐고, (현재의 내 능력과 상관없이) Software Engineer로서 내가 기여하고 싶은 것이 무엇인지를 깊게 고민하시면 좋을 것 같습니다.


    도움이 되시길 바라고, 더 궁금한게 있으시면 huhahahot@gmail.com 으로 메일 주세요.

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