이후 3월 초부터 1차 팀프로젝트가 시작될 때까지, 핵심적인 강의가 모두 마무리되어야 하는 일정이었다. 대락적으로 3-4개월의 기간인 것인데 그동안 대략 다음과 같은 것들을 했다.
이후에는 두 차례의 팀 프로젝트가 시작됐다. 1차 세미 프로젝트에 대한 내용은 이전 글에서 다루었다.
1차 프로젝트 종료 후 2차 최종 프로젝트 시작 전까지 2주 정도 기초 머신러닝/딥러닝을 다루었다. 갑자기 채용 연계된 기업에서 기업 교육을 진행하겠다고 일정을 변경했고, 여기에 AI가 포함되어 있기 때문이었다.
최종 프로젝트는 5주 정도 진행했고, 소셜 미디어 기능을 가미한 일기 플랫폼을 만들었다. (사실 5주 진행 예정이었지만, 너무 기간이 짧다는 원성이 많아서 이후 예정된 기업 교육 시기까지 프로젝트를 진행하도록 했다. 기업 교육을 8시간, 프로젝트를 1시간 진행하는 식이었다.)
기술 스택은 세미 프로젝트와 유사하게 Spring 5, Vue 3, MySQL 8을 사용했고, Spring Batch가 들어갔다는 정도의 자잘한 변화가 있었다. 스택으로는 변화가 거의 없더라도, 프론트단에 PWA를 적용하고, 웹 환경에서 카메라/마이크 장치를 사용해 미디어를 캡쳐하는 등 웹 스펙을 적극적으로 쓰려고 노력했다.
최종 프로젝트 작업 기간 종료 후, 발표까지 한 달이 남았다. 이 시기에는 기업 교육과 기업 채용 절차가 같이 진행되었다. 그때도 그랬고 지금 생각해도 그렇지만, 상당히 기형적인 일정이다. 심지어 기업에서 두 차례의 코딩테스트를 요구했는데, 1차 테스트는 최종 프로젝트 기간 내에 진행되었다.
기업 교육은 AI교육과 솔루션 교육으로 나뉘어 진행되었다. AI교육은 AI 연구 부서에서 영상, 음성, 자연어 파트의 연구자가 강사로 참여하여 각 파트에 대한 이론적 배경과 간단한 실습을 진행했다. 각 강사들 입장에서는 기초적인 부분이라고 생각하고 강의했을텐데, 생각보다 어려운 내용들이어서 당황했다.
솔루션 교육은 SI 부서와 솔루션 개발 부서에서 실무자가 강사로 참여하여 기업의 검색 엔진 솔루션과 챗봇 빌더 솔루션의 실제 사용법을 다루었다. 실제로 기업의 주요 솔루션을 이용하여 실습을 해볼 수 있는 기회여서 꽤 의미있었다고 생각한다. 특히 검색엔진 솔루션을 가지고 검색 RestAPI를 구축하는 실습이 기억에 남는다. 테스트 데이터를 가지고 색인을 생성하고, 색인을 바탕으로 검색 서버를 세팅한 뒤, 스프링에서 뒷단에 검색 서버를 놓고 통신하는 방식으로 구현하였다.
검색 솔루션은 아파치 루씬 기반이었기 때문에, 실제 현장에서 오픈소스를 어떤식으로 수정하여 고객사에 공급할 수 있도록 패키징해두는지를 구경이나마 해볼 수 있었다.
다만 이 시기 2차 코딩테스트, 면접 등의 채용 절차가 동시에 진행되었고, 최종 프로젝트도 정말로 마무리해야했던 시점이었기 때문에 교육에 잘 집중할 수 있는 상황이 아니었다는 점이 아쉽다. 일정이 변동되지 않고 순차적으로 진행되었다면 각 프로그램에 보다 더 몰입하기 쉬웠을 것 같다는 생각이 든다.
그리고 6월 8일 최종 프로젝트를 끝으로 교육 과정이 마무리되었다. 본래 그 다음 주인 15일 최종 채용 여부가 발표되기로 했는데, 회사 측의 사정으로 1-2주일 연기될 것 같다는 공지가 15일 당일 협회를 통해 나온 후 아직까지 추가 공지가 없는 상황이다. 덕분에 싱숭생숭한 마음으로 방황기인지 휴식기인지 여유 시간을 갖고 있다. 밀린 드라마를 보기도 하고, JPA나 Redis를 공부하기도 한다.
마지막까지 기업 중심적으로 돌아가는 프로세스가 답답하면서도, 최종 채용 여부가 공지되기 전까지는 불이익이 있을까 티도 낼 수 없는 상황이다. 그저 불안한 마음으로 공부도, 휴식도 아닌 무언가를 하고 있다.