(인스타그램의 성장과정) 개발자가 일한다는 건 함께 하는 사람이 늘어간다는 것

개요

42는 좋은 학습시스템입니다.
하지만, 전부를 커버하진 못하죠.

“One size does not fit all.”
하나가 모든 크기를 커버하지 못한다.
유명한 문구입니다.

재단은 이 문제에 대해 많은 관심을 가지고 있고,
좋은 해법을 찾기 위해 노력을 하고 있습니다.

그 첫번째로 42과정과 현업과의 갭을 확인하기 위해
국내의 쟁쟁한 개발자분들과 회의를 함께 했습니다.
상세한 내용을 공유합니다.


간담회 요약

1. 참여해주신 분

국내의 쟁쟁한 현업개발자분들께 직접 물었습니다.

  • 대상 : 현재 개발자 채용을 직접 담당하시는 CTO 및 대표(개발자) 21명
  • 경력 : 네이버, 카카오, 네오위즈, LG, SDS, 안랩, 신한은행 등, 전 산업분야의 전현직 개발자들

2. 42 커리큘럼에 대한 평가

42Seoul 의 커리큘럼에 대한 솔직한 느낌을 물어보았습니다.
이분들은 다른 멘토링 프로그램(소프트웨어 마에스트로, 한이음 멘토링 등)에도 참여하시기 때문에 다양한 의견을 들을 수 있었습니다.

3. 신입사원을 채용할 때 바라는 점

42Seoul과 상관없이, “신입개발자”를 채용할 때 눈여겨 보는 점을 적어달라고 했습니다.

4. PBL 콘텐츠의 기획방향

재단은 42가 제공하지 못하는 내용을 채우기 위해 별도 프로그램을 기획하고 있습니다.
이 작업의 기획방향에 대해 여쭈었습니다.


설문응답 전체내용

“개발자가 된다는 건 이렇게 복잡한 곳 중 어느 한 곳에서 일하게 된다는 것.”

1. 42Seoul 공통과정에 대한 평가

1.1. 공통과정 수료자가 입사가능한 직장은?

학생이 공통과정을 정상적으로 충실히 수행했다는 경우를 가정합니다.

  • 컴퓨터 공학과 1학년 정도의 수업이라 현실적으로는 입사할 수 있는 직장은 없어보입니다.
  • C, C++ 를 주로 사용하는 회사에 입사하는것이 유리할 듯 합니다.
    하지만 보통 C, C++ 개발자를 채용하는 허들이 일반적인 웹, 앱개발자의 채용 허들보다 높은것으로 알고 있어서 비교적 규모가 작은 스타트업이나 중소기업에 취업 가능성이 있을 듯 합니다.
  • 스타트업, 비IT기업의 개발부서
  • 어느 직장이나 가능하다고 생각합니다.
  • 개인적인 역량과 인터뷰 스킬에 따라 왠만한 회사는 다 입사할 수 있을 듯 합니다.
  • 성공적으로 수행했다면 밸런스 있는 인재를 좋아하는 좋은 IT 기업에 가기에 무리가 없을 것 같습니다.
    다만, 바로 실무에 투입하고 싶어하는 직장에서는 좋지 않을 수 있어 보입니다.
  • 잘 모르겠습니다.
  • 어디든 취업할 수 있습니다.
    단 개발자나 기술을 직접 다루는 엔지니어로써는 아닐 것 같습니다.
    다만, 취업할 때의 강점으로는 스스로 문제를 해결하는 과정 때문이지, 기술때문은 아니라고 생각합니다.
  • 과정을 스스로 완수했다면 평균적인 전공자와 비슷하다는 생각이 들었고,  문제 해결력이 뛰어나다면 코딩테스트를 보는 블라인드 과정을 가진 회사들에 들어갈 수 있지 않을까 싶습니다.
  • 자체 서비스를 개발하고 운영하는 회사.
  • 중소기업은 어디든 가능, 대기업은 운이 따라야함.
  • 일반적인 학사 졸업생 수준으로 파악됩니다.
  • 바로 회사에 들어가기는 힘들어 보입니다.
  • 비전공 학생들 기준 해당 교육을 수료하였다고 특정 업체를 찝어 입사가 가능할것이라고 예측할 수 없음.
    대학교에서 한학기면 배우는 내용 분량인지라 경쟁력이 높지 않고, 실무형 프로젝트가 아닌 기초 프로그래밍 소양이라 경쟁력이 높지 않음.
  • 서버 프로그램 직군 신입 입사는 가능할 듯합니다.
  • 작은 스타트업
  • 임베디드 소프트웨어, 시스템 소프트웨어 정도…? 잘 모르겠습니다.
  • 스타트업
  • 인공지능 분야의 관점에서 보았을 때에는 C/C++ 언어를 메인으로 다루면 강점이 있는 Computer vision 관련 기업들 중 모델 기반 inference 속도의 최적화 등 성능을 중시하는 기업들이 학생들을 반길 것으로 판단됩니다.
  • 스타트업, 중소, 중견 IT
  • 회사의 규모와 발향에 따라 완전 다르겠지만, 기본만 되면 내부에서 교육을 시켜 정직원으로 고용하겠다는 곳 말고는 쉽지 않아 보입니다.
    공통과정을 이수했다고 코딩테스 통과할 수 있는 능력이 되는지 오히려 궁금합니다. 

1.2. 고급과정 수료자가 입사가능한 직장은?

학생이 고급과정을 정상적으로 충실히 수행했다는 경우를 가정합니다.

  • 고급과정까지 돌파한다면 모든 SW업계로 입사 가능하다고 생각합니다.
  • 신입으로는 어느 회사건 개인역량과 면접 스킬에 따라 취업이 가능할 듯 합니다.
  • 개인의 역량에 따라 차이가 크겠지만 IT대기업~스타트업이 가능할것 같습니다.
  • 어느 직장이나 가능하다고 생각합니다.
  • 개인적인 역량과 인터뷰 스킬에 따라 왠만한 회사는 다 입사할 수 있을 듯 합니다.
  • 상동
  • 잘 모르겠습니다.
  • 문제를 스스로 해결했다에서 연구하는 자세가 좀 더 추가된 형태로 보입니다.
    • 역시 취업하려는 어떤 분야에서도 강점으로 작용할 것입니다.
    • 역시 기술자나 개발자로 취업하기에는 실무자로써는 부족합니다. 
  • 과정을 온전히 자신+협업의 힘으로 했다는 가정하에 말씀드리면, 대부분의 직장에 문을 두드려 볼 수 있을 것 같습니다.
    • 문제 해결능력이 가장 중요하고 신입으로써 가질 소양들을 갖추고 있다고 생각합니다.
    • 현실적으로 입사 한다면 대기업, 스타트업에 입사할 수 있다고 봅니다. 
  • 자체 서비스를 개발하고 운영하는 회사, R&D 회사, SI
  • 중소기업은 어디든가능, 대기업은 운이 따라야함
  • 경력 2~3년차 정도로는 파악됩니다
  • 모든 과정을 잘 이수했다면 원하는 곳에 갈 수 있지 않을까 생각합니다.
  • 다양한 개발 프로젝트 경험을 갖추고 주어진 문제를 해결 할 수 있다면 왠만한 IT기술 개발 직군에 채용은 가능 함.
  • 공통과정보다는 전문적이라고 할 수 있지만 그렇다고 경력을 높이 인정해주기는 어려울듯합니다.
    • 물론 공통과정보다는 높은 수준이라 입사 자체는 좀더 쉬울듯합니다. 
  • 중견 기업 또는 네임드 스타트업
  • 고급과정까지 제대로 마쳤다면 원하는 곳에 수월하게 갈 수 있을 것 같습니다.
  • 스타트업
  • 사실 고급과정에서 다뤄지는 내용들을 상세히 이해하지 못하여 판단이 어려운 느낌입니다.
    • Graphics / Web / DB / Algorithms / AI / Security 등 다양한 도메인에 걸쳐 학습을 하므로, 각 파트 중 자신이 선호하는 분야에 강점을 살려 학습을 진행한다면 해당 분야에 도전해볼 수 있지 않을까 싶습니다.
  • 대기업 IT, 네이버, 카카오, 라인, 쿠팡, 배달의 민족
  • 고급과정 구체내용을 잘 몰라 코멘트가 어렵지만, 한 가지 엣지가 있어야 합니다.
    • 보통 알고리즘 능력, 데이터분석능력, 네트워크 등등의 개별 장점이 강하게 어필이 되어야 할 것 같습니다.
    • 커리큘럼도 그걸 보여줄 수 있는 결과가 나오는 커리큘럼이어야 도움이  될 것 같습니다.

1.3. 공통과정을 충실히 이행했다면 우리회사에 채용하시겠습니까?

역량만을 기준으로 자기 회사에 직접 채용을 할 의향이 있는지를 물어보았습니다.

  • 예 :  10 명 / 21명
  • 아니오 : 11명 / 21명

1.3-1. 위와 같은 선택에 대한 이유를 간략히 적어주세요.

  • 어디까지나 실제(실무) 프로젝트 경험이 없기 때문에 협업이나 문제 해결력을 정확히 확인하기 어렵습니다.
    • 추가로 우리회사라는 가정이 중요한데 공통과정보다는 회사에 맞는 특수 역량이 필요하고 그런 역량에 맞춘 기술들을 조금 더 습득하고 있느냐가 중요합니다.
  • 신입이라면 다양한 분야에 대한 학습 경험이 있기 때문에 채용할 것 같습니다.
  • 아쉽게도 회사에 소속되어 있지 않아 가정한 상황이지만 2년동안 압축적으로 대학커리큘럼보다 열심히 학습할 수 있는 환경이라고 생각합니다.
  • 공통 과정을 충실히 수행할 정도의 태도와 역량이면 충분하며, 부족한 부분은 입사 후 직무교육으로 Cover 가능합니다.
  • 기본을 충실히 다질 수 있는 교육과정을 거쳤기 때문에.
  • 네트워크, 서버에 대한 기본적인 이해가 탄탄하다면 저희 코어팀에도 기여할 수 있을 것 같습니다.
    • 요즘 딥러닝 하고 왔는데 DNS를 질문하는 학생보다는 낫지 않을까 생각해 봅니다.
  • CS 기초(문제풀이) 와 스프링, 자바 에 대한 공부가 더 필요합니다.
  • 개발/기술 직군이 아닌 분야에서 가능하다고 생각합니다.
    • 역시 주어진 문제를 스스로 해결하는 과정에서 얻은 애티튜드 때문입니다.
  • 기술 스택이 맞지 않음, 스타트업 사정 상 바로 투입이 될 수 있어야 하는데 추가적인 교육을 할 여력이 없고(ㅠ) 교육에 많은 코스트가 발생합니다. 
  • (특히 신입인 경우) 응용 기술(언어, framework 등)이나 도메인 지식은 입사 후 교육해야 하므로 교육 효율과 효과가 좋은 사람을 뽑으려 하며, 공통과정을 자기주도학습과 협력으로 이해한다면 그런 기준을 충족합니다.
  • 회사에 오면 다시 기초과정을 하고 제품을 만들기 위한 공부는 새로 해야함
  • 기초역량은 있지만 응용을 해본 경험이 없어서 당장 업무에 투입되기 힘들 것 같아서
  • 누구나 갖추고 있어야 할 기본 소양이라 굳이 해당 과정만을 이수했다고 하여 메리트가 전혀 있지는 않음.
  • 저희회사는 서버개발자와 UI/UX개발자를 별도로 모집하고 있습니다.
    • 서버 개발 분야는 네트웍과 파일처리 관련 프로그램이 중요하고 많이 라이브러리를 직접 만들어서 사용하고 있기때문에 공통과정의 내용들이  도움이 됩니다.  
  • 공통과정으로 현업에 적응 가능한지에 대해서는 다른 차원의 문제라고 생각이 듭니다.
  • 기초와 기본 베이스, 그리고 생각하는 힘을 길러졌지만 실무에 대한 감이 전혀 없고, C 언어 외에 기본 경험이 크게 없어서 당장 실무에 투입하기엔 어려울 것 같습니다.
  • 공통과정 뿐만아니라 고급과정까지 우수하게 이수하였을 경우 생각해볼만함
  • 저는 과거에는 빠르게 서비스를 기획/디자인/개발하여야하는 스타트업들에서 일을 했었고 현재는 인공지능 기반의 서비스를 기획하고 프로토타이핑하여 시장성을 판단하거나 외주 작업을 하는 작업을 진행 중에 있습니다. (작은 회사들이라고 보시면 될 것 같습니다)
  • 오로지 제 경험을 미루어 판단해 보았을 경우, 공통과정을 마친 학생들이 공통과정 진행 중에 각자 자신의 욕심에 따라
    • “1) 웹 백엔드 구축 or 2) 웹 프론트엔드 개발 및 디자인 or 3) 인공지능 모델의 구축과 웹을 통한 서빙” 중 하나 이상을 구체적으로 학습하고 프로젝트를 다수 진행해보았다면 기초가 탄탄한 인재로서 채용이 가능할 것 같습니다.
    • 그러나 그렇지 않고 C/C++ 학습 이외에는 트레이닝이 필요한 상황이라면 새로운 지식에 대한 학습 속도가 대단히 빠르다고 확인되지 않을 시 채용이 쉽지 않을 것 같습니다.
  • 개발자로서 필요한 기본부터 자기 주도의 학습을 한 경험
  • 1) 제너럴 능력이 된다면, 코딩테스트 합격 능력이 검증되어야 하는데, 그걸 알기 어렵습니다.
    • 2) 제너럴 능력을 보는 것이 아니라면 (저희 회사처럼), 본인의 엣지가 있야 하는데, 공통과정 이수 내용에 그것을 알기 어렵습니다.
    • 예를 들어 본인이 무엇을 더 잘하고 원하는지, 코딩자신감이 있는지, 오픈소스 커뮤니티 활동을 하는지, 캡스톤 프로젝트를  보여줄 수 있는지 등

1.4. 원활히 취업이 가능하려면 필요한 교육프로그램이 뭘까요? (내용이 길면 메일로 부탁드립니다.)

채용할 생각이 없다면 이유가 무엇인지에 대해 물어보았습니다.

  • 회사와 관련된 직군을 나누고 해당 분야에 대한 요구사항을 잘 파악하고 그 요구사항에 맞춘 교육 프로그램을 추가하는건 어떨까요?
    • 최근에 보면 너무 프론트 엔드, 백엔드, AI등으로 한정된 분야로 SW를 축소해서 생각하는 것 같습니다.
    • 임베디드 SW도 있고 보안 SW 도 있고 다양성에 조금더 초점을 맞춰서 학생들도 폭넓게 선택할 수 있는 기회가 있었으면 합니다.
  • 자바, 파이썬, 자바스크립트, 안드로이드 앱 개발, 아이폰 앱 개발, 웹개발, 프론트앤드 개발, 머신러닝, 딥러닝
  • 코딩테스트 역량, 다양한 토이프로젝트, github, 블로그 등의 포트폴리오, 실제 기업에서 인턴 근무 경험, 오픈소스 기여.
  • 수요자 입장에서 필요한 교육 프로그램을 확인해야 하지 않을까 싶습니다.
    • 다만 최근 메인 트랜드인 클라우드, 빅데이터, AI/ML, IoT, MSA, DevOpS, CD/CD 등을 적어 봅니다.
  • 자바, 자바스크립트, 파이썬, 안드로이드 앱개발, 아이폰 앱개발, 웹개발, 프론트사이드 개발, 데브옵스, 머신러닝, 딥러닝
  • 말씀하신 것처럼 교육 프로그램이 좀 더 세련되면 좋긴 한데, 사실 더 중요한 것은 무엇을 하든 스스로 다 해낸 것인지가 궁금할 것 같습니다.
    • 이노베이션 아카데미가 그 점에 있어서 확신을 줄 수 있는 교육기관이라면 좋을 것 같습니다.
  • CS 기초(문제풀이) 와 스프링, 자바
  • 이 과정이 기술자를 배출하는 목적의 과정이 아니라는 것을 알려줘야 할것 같습니다.
    • 이 과정을 통해서 컴퓨터 시대를 살아가는 현대인으로써 기본적으로 알만한 기술에 대한 지식과 스스로 문제를 해결하고 배우는 것을 익히는 과정이라고 알려주고,
    • 그것이 앞으로의 취업이나 인생에 강점이 될 것이라고 알려줘야 한다고 생각합니다.
    • 그래서 프로그래밍을 배웠기 때문에 개발 분야, 기술 직군에만 목표를 두지 않도록 시야를 넓혀주여야 합니다.
  • 전제 : 가고 싶은 회사들에 대한 JD의 공통 요소들 취합후 가장 배우고싶은 것을 공부해야함, 클론 코딩보다는 실제 사용자가 사용할 수 있는 가치를 지닌 서비스나 제품을 만들도록 경험해 주어야 좋다고 봅니다.
    • 다만 seoul 42의 철학에 녹여내면 더 좋을 것 같습니다.
    • 1) 관심있는 기업이 필요할 것 같은 내용을 제안해서 승인받아서 하는 프로젝트
    • 2) 흥미가 사라지지않도록 요즘 기술 트랜드에 맞춘 것을 공부해가면서 사이드 프로젝트로 서비스를 런칭하고 운영해보기
    • 3) 알고리즘 문제 풀이(PS) 세션내지는 동아리 운영
    • 4) 오픈소스 라이브러리를 만들어 보거나 기여하기
  • 교육 과정에서 학습한 것을 잘 이해하고 있고, 응용/활용할 수 있다는 걸 드러내는 프로그램이 필요해 보입니다. 사이드 프로젝트 일 수도 있고, 표현(presentation)일 수도 있을 것 같습니다.
    • 코딩 부트캠프나 학원 과정 수료 시기엔 비슷한 이력서/자기소개서와 포트폴리오를 갖는 지원자가 비슷한 시기에 몰려서 지원합니다.
    • 포트폴리오 프로젝트 자체가 간단하기 때문에 코드도 서로 비슷하다보니 변별력이 매우 떨어집니다.
    • 교육생 스스로 자신이 학습한 것을 표현하는 것이 아니라 기관/강사가 만든 템플릿에 내용을 채우는 형태여서 더 그렇습니다. 
  • 창업을 위한 교육, 기획을 잘 할수 있는 교육, 창의적 사고를 할 수 있는 교육
  • 단순히 어떤 과정보다는 프로젝트에서 뭘 했다는 것이 더 중요한 것 같습니다. 그래야 정확한 수준 파악이 가능할 것 같습니다.
  • Python, JavaScript, React, ReactNative, Node.js, AWS, 작은 서비스를 실제로 개발해보면 좋을 것 같습니다.
  • 기간이 길다면 복잡 다양한 경험을 두루두루 갖추어야 겠지만, 기간이 짧으면 결국 선택과 집중을 하여 내가 취업하고 하는 분야의 기술을 전문성 있게 파는 것이 필요함.
    • 이것 조금 저것 조금 보다는 실무형 프로젝트 위주로, 프런트면 프런트, 백엔드면 백엔드. 혹은 게임, 보안, 클라우드, 인공지능 등 특화된 분야의 기술에 있어 프로젝트 경험을 학생들의 원하는 선택권을 주어 선택하고 학습 시키는 것을 권장함.
    • 모든 것을 너무 얕게 알고 있으면 취업 경쟁력은 떨어짐.
  • OS 및 각종 언어 능숙, 네트웍프로그램, 대용량 파일처리 프로그램, RDB/NoSQL활용, 웹프레임웍,차트개발 역량들을 중요하게 생각합니다.
    • 이런 부분에 이해를 가진 분들을 적극적으로 찾고 있습니다. 
  • 가능하면 많이 배우면 좋겠지만 필요한 특정 직무에 대한 초보적인 훈련은 된 상태면 좋겠습니다.
  • 1단계를 마친 상태로 이후에 어떤 것을 배우면 무엇을 할 수 있는지 개략적으로 설명하는 자리와 함께, 간단한 해커톤 등을 진행해보면 어떨까합니다.
  • 프로젝트 경험이 필요함, 또한 기초교육과정의 C, C++이 아닌 실무에서 필요한 기술스택 위주로 교육이 되었으면 좋겠음
  • 마찬가지로 위 서술한 제 경험을 바탕으로만 말씀드리면 (fundamental한 개발 역량은 제 판단 능력 밖의 내용인 것 같습니다) 
    • 백엔드 프로그래머의 경우 : Java/Python/Javascript 중 하나 이상의 언어로 서버 구축 및 팀 기반 웹 서비스 개발 프로젝트를 3회 이상 진행
    • 프론트엔드 프로그래머의 경우 : 모던 HTML/CSS/JS 프로그래밍이 익숙하며 React/Angular 등의 컴포넌트 기반 프레임워크를 자유로이 활용해 팀 기반 웹 서비스 개발 프로젝트를 3회 이상 진행
    • 머신러닝 관련 엔지니어의 경우 : Python이 능숙하고 Tensorflow 혹은 Pytorch 기반 딥러닝 모델 구축 경험이 다수 있으며, 신규 논문을 직접 독해하지는 못하더라도 논문을 기반으로 구현된 코드를 이해하고 그 근간에 깔린 머신러닝의 기반 지식들이 탄탄함
    • 위 직군별 역량과 더불어 중요한 것은 커뮤니케이션과 질문(학습) 역량인 것 같습니다.
      • 근거를 바탕으로 한 건강한 토의를 하고 자신의 주장을 논리적으로 전개하되 타인의 관점을 이해하려고 노력하고, 자신이 부족한 부분을 끊임없이 채우려고 노력하는 것이 습관으로 갖춰져있으면 좋을 듯 합니다.
      • 이를 객관적으로 그나마 보여줄 수 있는 방법이 다수의 프로젝트 진행 경험과 그 과정에서 발생한 다양한 트러블에 대한 대처 경험을 면접에서 구술하는 것과 학습의 과정을 보여줄 수 있는 Github 및 블로그일 듯 합니다.
    • 현재는 알고리즘 위주의 코딩 시험을 통해 1차 선발하고 있으므로 생산성 있는 언어(파이썬 등)으로의 학습 및 연습 필요
  • 결과물이 반드시 프로젝트 중심의 결과물이어야 하고, 과정과 산출물이 주위 및 기업에게 자랑/공유가 가능한 교육프로그램으로 포커스가 되어야 합니다.
    • 모든 분야는 아니지만, 제가 있는 AI 알고리즘, AI 시스템, 빅데이터 쪽은 모두 오픈소스 기반의 공유가치를 가장 우선하며, 기술 발전 속도가 너무 빨라 학교에서 커리큘럼이 아에 없습니다.
    • 교수진도 모릅니다.
    • 더욱이 학교가 아니라 기업주도의 기술 발전이 되고 있습니다.
    • 따라서 가장 최신의 내용을 전세계 공통주제 연구자들 개발자들과 소통하고 공유하는 능력이 매우 중요하며, 배우는 것도 그 과정에서 배우게 되는 것이 더 큽니다.
    • 가장 빠르게 적용해보고 그것을 발표/공유하는 능력을 키워주는 프로그램이면 될 것 같습니다.

1.4-1. 위에서 제안하신 내용 중 상위 3개만 적어주세요.

  • 자바,파이썬,딥러닝
  • 코딩테스트역량, 인턴경험,  프로젝트 경험
  • 클라우드, AI/ML, DevOps
  • 자바,파이썬,딥러닝
  • 한달을 꼬박 밤 세우고 + 협동을 통해서 해결할 수 있는 좀 더 큰 프로젝트가 있으면 좋을 것 같긴 합니다.
    • 실제 개발 과정은 6개월 ~ 1년 정도 걸리는데, 이를 교육환경에서 시뮬레이션 할 수 있으면 좋을 것 같아요.
    • 끝나고 나면 스스로 뭐든 혼자서 해결할 수 있다는 자신감이 들 정도로 난이도가 있고 빡센 코스.
  • CS 기초(문제풀이) 와 스프링, 자바
  • 1. 이 과정의 목적은 기술습득이 아님
    • 2. 스스로 지식습득, 문제해결 과정을 배우는 과정임
    • 3. 그것을 습득한 것이 강점이기 때문에 분야를 한정해서 도전하지 말아라.
  • 1) 요즘 기술 트랜드에 맞춘것을 공부해가면 서비스를 런칭하고 운영하기(사용자 100명 이상 사용)
    • 2)   오픈소스 라이브러리를 만들어 보거나 기여하기
    • 3) 관심있는 기업이 필요할 것 같은 내용을 제안해서 승인받아서 하는 프로젝트
  • 글쓰기, 점진적 개선과 협업(presentation 포함)을 체험하는 워크샵
    (저는 https://sites.google.com/site/gdworkshop/materials/sissyfight-3000 이 워크샵을 신규 입사자 대상으로 하곤 했습니다)
  • 창업을 위한 교육, 기획을 잘 할수 있는 교육, 창의적 사고를 할 수 있는 교육
  • 예를 들어서 A라는 서비스를 만드는데, 앱을 만들었다. DB 구축을 했다. log 분석 했다 등. 너무 작은 단위 기술보다 그것을 어떻게 활용하였는지가 중요한 것 같습니다.
  • Python, JavaScript, React
  • 클라우드, 컨테이너, IoT(임베디드)
  • 네트웍프로그램(TCP,UDP,HTTP등), 데이터저장(파일,NoSql,RDB), 차트(정적,동적/웹)
  • Android/iOS 같은 앱의 경우에 스스로 처음부터 앱을 만들고 네트워크 연동해서 화면에 뿌리는 수준
    • node.js 같은 경량 서버에 기반한 API 개발
    • react.js, vue.js 등의 framework에 기반한 interactive하고 dynamic한 화면 구현
  • 해커톤
  • 추천 경험
    • 1. 프로젝트 경험
    • 2. 프로젝트를 상용화 서비스로 확장시킨 경험
    • 3. 실무에 사용되는 기술 위주의 교육
  • 다수의 팀 기반 서비스 구축 프로젝트 경험
    • 위 프로젝트를 마친 후 소스코드 뿐만 아니라 프로젝트 과정에서 겪은 경험 자체를 정리해 추후 면접 등에서 어필할 수 있도록 준비
    • 자신의 학습 역량을 보여줄 수 있는 체계적으로 정리된 Github 혹은 블로그
  • 파이썬 학습, 기획부터 개발까지의 프로젝트 경험, 구글등 서치를 통한 학습 경험
  • 추천 프로그램
    • 1) 하버드 MIT 스탠포드 등의 미국 탑클래스 대학의 MOOC(Massive Online Open Course) 의 듣고, 돌아가며 정리 발표하고 모든 것을 기록으로 남겨 github에 올리고 certification 을 받는 프로그램
    • 2) 기업 멘토들이 가진 실제 문제(하,중,상)를 내고 그것을  팀 프로젝트가 아닌, 자기주도 개인 캡스톤 프로젝트를 수행하는 프로그램
    • 3) 본인이 관심있는 분야의 글로벌 컨퍼런스 발표를 목표로 결과물(실험논문 또는 발표자료)을 만들어 도전해 보는 프로그램
      (예를 들어 AI 분야의 탑티어 컨퍼런스 또는 세컨티어 컨퍼런스 본 페이퍼 또는 워크샵 페이퍼 등으로 능력에 맞게 목료 수위 조절)

2. 신입채용시 익혔으면 하는 역량 기준

(Facebook Lite 앱 개발팀) 개발은 혼자 하는 게 아니다.

2.1. 학생들이 어떤 걸 배우고 수료하면 좋을까요?
      (재단이 갖추어야 할 커리큘럼)

  • 기술적인 교육분야와 github 등은 이미 많이 강조하는 것 같아 아래 분야를 추천해 봅니다.
    • SW 기술을 전수도 중요하지만 협업이 잘 되는 개발자 or 프로젝트를 진행하는 개발자 or 장인 개발자가 되기 위한 방향을 알려주는 것도 중요하다고 생각합니다.
    • 아래 부분을 도입하여 프로젝트 진행 해보기
      • jira & confluence를 사용하여 프로젝트 진행
      • 팀원끼리 code review 진행
      • 팀원끼리 pair programming 진행
      • Agile Sprint 진행 & KPT 회고 진행
      • clean code 기반한 코드 작업
      • code 리팩토링 진행 하며 모듈 고쳐보기
      • 협업을 효율적으로 하는 방법에 대한 강의
  • 코딩테스트에 통과할 수 있는 정도의 알고리즘 지식, 현업과 유사한 프로젝트 경험, 협업 및 커뮤니케이션 스킬
  • 기본 프로그래밍 언어(C, C++, 자바, 파이썬, 자바스크립트 중 한두개), 문제해결능력, 논리적인 사고방식
  • Agile 방법론, 클라우드, MSA
  • 현재 커리큘럼에 다음을 선택적으로 추가하면 좋겠습니다.
    • 프론트엔드 역량 추가
    • 앱 개발 ( 안드/ios 등 선택 )
    • 테스트 역량
    • CI/CD
    • AWS 사용법
  • 스스로 해결 하는 능력 + 집착 + 멘탈
    • 팀웍
    • Python 등 자유롭게 다룰 수 있는 언어 한가지
    • 네트워크의 기초를 이해하고 다룰 수 있는 능력 (protocol 설계 능력)
    • 기본 통계학에 기초를 둔 데이터를 분석할 수 있는 능력
  • 일정을 산출하고 계획대로 진행하는 것. (진행예측)
    • 소규모 커뮤니케이션 (협업/조율)
    • 준비된 발표 (프레젠테이션)
  • 언어의 기본을 잘 다지고 해결능력을 갖추게 된다면 현업에 맞는 언어와 프레임워크를 가지고 이를 직접 온전한 힘으로 만들어 런칭하고 운영하고 수료해보면 좋을것 같습니다. 
  • 신입 주니어라면 현재로도 좋습니다.
    • 굳이 추가한다면 Reactive Programming 정도 있으면 좋겠습니다.
  • 저희 회사는 최근 기본 알고리즘 문제푸는 능력을 기본으로 요구 하고 있습니다.
    알고리즘 사이트에서 제출되는 문제를 자유자재로 해결 정도의 능력까지 키웠으면 합니다.
    • 비전공자로 기초적인 것을 하지만, 왜 하는지 어디에 활용하는지를 알고 수료하면 좋겠습니다.
  • 실제 현업에서 많이 쓰이는 기술들을 배우면 좋을 것 같습니다.
    • 예를 들면, Android, iOS, React, ReactNative, Flutter 등 Front-end와 관련된 기술들과, AWS, Django, Node.js 등 Back-end와 관련된 기술들을 배워두면 좋을 것 같습니다.
    • 그리고 단순히 배우기만 하기 보다는 실제로 작은 서비스를 만들어 보면 좋지 않을까 생각합니다.
    • 이노베이션 아카데미 안에서 하는 작은 교내창업 같은 느낌으로 말입니다.
  • 클라우드, 컨테이너, 보안
    • 기초도 물론 중요하지만, 그 기초가 다져 졌다는 전에 하에는 그 다음의  도메인 기술경쟁력이 다소 떨어짐.
    • 전공자 학생들은 이미 다 갖추고 있는지라, 그것 외에 실무적으로 필요한 기술이나 현대 기술의 트랜드를 내 업무 도메인에 적용 할 수 있는 차별성을 필요로 함
  • 안정적인 네트웍연계 구현(TCP/UDP, MQ,HTTP등), 웹 프레임웍(react, vue.js등)
  • 희망역량
    • 컴공 4년에 걸쳐서 배우는 기초적인 자료구조/알고리즘에 대한 지식
    • Java, JavaScript, Python 등의 업계에서 많이 사용하는 언어
    • 각 직무별 framework을 이용한 협업 프로젝트
  • 협업의 경험
    • 같은 과제를 협업하는 것이 아닌 서로 다른 포지션으로 협업의 경험이 필요합니다.
    • 서버-클라이언트 등의 관계에서 협업을 진행해 볼 필요가 있습니다.
  • 파이썬, 딥러닝, 영상처리, 자연어처리, 음성처리 등 최근 시장에서 필요로한 심화 기술
  • 정리하여 보여주신 공통과정을 제외하고 보았을 때, 취업하려는 직무 분야에 맞는 현업 실정에 가까운 지식/경험을 견지할 수 있다면 좋겠습니다.
    • [공통과정에 대한 검토의견]
    • 설문의 4번 질문에 응답한 내용과 같이, 다양한 직무 분야를 어느정도 간접 경험해보고 자신이 원하는 직무 분야를 1~2개로 설정하고, 원티드 등의 채용 사이트에서  해당 직무 분야를 기준으로 직접 리서치를 하여 자신에게 공백으로 존재하는 역량들을 기술 단에서 채워 나갈 수 있으면 좋을 것 같습니다.
    • 따라서 취업 자체에만 포커스를 맞췄을 때에는 세부 개발 직무 별로 요구되는 기술적인 측면들을 학습하고 이를 기반으로 2~3건 이상의 프로젝트를 진행해 추후 면접 등에서 경험을 어필할 수 있도록 갈무리해두면 좋을 듯 합니다.
    • 그 외에도 어제 간담회에서 다른 멘토님께서 말씀주셨던 것과 같이, 다수의 회사들이 일차적인 평가 기준으로서 코딩테스트를 활용하고 있으므로 단기적인 관점에서는 이러한 흐름이 사그라들기 전까지는 알고리즘 문제풀이 역시도 대응할 수 있도록 다양한 기초 리소스를 제공하고 스스로 확장해나가며 학습을 하게끔 독려해야할 것 같습니다.
  • 희망 프로젝트
    • 기본을 학습 후 자기 주도의 주제로 팀 프로젝트
    • 현재 현업에서 많이 활용되는 언어 학습 (파이썬, 자바 등)
  • 희망역량
    • 언어에 대해 : GoLang 중급이상, 파이썬 중급이상
    • AI분석/모델링 : 캡스톤프로젝트
    • Kubernetes, Kubeflow  : 캡스톤프로젝트
    • AI  코스 이수 (cousera 및 미국 아비리그 코스 cetification)

2.2. 현재 또는 과거 직장을 기준으로 안정권으로 취업이 가능한 역량은 어떤 게 있어야 할까요? (수준 및 역량)

  • 제 기준에는 기술을 배웠다는 의미가 없습니다.
    • 그 기술로 어떤 것을 만들어봤냐, 어떤 실습을 해 보았냐같은 응용 했던 역량이 중요했습니다.
    • 대부분 회사에 들어가면 팀원들과 일을 하기 때문에 팀 프로젝트로 얼마나 체계적으로 진행해봤냐가 가장 필요한 역량이라 생각합니다.
  • 오픈소스 프로젝트 참여 경험, 현업과 유사한 프로젝트 진행 경험, 개인의 역량을 보여줄 수 있는 포트폴리오
  • 기본 컴퓨터 과학 이론, 채용 직군 요구사항에 맞는 기본적인 능력과 프로젝트 경험, 실서비스 개발 및 운영 경험, 인성(겸손)
  • 클라우드 관련 전문 역량이 있으면 보다 유리할 것 같습니다.
    • 시장에 너무 인력이 부족합니다.
  • 기업별 차이
    • 스타트업 : 최대한 빨리 찍어내는 능력 ( 프론트/백엔드/앱등 )
    • 대기업 : 자바기반으로 깊게 파본능력 ( CS 기초 / 스프링 )
    • 기본적으로 – 협업능력, – 문서화, – 테스트, – 배포,- 위를 이야기해서 의사결정가능한 능력
  • 코딩을 매일매일 해서 코딩을 좋아하고, 생각을 자유롭게 표현할 정도가 된다면 어떤 면접 이라도 자신있게 임할 수 있지 않을까 합니다. (통과는 별개로) 
  • 요구되는 것
    • 1. 취업분야에 대한 관심 (전문성이 아님)
    • 2. 자신의 의견을 전달하고, 협업하는 사람들과 “조율”할 수 있는 능력
    • 3. 스스로 결과를 만들어 내고 책임도 질 수 있는 자세 (수평적 문화가 확산되면서 진행 업무에 대한 책임감도 함께 요구됩니다.)
  • 커뮤니케이션 능력, 문제 해결 능력(깊은 사고능력, 구현 능력), 현 부서의 기술 스택에 대한 깊은 이해
  • 신입 주니어라면, 현 교육 커리큘럼으로도 충분합니다.
  • 신입사원에게 크게 기대하는 역량은 크지 않습니다. 하지만 다양한 프로젝트를 통해서 다양한 경험이 있으면 더 좋을 것 같습니다.
  • 프로젝트를 받았을때 혼자 찾아보고 개발할 수 있는 단계
  • Python, JavaScript, React, AWS, Node.js
  • 취업이 목적이라면, 굳이 기술력에 대한 비중이 그렇게 크지는 않음. 어차피 신입은 다 거기서 거기라 기본 개발 능력을 갖추었다면 그 다음에 보는 것은 기술력이 아님.
    • 따라서, 신입 기준으로 본인이 해본 프로젝트에 대한 이해도 및 기술적인 설명 능력 (커뮤니케이션 스킬). 기술 트렌드에 대한 이해도 및 그것을 혼자 학습할줄 아는 능력에 대한 표현력.
  • 해보았으면 하는 프로젝트
    • 대용량(ex 10만개) TCP 세션 개발 및 성능테스트
    • Spring을 활용한 CRUD 샘플 구현
    • React 및 D3차트 활용 웹 UI구현
    • Http 켄버스 기반 동적 차트(ex Pie) 구현
  • Mobile, Web, Server 등의 각 직무별 최소한의 독자 프로젝트 역량 (아키텍쳐나 기술의 난이도는 별개로…)
  • iOS 관련 프레임워크 숙달
  • 프로젝트 경험, 알고리즘 테스트 통과 실력
  • 마찬가지로 [공통과정에 대한 검토의견] 설문의 4번 질문에 대한 응답을 살펴봐주시면 감사드리겠습니다.
    • “안정권으로 취업이 가능”하다는 것이 다소 막연하게 느껴집니다.
    • 다수의 프로젝트 경험과 각 프로젝트 내에서 자신이 맡은 역할에 대한 충분한 이해, 자신이 맡지 않은 역할들에 대해서도 열린 자세로 언제든 학습하고자 하는 열정과 직접 학습을 진행할 시 충분한 속도로 학습을 해낼 수 있는 기본적인 이해/활용 능력, 그리고 준수한 대면/서면 커뮤니케이션 역량 등이 될 것 같습니다.
    • (이것들을 어떻게 자기소개서/코딩테스트/면접 등에서 가장 효율적/효과적으로 보여줄 수 있을 지에 대해서도 고민을 해봐야할 것 같습니다)
  • 익혔으면 하는 능력
    • 1. 빠른 학습 능력(서치, 경험을 통해 필요한 지식 습득)
    • 2. 자신있는 언어로 문제를 해결할 수 있는 기술(파이썬, 자바, C++, C 등)
  • 언어에 대해 : 코딩테스트 합격여부
    • NeurIPS, CVPR, ICML  등 AI 관련 컨퍼런스 워크샵 페이퍼 이상
    • 실무(인턴) 또는 실무에 가까운 프로젝트 경험의 결과물 공유

3. PBL콘텐츠의 기획방향

“프로젝트란 무엇을 개발할지 찾아가는 과정까지를 포함한다.”

3.1. 어떤 내용의 콘텐츠를 기획해볼까요?

  • 멘토가 멘토링이 가능한 컨텐츠 분야 키워드
    – coding style (coding convention) – code review – code refactoring – code 최적화 – 성능 최적화
    이 부분에 대해서 구체적으로 문제집을 만들어봤으면 합니다.
  • 데이터분석, 수집, 머신러닝 등을 활용한 서비스 개발
  • 제가 사이드 프로젝트로 개발해서 실제 서비스중인 폰트박스(https://fontbox.kr)의 회원관리 및 커뮤니티 기능 개발(파이썬, mysql, AWS ec2, spot instance, instance images, load balance, auto scaler )
  • 클라우드 기반의 토이 프로젝트(AI/ML, IoT, 기타)
  • 주식 거래를 하는 프로그램을 만들어보세요.
    • 옵션으로 1대로 자동으로 하기, 여러대로 하기, 여러개의 계좌로 하기, 문자, SMS, 메신저등으로 레포트 주기
    • 원하는바 : 알아서 검색해서 모의투자로 API 를 붙이는 법을 알아내서 옵션을 추가로 할수 있음
    • 데이팅 앱을 만들어보세요.
    • 쇼핑몰을 만들어보세요. ( 있는 쇼핑몰을 베끼기기 )
    • 웹써버 1대로 동접 100만을 만들어보세요.
    • 동접 100만을 클라이언트를 이용해서 만들어보세요.
    • 고객 관리 페이지를 만들어보세요. ( 리스트, 서치, 수정, PDF 출력등 )
    • 챗봇을 만들고, 해당 챗봇 상담을 받으면서 메뉴를 웹에서 수동으로 추가로 만들수 있도록 해보세요.
    • 개발된 프로젝트에 CI 를 붙여보세요.
    • 프로젝트에 테스트를 얼마나 만드는게 좋을지 토론해봅시다.
      • 기능을 삭제해보세요.
      • 기능을 추가해보세요.
  • 데이터 수집부터 서비스화까지 AI 의 전체 파이프라인을 관리할 수 있는 토이 프로젝트
  • 학생들이 하고 싶은 프로젝트를 제안(기술자유, 조정가능)하고 런칭하여 배포하고 운영까지 해보기
  • PBL 과는 다른 방향인데, 저는 게임디자인워크샵 프로그램 중 시시파이트 3000 ( https://sites.google.com/site/gdworkshop/materials/sissyfight-3000 )을 해보면 좋겠습니다.
    • 3~5시간짜리 오프라인 프로그램입니다.
    • 종이, 주사위 등 아주 간단한 소품으로 게임을 만들고, 추가로 주어지는 제약 조건에 따라 개선해야 합니다.
    • 핵심은 아이디어를 토론하는 것 보다 아이디어를 빠르게 실험하고 개선하는 주기(iteration)를 많이 거치는 것입니다.
    • 현업 Production 을 모델링한 것으로 주니어, 시니어 모두 많은 자극을 받는 경험이 됩니다.
  • 다양한 분야에서 활동하는 멘토들과의 현업 경험 공유
  • 3달정도 그룹 과제를 하면 좋을 것 같습니다.
  • 학생들끼리 서비스를 기획해서 직접 만들어 보면 좋을 것 같습니다.
    • 정답이 정해져 있는 문제를 주고 푸는 것보다는, 각자 자신들의 상상력을 발휘해서 창의적으로 프로그램을 개발해보는 경험이 중요하다고 생각합니다.
    • 개발된 서비스는 실제로 출시해서 이노베이션 아카데미 학생들과 외부인들이 사용해 볼 수 있도록 만들어서 피드백을 받고 이를 다시 프로그램에 반영하는 과정도 경험해 보면 좋을 것 같습니다.
  • 클라우드 설계 및 구축, SaaS 서비스 (또는 오픈API) 를 활용한 프로젝트, 오픈소스 하드웨어 플랫폼을 활용한 생활 IoT 프로젝트
  • 멀티 스레드 환경에서 TCP/HTTP 기반의 대규모 네트웍 연계 구현
    • 1단계 : Client/Server환경을 위한 TCP/HTTP 양방향 세션 구현 / 2주 / 개인 /  양방향에서 요청/응답에 대한 시뮬레이션 구현 
    • 2단계: 안정적인 TCP세션 구현(중계서버+이중화)/ 1달 / 2명 / 네트웍이 물리적으로 장애로 끊어져도 우회경로로 데이터 전송, 처리현황에 대한 로깅
    • 3단계: 연결 폭주시에도 안정적으로 세션 유지(중계서버,부하분산) / 3달 / 2명 / 부하 테스트 환경 구현 혹은 구성, 클라이언트 접속 폭주시 부하 분산, 상대 서버 장애(중단,다운) 현상 시뮬레이션과 장애 극복, 전송데이터 폭주(전송지연) 현상 시뮬레이션과 장애 극복,      처리현황에 대한 로깅, 모니터링 구현, TCP와 HTTP간의 성능 비교
  • 현업과 비슷한 모양이지만 조금 더 간단하고 쉬운 방향으로 학생들끼리 팀빌딩을 해서 프로젝트를 진행하는 모습이면 좋겠습니다.
  • 유명한 서비스 카피해보기 – Facebook, Instagram, Trello…
  • 문제집이라기 보단 현업에 있는 멘토단들이 현업에서 어떤 문제들을 해결하고 있는지에 대한 문제들을 수집하는게 좋을듯 함
  • 제 분야의 관점에서는 학생들이 기본적인 머신러닝/딥러닝 관련 기반 지식과 프로그래밍 역량을 스스로 갖추고, 이러한 지식을 활용해 구축한 다양한 예측 모델을 직접 웹앱 혹은 모바일 앱에 포함시켜 다양한 방식으로 서비스를 만들어보는 프로젝트들을 해보았으면 좋겠습니다.
    • 서비스 기획 -> 데이터 수집 및 머신러닝/딥러닝 예측모델 구축 -> 웹서비스 구현 or 앱서비스 구현을 위한 개발 지식 학습 후 직접 구현 -> 프로젝트 발표 데모데이” 등과 같이 굵직한 마일스톤과 기한만 정해주고, 학생들이 직접 부대끼며 필요한 지식을 학습해 채워나가면 어떨까 싶습니다.
    • (일반적인 서비스 내 특정한 기능 단위의 요구사항 리스트를 문제집의 도전과제로서 정하는 것도 가능할 것 같습니다.)
    • 과거 경험으로는 머신러닝/딥러닝 예측모델 구축과 웹 구현의 기초만 가르쳐주고 프로젝트를 진행했을 때, 스스로 더 다양한 모델들에 대해 학습/구현하고 React, NodeJS, Android, AWS 등에 대해 직접 학습해 구현을 해나갔었습니다.
    • (만약 42Seoul에서 진행한다면 머신러닝 & 웹서비스 구현에 대한 지식 역시도 기초적인 리소스를 제공해 물꼬만 터주고 직접 자신의 욕심에 따라 학습을 해나가게끔 유도하는 방향이 될 것 같습니다.)
    • 당연히 머신러닝/딥러닝 예측모델을 활용하지 않고 “웹앱 혹은 모바일 앱 서비스”로 프로젝트 주제를 잡고 진행을 해도 무방하며, 다른 팀원들과 부대껴가며 직접 프로덕트를 만드는 과정을 A부터 Z까지 경험해보는 것이 핵심이 될 것 같습니다.
  • 중소 규모로 프로젝트 팀 구성 후 자기 주도의 주제 선정 및 개발하는 프로젝트
  • 시계열 데이터 AI 분석 모델개발, 크라우드 네이티브 방식의 분석 플래폼구축,  빅데이터 파이프라인 플래폼 구축

※ 관련글 : 실무형 프로젝트 가이드

끝.