Skip to main content

Training Courses(국비지원교육과정)

· 21 min read
Alex Han
Software Engineer

30살이 되던 해 회사를 나와 국비지원 교육과정을 들으면서 겪었던 일들입니다.

지원

프로그래밍 관련 교육 과정은 아주 많았습니다. 돈을 내고 다니는 학원 과정도 있었고 국비지원과정, 아니면 석사 과정을 밟을 수도 있었습니다. 하지만 직업을 잃은 상황에 돈 드는 걸 하는 건 리스크라고 생각했고, 그래서 결국 국비지원과정을 듣기로 결정했습니다.

IT 관련 국비지원과정은 웹개발과정머신러닝교육과정, IOT 교육과정 이렇게 3가지가 트렌드였습니다. 당시 뉴스에서도 이슈가 많이 되고 있었고 가장 멋있어 보였던 직업인 데이터사이언티스트가 되려면 머신러닝교육과정을 듣고 싶었는데 메이저 교육 기관들은 경쟁률이 거의 취업 경쟁률 같이 높아서 그 경쟁에서 면접에 가면 나이도 있고 이전 직장 일과 다른 분야를 도전하는 걸 그리 좋아하지 않았기 때문에 계속 지원은 했지만 떨어졌었습니다.

메이저 교육 기관에서 많이 떨어지고 나니 상반기, 하반기 마다 열리는 교육과정 지원 가능 시간이 얼마 남지 않았고, 그래서 어딜 가든 내가 열심히 하는 만큼만 얻는거니 아직 밑바닥 실력의 나로서는 어딜 가도 이득이다라는 생각으로 최대한 사람이 안 몰려 보이는 곳으로 지원 했습니다. 그렇게 지원한 과정은 머신러닝 기반의 웹 프로그래밍 개발자 양성과정이었습니다.

국비로 지원하기 위해 내일배움카드를 등록하고 취업준비에 대한 자문을 형식적으로 받았습니다. 그 후 교육 기관에 면접을 봤고 면접 후 교육생 결정이 확인되고 자문해주는 곳에 등록해 국비를 지원 받을 수 있었습니다. 6개월 간 교육 과정에 참여했기 때문에 취업 공부를 할 수 있는 공식적인 기간이 생겨 마음이 조금은 편해졌습니다.

학창 시절에는 공부하는 것이 그렇게 싫었는데 사회 나오니 공식적으로 공부를 하는 시기가 얼마나 반가웠는지 모릅니다.

OT

첫 날은 강사님의 이력에 대한 설명과 책 배분, 교육 과정에 대한 전반적인 설명으로 끝이 났습니다. 교육 기간 동안 웹 개발부터 머신러닝까지 모두 배울 수 있는 과정이었기 때문에 설레는 마음을 품고 있었습니다.

Java

본격적으로 수업이 시작됐습니다. 처음 섹션은 java 언어에 대한 이해 였습니다. java를 사용하기 위해 eclipse editor를 이용했고 본격적으로 프로그래밍 공부를 시작하는 느낌에 좋았습니다.

java를 이용해 여러가지 미션들이 주어졌고 해당 미션들을 하나씩 수행해 갔습니다. 공부를 하다 보니 이전에 python를 공부하던 때 했던 것들을 java로 바꿔서 하는 느낌이었는데 java가 python 보다 코딩 시 많이 불편하구나 생각했습니다.

언어 공부를 하며 미션들을 수행하다 보니 적응이 늦거나 이해가 되지 않아 뒤쳐지는 분들이 생기기 시작했습니다. 그러면서 교육 일정대로 수업이 나가지 않게 되고 점점 늘어지기 시작했습니다.

이전에 공부했던 내용이 있어 쉽게 따라갈 수 있었기 때문에 꽤 오랜 시간 동안 언어의 기본 기능들을 가르쳐주시면서 연기되는 일정 동안 취업에 도움이 될까 싶어 정보처리기사 필기를 준비해 취득할 수 있었습니다.

Html, Css, Javascript

언어의 기본 기능들을 공부하고 웹 개발을 위한 html, css에 대해 교육이 시작됐습니다. html 태그들의 종류와 css 사용 방법들에 대해 듣다 보니 암기과목처럼 알아야 할 게 너무 많았습니다.

언제 다 이해해서 언제 다 제대로 사용하나 걱정했지만 각각의 사용법과 내용은 생각하던 것보다 아주 간단했습니다. 단순히 외우는 것이 문제였는데 사실 외우면 좋지만 외우지 않아도 필요한 것을 검색해 사용하다 보면 사용할 수 있었고 이것이 코딩의 원리임을 나중에 알게 됐습니다. 검색하기도 매우 간단했고 설명도 자세히 찾을 수 있었습니다.

javascript는 언어에 대한 교육을 따로 하기 보다는 html, css 상에서 동적 구성이 필요한 부분을 어떻게 불러오고 어떻게 다루는지에 대한 내용만 간략히 배웠습니다. 그 당시에는 jQuery를 사용해 간단하게 컨트롤할 수 있었습니다.

1차 팀 프로젝트

java, html, css, javascript를 배우고 자유주제에 웹싸이트 개발 팀 프로젝트가 진행됐습니다. 팀 구성은 잘하는 사람을 한 명 씩 배정하고 못하는 사람을 팀에 한 명 씩 배정한 뒤 나머지는 랜덤으로 배정돼 정해졌습니다.

잘하는 사람들에게 배우고 싶었지만 생각과 달리 잘하는 사람들이 찢어져 같은 팀에서는 내가 교육해줘야 하는 상황에 처했습니다. 자연스럽게 팀장이 됐고 어떤 주제로 개발을 할지 같이 브레인스토밍을 거쳐 팀원들이 모두 관심이 많은 건강관리에 대한 웹을 개발하기로 했습니다. 이름도 느낌있게 퀄리티 있는 헬스케어라고 해서 퀄스케어라고 지었습니다.

우리팀에 나이가 있는 분들이 좀 있었기도 했고 당시 헬스케어 앱으로 많이 쓰던 나이키앱, 삼성헬스 등의 기능이 만족스럽지 못한 상황이었습니다. 그래서 우리 앱은 목표로 하는 근육량과, 체지방률, 목표체중 그리고 D-Day를 설정해 하루 먹어야 할 적정한 칼로리와 운동량을 계산해 식단, 운동을 직접 등록해 목표가 지켜질 수 있게 돕는 헬스케어 앱이었습니다.

우선 네이버에서 음식별 칼로리와 영양소 데이터를 가져왔고 운동별 시간에 따른 칼로리 소모 데이터를 가져왔습니다. 목표 체중과 디데이를 설정한 뒤 매일 매일 오늘 먹을 식단과 운동을 등록하면 목표로 해야 하는 칼로리와 운동량을 보여주고 목표에 맞게 각각을 체우거나 비워내서 목표를 이룰 수 있게 돕는 방식입니다. 그렇게 건강관리 웹(퀄스케어)가 완성됐습니다.

물론 본인의 신체나이, 체지방률, 키, 몸무게 등을 직접 입력해야 하고 근육량에 의해 체중이 늘어나는 것에 대한 고려를 하지 못하는 등 많은 한계가 있었습니다. 하지만 팀장으로서 팀 간의 의견 조율을 해내고 기획에 반영해 가며 개발 과정과 일정을 산출하며 업무를 조율하면서 웹앱을 완성할 수 있었고, 매우 보람찬 시간이었습니다.

데이터 시각화

팀 프로젝트가 마무리되고 되돌아 보니 팀 내에서 개발에 제대로 동참하지 못한 인원들이 많았습니다. 그 인원들은 그 동안 배운 내용을 복습하는 시간을 가졌고 선생님도 복습을 도왔습니다.

어수선한 분위기에서 머신러닝 교육이 시작됐습니다. 처음에는 R을 활용해 라이브러리를 블러와 학원에서 준비한 csv 데이터를 이용해 시각화하는 작업을 배웠습니다. 그리고 python으로 R로 진행했던 시각화 내용을 똑같이 다시 재현했습니다.

그렇게 시각화 수업이 끝난 뒤 선생님은 못 따라온 학생들이 너무 많고 어차피 제대로 가르치려면 과정 내 시간이 부족하다며 남은 과정들은 진행하지 않는다고 했고 그렇게 머신러닝 교육은 마무리 됐습니다.

하지만 수업을 따라가는 내내 수업이 지연될 때마다 독학해 오던 버릇이 있어서 남는 시간이 생길 때마다 웹 서비스에 머신러닝 서비스를 도입해 볼 수 있도록 틈틈히 독학해 나갔습니다.

Spring

간단하게 jsp를 활용해 웹 개발을 해왔는데 웹 프레임워크인 spring을 활용하는 마지막 과정이 남았습니다. spring을 활용해 게시판을 만들어 보는 수업이었고 선생님이 만들어 주신 스크립트를 복습해 가며 eclips부터 spring sts 를 적용하고 서블릿, XML에 등록해서 게시판을 겨우 만들었던 기억이 있습니다.

당시 python으로 독학을 따로 하던 중이었어서 java를 배우던 기억은 좋지 않았습니다. 같은 개발을 하더라도 코딩을 훨씬 많이 해줘야 했고 셋팅까지 참 불편한 언어였습니다.

2차 팀 프로젝트

2차로 시작된 팀 프로젝트는 교육 수강을 포기하고 나간 인원들이 많았기 때문에 인원이 얼마 남지 않아 2팀으로 나누어 개발을 했는데 갑자기 젋은 인원으로 팀이 구성됐습니다. 팀원들은 모두 동생이었는데 모두 롤이라는 게임에 빠져 있었고 결국 롤 관련 서비스로 가닥이 잡혔습니다.

당시 단순하게 전적을 조회할 수 있는 서비스는 많이 있었지만 롤을 매일 즐기고 있는 사람들에게는 부족했습니다. 그래서 추가 기능을 생각하게 됐습니다.

  • 전적 검색
  • 대회 기능
  • 승패 예측 기능(+ 통계 기능)
  • 커뮤니티 기능
  • 챗봇 기능

기본적으로 로그인과 회원가입을 구성했고 어느 싸이트에나 있는 전적 조회 기능을 구현해야 했습니다. riot game 에서 제공하는 검색해 보니 developer 싸이트의 데이터 api가 있었기에 전적 데이터, 챔피언, 아이템 등 많은 데이터들을 수집해 올 수 있었습니다. 수집된 데이터들을 특성에 따라 분류하여 저장했습니다. 그런 뒤 전적 조회 시마다 최신 업데이트를 위한 로직 등을 설계하고 프론트엔드를 개발해 구현했습니다.

대회 기능은 로그인된 사용자만 가능한 프로세스였는데 대회를 만들고 위치와 상금, 팀인원을 정했고 대회에 참가하기 위해서는 만들어진 상금에 따라 아임포트 모듈을 이용해 결제하는 방식이었습니다. 결제가 완료되면 약속된 시간과 위치에 모여 피씨방 대회등을 할 수 있게 구글맵의 길찾기가 지원됐습니다. 그렇게 대회 참가 팀인원이 다 모이면 대회의 경과를 볼 수 있는 페이지가 있어 참가자들이 경과를 알 수 있게 구현했습니다.

하지만 누가 이겼는지에 대해 알 수 있는 방법에 대해서 연구되지 않아 수동으로 설정해서 경과를 표시해야 했고 결제된 금액도 누구한테 어떻게 보내줘야 할지도 수동으로 보내야 하는 등 많은 한계가 존재하는 기능이었습니다. 아쉬운 기능이긴 했지만 그래도 있으면 좋겠다는 기능이 화면에 표현은 됐어서 다들 뿌듯했던 기억이 있습니다.

승패 예측 기능은 화면에서 챔피언과 사용 장비를 입력 받으면 그걸 이용해 최신 전적 데이터를 불러왔고 불러온 데이터를 전처리해 tensorflow 를 활용한 승패예측을 해주는 기능입니다. 더해서 승패 예측에서 사용된 모델의 정확도와 오차에 대해 트레이닝 당시의 데이터를 그래프로 보여주고 부가적으로 아이템과 챔피언, 능력치들 간의 상관관계에 대한 통계 데이터, 챔피언과 아이템 간의 관계, 챔피언과 데미지 입히는 것과의 관계 등 많은 부가 통계 데이터들을 제공했습니다.

다른 많은 작업들이 있어 급하게 만들었기 때문에 모델에 대해 심도있게 고민해서 만들지는 못했지만 그래도 머신러닝을 적용했다는 생각해 뿌듯했습니다. 나중에 선생님께서도 가르쳐주지 않은 flask, tensorflow, pandas 등 많은 라이브러리를 활용해 해당 부분이 적용된 것을 보고 팀 프로젝트에 대한 좋은 평가를 주셨습니다.

그리고 java spring 수업 시간에 배웠던 게시판, 댓글, 대댓글 기능을 구현해 단순한 커뮤니티 기능을 추가했습니다. 마지막 프로젝트였던 만큼 욕심이 생겼습니다. 그래서 당시 유행이던 챗봇을 구현해 보고 싶어 chatterbot 라이브러리를 활용해 영문 챗봇을 구현해 봤고 구글에서 제공하는 dialogflow를 활용해 시나리오 기반의 한글 챗봇도 구현해 봤습니다.

학원을 다니면서 팀 프로젝트 때 열심히 하는 사람과 안 하는 사람, 모르는 사람, 나갈 사람 등 많은 팀원들과 소통하며 그래도 끝내 잘 마무리 해가는 it 회사의 간접 경험을 해보는 것 같아 보람있는 시간들이었고 많은 경험들과 함께 무사히 League of legend 웹 을 잘 완성할 수 있었습니다.

마무리하며

학원을 다니며 기획하고 ui도 설계하고 erd툴을 활용해 데이터베이스도 설계해 보고 팀원들과 프로젝트도 진행해 보는 등 꽤 많은 경험들을 하다보니 순식간6개월이 지나갔습니다. 6개월 간 6시에 일어나 2시간을 대중교통을 갈아타며 저녁 6시까지 수업을 듣고 집에 2시간 걸려 돌아와 저녁 먹고 12시까지 공부하는 온 종일 개발만 하던 생활이었습니다. 여러 프로젝트를 진행하고 쉴 새 없이 개발에 몰두할 수 있어 좋았고 덕분에 취업에 대한 자신감이 생겼습니다.

지금은 폰에 번호가 다 날아가서 선생님, 학우들과 연락할 수 없지만 가끔씩 그 시절이 생각날 때가 있습니다. 이제 재밌는 시간은 지났고 다시 직장생활 생존기가 시작됩니다.