티스토리 뷰
인턴쉽 모집이 마감되었습니다. 총 3분 선발하게 되었습니다. 감사합니다!
------
밥대생 운영사 주식회사 비에이비랩스에서 CUop 인턴을 모집합니다. CUop과 관련한 내용들은 사이트(https://cuop.kaist.ac.kr/)에서 확인할 수 있으십니다. CUop프로그램에 대해 요약해 말씀드리면,
- KAIST 3/4 학년, 인턴십 학점 부여 가능 학생에게
- 월 200만원 급여 지원(2달, KAIST에서 장학금 형태로)하는
인턴십 프로그램입니다. 현재 자사의 경우 2인까지 선발 가능하오니, 관심있으신 분들은 사이트에서 지원해주시고, 담당자(이준영, joonyoung@bablabs.com)에게 연락주시면 감사드리겠습니다.
------
1. 참여학생 역할 및 주요업무
지금까지 자사가 인턴과 함께 했던 경험에 의해 판단해 보면 자사가 현재 진행하고 있는 서비스에 들어가는 컴포넌트를 맡기는 것보다는 조금 더 도전적인 과제를 책임감 있게 맡기는 것이 훨씬 더 중요하다고 판단하고 있습니다. 컴포넌트를 맡기는 경우 인턴이 설계 상세적인 부분을 선택하지 못하는 경우가 많습니다. 이미 많이 정해져있는 것들에 부속품들을 개발하는 경우 인턴의 Motivation도 떨어지고 회사 입장에서도 인턴들이 짜둔 코드를 실제 프로덕션 레벨로 올리기 위해서는 상당히 많은 노력이 투여되어야 할 가능성이 크기 때문에 문제가 있을 수 있습니다. 그래서 아예 도전적이면서 새로운 중요한 프로젝트를 인턴에게 맡기고 훌륭한 결과를 나타냈을 경우 실제 런칭하는 것이 훨씬 더 낫다고 판단하고 있습니다. 실제 실리콘 밸리의 많은 스타트업들이 이런 방식으로 인턴을 뽑는 것으로 알고 있고 이 방식이 기존 컴포넌트를 맡기는 방식보다 더 서로에게 도움이 되는 방식이라고 확신하고 있습니다.
각 인턴들은 지금까지 공부해온 내용들이나 각자의 관심사가 달랐을 수 밖에 없습니다. 그래서 각 인턴들이 관심을 가지는 영역도 물론 다를 것이고요. 따라서 천편 일률적으로 어떤 인턴이 오든 같은 프로젝트를 지정해주는 것은 효율적이지 못하다고 생각합니다. 그래서 인턴에게 자사가 진행하고 싶은 몇 가지 프로젝트 중 하나를 선택하게 하고자 합니다. (물론 인턴이 자사의 데이터나 시스템을 활용해 새로이 해보고 싶은 의욕이 있는 프로젝트가 있다면 해당 프로젝트를 진행하게 할 예정입니다.)
[ 프로젝트 1 ] 식단표 OCR 프로젝트
자사는 공개 되어있는 데이터를 크롤링해 식단 정보를 전국 400개 대학 학생들에게 전달하고 있습니다. 몇몇 학교들은 식단 정보를 이미지 형식으로 올려주는데 이런 학교들의 경우 낮은 유지율과 트래픽을 보이고 있습니다. 서비스 트래픽을 높이기 위해서는 이미지로 식단이 나오는 학교들의 식단을 텍스트로 변경할 필요가 있습니다. 사람이 직접 이미지를 텍스트로 타이핑하는 것은 매우 많은 인건비가 들기 때문에 사실 상 불가능하기 때문에 이미지에서 텍스트를 적절히 추출해 내는 OCR 기술이 필요한 상황입니다.
영어 스페인어 등 알파벳 기반의 언어에서 OCR 기술은 이미 성숙한 상태이지만 한글 OCR 기술은 아직 시작 단계에 있다고 보고 있습니다. 알파벳의 경우 학습해야 하는 글자가 26자 밖에 되지 않아 비교적 학습이 쉬운 편이지만 한글은 만 개 이상의 글자 종류가 존재하기 때문에 훨씬 난이도가 높은 편입니다. 한글의 경우 상용 레벨(10^-5이하의 오류 비율)의 매우 정확한 OCR이 사실상 불가능하다는 것이 정설로 받아들여 지고 있습니다. (미국 최대 명함 입력 서비스의 경우 OCR 기술을 활용해 명함을 입력해주는 것과 달리 한국 최대 명함 입력 서비스 리멤버의 경우 타이피스트들이 명함 사진을 보고 입력해주고 있습니다.)
물론 일반적인 OCR 기술을 개발하는 것은 매우 어려운 일일 것입니다. 하지만 자사가 만들고자 하는 OCR 기술의 경우 일반적인 OCR 문제에 몇 가지 가정이 추가된 문제를 푸는 것입니다. 이 몇 가지 가정이 추가 되면서 충분히 도전해볼만한 기술이라고 생각했습니다.
이제 자사의 OCR 솔루션 기획을 바탕으로 실제 인턴에게 시킬 업무를 상술하고자 합니다. 일단 직접 OCR 기술을 처음부터 개발하는 것은 매우 비효율적이며 인턴에게 시킬 업무는 아니라고 판단했습니다. 따라서 인턴에게 다음과 같은 과정을 통해 프로젝트를 수행하게 하고자 합니다.
1. 인턴은 Google Cloud Vision Api를 활용해 일단 OCR을 선 진행할 것입니다. 이 과정에서 REST API와 base64 등 실무에서 많이 쓰이는 개념들에 익힐 수 있을 것입니다. (MS API나 다른 OCR 관련 오픈 소스도 존재하지만 자사에서 테스트해 본 결과 Google Cloud Vision Api가 한글과 관련해 가장 좋은 성능을 나타내는 것으로 확인하고 있습니다.)
2. 이렇게 OCR이 끝나면 이미지 처리나 클러스터링 알고리즘을 통해 이미지를 python 2차원 array로 변환하는 과정을 진행합니다. 클러스터링은 단순 threshold 기반 알고리즘을 사용해도 되고 edge dection algithm(open cv 등 활용)을 기반으로 구현해도 되고 K-means 클러스터링을 기반으로 진행해도 됩니다. 인턴은 몇 가지 알고리즘을 모두 테스트 해보고 제일 성능이 좋은 알고리즘을 채택합니다.
3. 가장 성능이 좋은 Google Cloud Vision Api라고 해도 상용 레벨로 쓸 수 있을 정도로 성능이 좋지는 않습니다. 현재 이 프로젝트가 타겟팅하는 이미지는 식단표 이미지입니다. 식단표 이미지에 나오는 단어들을 대부분 음식 이름입니다. 자사의 경우 크롤링 엔진을 통해 수백만 건의 메뉴 DB를 소유하고 있습니다. 이 DB에서 메뉴 이름들을 적절히 추출해 내고 이를 바탕으로 crection하는 과정을 거치면 OCR이 부정확하더라도 정확한 식단표를 얻어낼 수 있을 것입니다.
4. 이렇게 정확한 메뉴 이름을 가진 python 2차원 array를 얻어내면 자사가 이미 보유한 모듈들을 통해 쉽게 메뉴를 추출해낼 수 있습니다.
이후 시간이 여유가 된다면 다음과 같은 작업들을 인턴들이 수행하게 될 것입니다.
5. 성능을 부스팅 하기 위해서 몇 가지 이미지 preprocessing을 위한 필터들을 개발하고 많은 이미지에서도 정상적으로 돌아가도록 모듈화할 수 있도록 일반화 해두는 작업을 하게 될 것입니다.
6. 성능을 부스팅하기 위해서 Google Cloud Vision API를 한 이미지당 여러번 쓰는 방식을 활용합니다.
7. Bounding 라이브러리를 활용해 더 정확하게 이미지 내 텍스트를 찾고 타게팅한 이미지만을 OCR해 내는 방식으로 성능을 올립니다.
8. 인턴이 이 알고리즘을 완성하면 이 알고리즘을 자사만 활용하는 것이 아니라 식단표 OCR 서비스를 자사 실험실 기능으로 웹에 업로드 하는 것까지 고려하고 있습니다.
[ 프로젝트 2 ] 페이스북 학식 봇 제작 프로젝트
자사는 현재 안드로이드 iOS 웹 모바일 웹 카카오톡 채팅 봇을 통해 전국 대학교의 학생 식당 식단 정보를 사용자에게 제공하고 있습니다. 회사 초기에는 안드로이드와 iOS로만 서비스를 제공했지만 더 많은 학생들에게 식단 정보를 제공하고자 하는 마음으로 웹 모바일 웹 카카오톡 채팅 봇으로도 서비스를 제공하고 있으며 지난 몇 달 간의 주요 트래픽 상승은 웹 모바일 웹 카카오톡 채팅 봇에서 견인된 것입니다.
자사는 이에 영감을 받아 보다 새로운 채널을 통해 학생들에게 식단 정보를 제공하는 것을 기획하고 있습니다. 페이스북 트위터 슬랙을 통해 학생들에게 식단 정보를 제공하고자 합니다. 이 중에서도 가장 중요도가 높은 페이스북 페이지를 우선적으로 포스팅하는 것을 먼저 구현하도록 할 예정이며 인턴의 실력에 따라 차후에 트위터나 슬랙을 통해서도 포스팅을 하는 기능을 만들게 할 예정입니다.
자세한 업무 프로세스는 다음과 같습니다.
1. 인턴은 개발 테스트용 페이스북 페이지를 하나 발급받고 페이스북 앱을 만듭니다.
2. 페이지 ID와 앱 KEY들을 활용해 페이스북에 자동으로 특정 메세지를 포스팅하는 봇을 제작합니다.
3. 자사가 내부적으로 사용하는 API 문서를 활용해 해당 서버로부터 식단 정보를 얻어오고 이 식단 정보를 페이스북 페이지에 포스팅하는 기능을 제작합니다.
4. 텍스트로 식단이 제공되는 식당과 이미지로 식단이 제공되는 식당 모두 제대로 식단이 제공되도록 포맷팅 합니다.
5. 중간에 식단이 변경되는 경우 기존에 올려뒀던 포스팅이 자동으로 수정되도록 구현합니다.
6. 각각의 포스팅의 통계자료를 수집해 API 서버에 리포팅하는 기능을 추가합니다.
이후 시간이 여유가 된다면 다음과 같은 작업들을 인턴들이 수행하게 될 것입니다.
7. 트위터에도 동일한 로직으로 동작하는 봇을 제작합니다.
8. 슬랙 WEB Hook과 캠퍼스/식당 등을 입력하면 자동으로 아침마다 메뉴를 포스팅해주는 봇을 개발합니다.
[ 프로젝트 3 ] 영양사들을 위한 식단 검색기 제작
현재 자사는 대학교 식당과 관련 해 수백만 건의 데이터베이스를 소유하고 있습니다. 이 데이터베이스를 바탕으로 새로운 사이트를 개발하고자 합니다. 전국의 영양사들은 어떻게 메뉴를 구성해야할지 고민이 많습니다. 예산이 여유로운 것이 아니기 때문에 최대한 같은 식재료를 반복하면서 다양한 메뉴를 추출해 내는 것이 영양사들의 주된 고민인 경우가 많습니다. 현재 이런 필요를 충족시키기 위해 영양사들은 자신이 구성한 식단 정보를 웹사이트를 올리고 다른 사람들이 구성한 식단을 보면서 어떻게 한 끼를 구성해야 할지 영감을 받습니다. 이런 사이트는 현재 전국에 3개 정도 존재하며 이 사이트에서 해당 정보를 공유하고 공유받기 위해서는 월 수만원 이상의 이용료를 내야 합니다.
자사는 크롤링을 통해 수백만 건의 식단 데이터를 보유하고 있습니다. 이 식단 데이터를 바탕으로 영양사들이 식단 구성을 할 때 도움을 받을 수 있는 사이트를 제작하고자 합니다. 이 프로젝트의 경우 인턴을 다음과 같이 지도할 예정입니다.
1. 인턴은 자사가 가진 수백만 건의 메뉴데이터를 일단 정제합니다.
2. 각각의 메뉴 데이터를 토대로 새로운 검색에 최적화된 메뉴 데이터베이스를 제작합니다.
3. 이 메뉴 데이터 베이스를 토대로 검색할 수 있는 간단한 사이트를 제작합니다. (중복은 제거되어야 합니다.)
4. 동일한 아이피에서 너무 많은 요청이 들어오는 경우 차단하는 기능을 제작합니다.
이후 시간이 여유가 된다면 다음과 같은 작업들을 인턴들이 수행하게 될 것입니다.
5. Flask-Security 익스텐션을 활용해 로그인 기능을 구현합니다. 본인이 원하는 경우 Facebook 등의 로그인 기능을 붙일 수도 있을 것 같습니다.
6. Flask-Admin 익스텐션을 활용해 어드민 페이지를 제작합니다.
7. 로그인 기능을 만들면 해당 식단을 즐겨찾기 할 수 있는 기능을 제작합니다.
8. 즐겨찾기 기능을 제작한 이후에 내 식단을 실제 구성할 수 있는 기능을 제작합니다.
[ 프로젝트 4 ] Vue 혹은 React 전환 프로젝트
현재 자사의 웹 프로젝트는 모두 bootstrap4(혹은 3)과 jquery를 이용해 개발되었습니다. 밥대생 웹 및 관리자용 콘솔 모두 bootstrap4 + jquery + sass를 이용해 제작되었습니다. 웹 및 관리자용 페이지에 들어갈 신 기능 개발과 함께 기존 기술 스택을 react나 vue 로 전환하는 작업을 진행합니다. 어떤 프레임워크로 진행할지에 대해서는 인턴이 전적으로 책임감있게 결정하게 하고자 합니다.
이 프로젝트의 경우 KAIST 전산학부에 재학 중인 몇몇 학생들과의 인터뷰를 통해 도출해낸 프로젝트입니다. 인턴을 통해 얻고 싶은 경험이 무엇인지를 물었는데 새로운 프레임워크를 써보고 싶다는 응답이 있어 추가하게 되었습니다. 프로젝트 1~3과는 달리 자사 입장에서 프로젝트 4의 경우는 중요도가 다소 떨어질 수 있으나 이 프로젝트의 경우 인턴 본인의 성장에 많은 도움이 될 수 있을 것으로 생각해 추가하게 되었습니다.
이 프로젝트의 경우 인턴을 다음과 같이 지도할 예정입니다.
1. Vue 와 React 중 어떤 프레임워크를 사용할지 인턴 본인이 스스로 결정해서 결정한 이유를 임원진에게 발표하는 시간을 갖게 하고자 합니다. 그리고 그 결정에 자사는 전적으로 따라주고자 합니다.
2. 프레임워크와 함께 webpack을 셋팅하고 해당 개발환경을 문서화하는 작업을 진행합니다.
3. 밥대생 웹부터 실제 jquery가 사용된 부분을 vue나 react로 전환하는 작업을 진행합니다.
4. 이후 아직 구현되어 있지 않은 새 기능(식당에 대한 의견을 쓰는 기능 등)을 추가합니다.
이후 시간이 여유가 된다면 다음과 같은 작업들을 인턴들이 수행하게 될 것입니다.
5. 밥대생 식당 용 관리자용 페이지도 밥대생 웹과 같은 기술 스택으로 이루어져 있는데 관리자용 페이지도 vue 나 react로 전환하는 작업을 진행합니다.
6. firebase를 활용한 부분이 있는데 프레임워크를 활용해 더 깔끔하게 코드로 변환하게 만들고자 합니다.
공통적으로, 인턴은 코드리뷰를 받을 수 있습니다. 인턴이 회사에서 일을 하면서 코드리뷰를 받을 수 있는 기회는 큰 회사가 아니면 경험하기 힘들 것입니다. 하지만 인턴인 만큼 초기에 더 나은 코드를 작성하는 방법에 대해 배우는 것이 필요하다고 판단해 인턴들에게 코드리뷰를 하고 실제 더 나은 코드로 리팩토링하는 과정도 인턴에게 보여주고 있습니다. 그리고, 인턴의 모티베이션을 위해 자사의 서비스에 인턴이 조금이라도 기여한 측면이 있다면 CREDIT 페이지에 해당 내용을 적어 공개하고 있습니다.
2. 참여학생 요구 스펙
위에서 인턴의 업무에 대해 프로젝트별로 나누어서 설명드렸습니다. 요구스펙 역시 프로젝트 별로 달라질 수 밖에 없을 것 같습니다. 일단 각 프로젝트의 공통 요구사항에 대해서 말씀드리고 싶습니다. 자사는 현재 개발 인턴만을 모집하고 있습니다. 따라서
- 전산학부 또는 관련 전공자(복수전공 포함)
- 꼭 전산학부를 전공을 할 필요는 없음.
- 개발에 자신이 있는 분들이라면 학과에 관련없이 모집.
- 개발자로서 성장 욕심이 있는 학생 우대.
이제 각 프로젝트 별로 우대사항들을 정리해서 말씀드리고자 합니다. 우대 사항일 뿐 반드시 필요한 사항은 아니라는 것을 한 번 더 강조하고 싶습니다. 인턴 경험을 통해 모두 경험하게 될 내용들을 미리 적어 정리해둔 것입니다.
[ 프로젝트 1 ] 식단표 OCR 프로젝트
- Python에 익숙한 학생.
- CS101 CS372 등 Python을 이용한 프로젝트가 나오는 수업을 들은 수강생.
- Python 관련 framewk flask django tnado 등을 다뤄본 경험이 있는 학생.
- REST API에 대한 이해가 있는 학생.
- REST API를 활용한 매쉬업 서비스 개발 경험이 있는 학생.
- CS341 EE323 등 네트워크 관련 수업을 수강한 경험이 있는 학생.
- Python requests 등 관련 오픈 소스를 다뤄본 경험이 있는 학생.
- 한국어 자연어처리에 대한 이해가 있는 학생.
- CS372 CS470 등 자연어 처리 관련 수업 수강생.
- KoNLPy 등 자연어 처리 관련 오픈소스를 다루어본 경험이 있는 학생.
- 단어와 단어 사이의 distance에 대한 개념을 이해하고 있는 학생.
- 이미지 처리에 관심이 있는 학생
- EE202 등 신호처리 관련 수업 수강 학생.
- OpenCV Python PIL W 등 이미지 처리 관련 라이브러리를 경험해 본 학생.
- 클러스터링 알고리즘에 대한 이해가 있는 학생
- CS470 전산학 특강 전자공학 특강 등 간단한 클러스터링 알고리즘에 대한 이해가 있는 학생.
- Tensflow PyTch 등 오픈 소스를 경험해 본 학생.
- Matlab내 clustering 함수나 numpy scipy 등의 라이브러리를 경험해 본 학생.
[ 프로젝트 2 ] 페이스북 학식 봇 제작 프로젝트
- Open API를 활용한 서비스에 관심이 있는 학생
- Facebook Open Graph API를 활용해 페이지를 자동으로 관리하는 경험을 진행해보고 싶은 학생.
- Twitter Open API Slack Web Hook를 이용해 자동으로 메세지를 포스팅 하는 업무를 경험해보고 싶은 학생.
- Python에 익숙한 학생.
- CS101 CS372 등 Python을 이용한 프로젝트가 나오는 수업을 들은 수강생.
- Python 관련 framewk flask django tnado 등을 다뤄본 경험이 있는 학생.
- REST API에 대한 이해가 있는 학생.
- REST API를 활용한 매쉬업 서비스 개발 경험이 있는 학생.
- CS341 EE323 등 네트워크 관련 수업을 수강한 경험이 있는 학생.
- Python requests 등 관련 오픈 소스를 다뤄본 경험이 있는 학생.
- 데이터베이스를 다뤄 본 경험해 본 학생.
- CS360 등 데이터베이스 관련 수업을 수강했던 수강생.
- SQLite MySQL Maria DB Postgre 등 SQL 데이터베이스를 다뤄본 경험이 있는 학생.
- ORM을 다뤄본 경험이 있는 학생.
- Python SQLalchemy Django 등 Python 기반 ORM을 경험해 본 경험이 있는 학생.
[ 프로젝트 3 ] 영양사들을 위한 식단 검색기 제작
- Python에 익숙한 학생.
- CS101 CS372 등 Python을 이용한 프로젝트가 나오는 수업을 들은 수강생.
- Flask 등 웹 프레임워크를 다뤄본 경험이 있는 학생
- Python 관련 framewk flask django tnado 등을 다뤄본 경험이 있는 학생.
- REST API에 대한 이해가 있는 학생.
- REST API를 활용한 서비스 개발 경험이 있는 학생.
- CS341 EE323 등 네트워크 관련 수업을 수강한 경험이 있는 학생.
- Python requests 등 관련 오픈 소스를 다뤄본 경험이 있는 학생.
- HTML CSS에 대한 기본 이해가 있는 학생.
- Bootstrap foundation css 등을 이용해 개발해 본 경험이 있는 학생.
- 데이터베이스를 다뤄 본 경험해 본 학생.
- CS360 등 데이터베이스 관련 수업을 수강했던 수강생.
- SQLite MySQL Maria DB Postgre 등 SQL 데이터베이스를 다뤄본 경험이 있는 학생.
- ORM을 다뤄본 경험이 있는 학생.
- Python SQLalchemy Django 등 Python 기반 ORM을 경험해 본 경험이 있는 학생.
[ 프로젝트 4 ] Vue 혹은 React 전환 프로젝트
- vue나 react를 경험해본 적이 있는 학생.
- javascript를 다뤄본 경험이 있는 학생
- REST API에 대한 이해가 있는 학생.
- REST API를 활용한 서비스 개발 경험이 있는 학생.
- CS341 EE323 등 네트워크 관련 수업을 수강한 경험이 있는 학생.
- 프론트엔드/백엔드 개념이 있는 학생.
- 프론트 개발 경험이 있는 학생(안드로이드 iOS 등 포함)
- 디자인적인 감각이 조금은 있는 학생.
- 디자인 시안을 보고 그대로 만들 수 있는 정도면 충분합니다.
- HTML CSS에 대한 기본 이해가 있는 학생.
- Bootstrap foundation css 등을 이용해 개발해 본 경험이 있는 학생.
3. 마지막으로,
자사는 [밥대생]이라는 서비스를 진행하고 있습니다. 총 사용자 약 20만명, 월간 활성화 이용자 4만명, 일간 활성화 사용자 1만명을 보유한 서비스입니다. KAIST 학생 1만 명 중 매일 1000명 이상이 사용하는 서비스이기도 합니다. 대부분의 KAIST 학생들은 [밥대생]에 대한 서비스를 인지하고 있다고 판단하고 있습니다. 그리고 저희가 인턴 프로젝트로 제시드린 프로젝트들 모두 [밥대생]과 관련된 파생 서비스입니다. 학생 자신이나 학생 자신 주변에서 사용하는 서비스에 기여할 수 있는 프로젝트들을 제시했기 때문에 훨씬 더 인턴 생활을 보람있게 보낼 수 있을 것으로 기대하고 있습니다.
점심식사는 당연히 지원됩니다. 다만, 식대를 돈으로 지원하는 것 보다는 직접 인턴과 같이 밥을 먹고자 합니다. 밥을 같이 먹으면서 서로 친해지고 이야기를 나누는 과정이 일을 하는 것 만큼 중요하다고 생각합니다. 그래서, 점심시간은 1시간 이상 쓰려고 노력하는 편입니다. 혹시 저희 상주인원들이 모두 일정이 있어 인턴들과 식사를 해주지 못하는 날이 있는 경우에는 법인카드를 주거나, 식대를 현금으로 지원해주고자 합니다.
자사는 2016년 6월에 법인을 설립하였고, 2016년 가을 KAIST 창업오디션인 E*5 KAIST에서 우승했습니다. 현재, 사업 영역을 B2B로 잡고 4개 회사(2개 금융권 회사, 1개 프랜차이즈, 1개 마케팅 법인)와 B2B 계약을 맺고 지속적으로 매출을 내고 있습니다. 올해는 몇 천만원 정도의 매출밖에 내지 못하였지만, 내년에는 억 단위의 매출을 낼 것으로 예상되고 있습니다. 자사는 평균적인 스타트업들 보다 비교적 빠르게 매출을 내기 시작했고, 빠르게 성장하고 있습니다. 이번 CUop 프로그램을 통해 저희도 인턴과 함께 발전할 수 있는 계기가 되었으면 합니다.
잘 부탁드립니다. 많은 지원 부탁드립니다. 감사합니다.
----
자세한, KAIST CUop 프로그램에 대한 설명서를 아래와 같이 첨부합니다.