본문 바로가기
💬 Smalltalk

2022년 회고 (2) 풀스택 국비교육 수강기

by iirin 2023. 11. 18.
케케묵은 지난글 👇
2023.02.01 - [💬/회고] - 2022년 회고 (1) 커뮤니티 기획자가 개발자를 꿈꾸게된 이야기

매우 늦었고 내용이 별거 없어서... 조금 부끄럽지만... gitpage에 있던 글을 끌고 왔습니다.

 

국비 교육 과정을 듣기로 한다

2022년 6월~10월 : 국비교육 수강

사실 지금 생각해보면 조금 가벼운 선택이었다. 즉, 도망갈 곳을 만들어 놓은 선택이었다.

어차피 커리어에서  1년정도 쉬기로 한거, 돈도 더 들지 않겠다 주말에는 지인의 카페에서 계속 알바를 하고 평일에는 9시부터 6시까지 풀스택 국비교육과정을 듣기로 한 선택말이다.

선택의 기준은 아주 간단했다.

  1. 시작하기에 부담이 없을 것, 곧 언제든 다시 돌아갈 수 있을 것
  2. 교육과정은 취업을 하기 유리할 것 (범용적일 것)

여기다가 개발자인 친구가 “너는 프론트엔드, 백엔드 개념도 모르니까 일단 다 들어보고 나중에 심화해서 공부해봐” 라고 조언해준 것을 토대로 결정한 것이 멀티캠퍼스에서 진행하는 AI 플랫폼을 활용한 웹 서비스 개발 과정을 들었다. (지금 이 과정이 없어진 것 같다.)

실제로 배웠던 것은 다음과 같다. 스택들은 매우 기초적이고 핵심적인 스택들이고 이것들을 모두 훑었다는 것이 이 과정의 가장 큰 장점이었다.

 

커리큘럼

  • Java 3주
  • MySQL 기본 쿼리 문법과 Java와 연동(JDBC) 1주
  • HTML5, CSS, JavaScript, jQuery 2주
  • Sevlet & JSP, Spring, Sptring boot 와 MyBatis 3주
  • Jenkins, Naver Cloud Platform을 이용한 배포

 

프로젝트

  • 자율 기획 프로젝트 2주
    • 클라우드 배포하지 않음.
  • 자율 기획 프로젝트 및 배포 약 8주
    • 배포 플랫폼 : Naver cloud platform

 

기타 특강

  • Git, Github 사용 1회
  • Notion 사용 1회
  • React 체험 3회
  • Oracle DB 사용해보기 1회
  • 기타 취업 관련 특강….

 

AI 서비스이고 플랫폼이고 뭐고 사실 그때 제대로 알지 못했고, 나중에 생각해보니 Open API 중에서 AI 기술을 접목한 API를 사용해본다는 뜻이었다 👀 이때 API라는 개념이 없었는데..😣 지금 생각해보니 구현을 한 것 자체가 정말 대단했다. 같은 반에 거의 30명에 달하는 사람들 중에 개발 초심자가 아닌 사람이 고작 3명 정도였다. Java를 처음배우고 Github가 무엇인지도 모르는 사람들이 5명씩 모여서 팀프로젝트를 했었다니..!

 

배웠던 것들에 대해

수업은 한참 코로나가 진행중이던 때라 대부분 비대면으로 이루어졌다.

정규 수업시간은 8시간동안 계속 수업을 듣고 실습 코드 작성을 했고, 진도는 미친듯이 빨랐다. 몰입해서 이 시간을 보내고 나면 나머지 시간은 지쳐서 쓰러져 자기 일쑤였다.

이렇게 약 3개월동안 위의 기술을 모두 배우고 프로젝트를 2.5개월간 하려다보니 정말 필수적인 것만 속성으로 배울 수 있었다. 이때 당시의 기록들을 좀 들추어 각 기술에 대한 이해도를 살펴보니 꽤 재밌다.

 

  • 자바 교육과정 중, 변수나 연산자, 조건문과 반복문은 사실 수학 함수나 다름없어서 큰 놀라움은 없었다. 그저 콘솔에서 입력과 출력으로 어플리케이션이 돌아간다는 자체가 가장 신기했다. 자판기 콘솔 프로그램을 짜고 신기해했던 나...ㅋㅋ
  • 교육 내용은 확실히 자바 기초에 부합하는 정확한 내용들이었으나 학습하고 공부하는 입장에서 너무 빠른 input 으로 ‘그렇구나’ 하면서 넘어가는 지식이 굉장히 많았다. 언어  자체를 이해하기보다는 어떻게 사용하는 지에 집중하여서 학습하였던 것 같다.
  • 학습 내용 중 가장 충격적이고 바로 받아들이기 힘들었던 개념은 객체지향언어의 특성이었다. 패키지와 클래스를 분리하고 이를 import 하거나 인스턴스를 만들어서 사용할 수 있다는 것을 배웠을 때 한동안 멘붕을 느꼈었다. 왜 이것을 나누는지에 대한 이해가 부족했던 것 같다. 지금은 객체지향언어가 재밌다.
  • 그리고 바로 그 다음주 2주차에 연달아 Java 메모리 사용과 참조타입을 공부하며 두번째 충격을 받게된다 🫠 이게 무슨 세계지
  • DB에 대한 첫 인상이 최악이었나보다. 추후 JDBC 를 사용해보며 자바 교육기간동안 3차 멘붕을 맞게 된다.
  • HTML, CSS, JavaScript 를 좋아했다. 다만 코드가 늘어날 수록 코드를 주체하지 못해 고민했다. 정리하지 못한 코드가 통째로 한 파일에 얽혀있었다.
  • 자바스크립트는 jQuery보다는 바닐라로 사용하는 것을 훨씬 좋아했다. ajax로 비동기 요청을 하고 받는 것을 하면서도 비동기에 대한 이해가 부족했던 것 같다.
  • 배포에 대해서.. 당시 네트워크에 대한 지식이 전무하였지만, 수업자료가 꽤 잘되어있어서 할 수 있었다. 아마 이 짧은 시간 안에 수강생들을 이해시킬만한 네트워크 설명을 하기 힘들었을 것 같다.
  • controller -> service -> DAO 로 이어지는 3 layers 계층형 아키텍처를 이해하는 데 힘들었다. 이것은 함께한 수강생 중 대부분이 비슷했는데 그냥 구조에 '익숙해진다' 에 더 가까운 학습이었던 것 같다. 각 레이어의 역할을 크게 고민하지 않았었다. 이런 아키텍처에 대한 이해는 본격적으로 프로젝트를 시작하고 구현을 반복하면서 점점 더 익혀갔다.
  • 개발 공부를 시작한 것에 즐거워하고 만족했다.
  • 기본 CRUD 외에 로직을 효율적으로 처리하는 방법을 숙지하는 데에 험난함을 느끼고 더 학습하고 싶어져 백엔드로 진로를 결정하게 된다.

 

프로젝트에 대하여

 

  • 사용 기술 스택 : Java11, SpringBoot 2.7, MySQL, MyBatis, JavaScript (Vanila)

거의 2달정도를 잡고 있었던 이 프로젝트 Artchive. 참 무에서 유로 간다고 생각하고 비전공자 5명이서 한땀한땀 만들었다. HTML 태그부터 시작해서 처음부터 만드느라 구현자마다 미묘하게 페이지가 달라져서 나중에 통일시키느라 고생했던 기억이난다.

지금 보면 AWS에 배포하긴 했지만 인프라나 설계면에서 부족한점이 많다.

프로젝트 속 개인적인 역할로서 HTML, CSS 쪽이나 바닐라 JS를 이용하여 지도 API를 사용하고, 비동기 요청을 하는 등 프론트 역량을 더 많이 발휘했었다. 스크린샷 화면에 보이는 로직 중 여행 코스를 기획하고 저장하는 페이지 view부터 crud까지. 댓글, 좋아요와 리뷰로 연결될 수 있도록 구현했다. 아래 ERD 에서는 노란색으로 표시된 코스에 해당한다.

이때 구현하며 가장 큰 이슈는 두가지였다.

첫번째, "각 코스의 순서를 view에서 어떻게 수정할 것인가, 그리고 이것을 DB에 어떻게 저장해야 좋을까" 였다.

프론트에서 코스 순서와 내용을 변동하는 것은 JQuery의 라이브러리 도움을 받았다. 그리고 백엔드로 넘길 때는 순서-내용으로 key-value 형태의 JSON을 넘겨 DB에는 그대로 String 직렬화하여 스냅샷처럼 저장했다. 🥹 그니까 코스가 바뀔 때마다 한번의 Insert만 일어나지만 매번 내용을 새로 덮어쓰는 식이었다.

링크드 리스트나 우선순위를 주는 등의 다양한 방법이나 테이블을 어느정도 정규화+비정규화하고 인덱스를 생성하여 최적화할 수 있는 방법들이 있었는데.. 당시에는 알지 못했다. 생각해보면 게시판 페이지 로딩부터 느렸던 이유가 다 있었다.

 

두번째, AI학습을 위한 데이터 수집과 학습의 자동화였다. 사용자의 이용패턴을 DB에 저장하고 이를 데이터로 추천해주는 Aitems를 적용했었는데. (담당은 내가 아니었다.) 이부분은 스스로 이해도가 너무 낮았고, 더미 데이터를 대량으로 만들 수 있을만한 여유도 기술도 없었다. 이 Ai 학습 패턴 업데이트를 자동화하지 못했던 것도 아쉽다.

지금 보면 아이디어 자체는 여러가지 시도하기 좋았는데 아쉬움이 많이 남는 프로젝트이다.


교육과정의 좋았던 점

  • view부터 어플리케이션, DB, 인프라 배포까지 전체를 훑는 경험해 볼 수 있었다. 그래서 내가 어디에 더 흥미있는지 고민하기에 좋은 환경이었다.
  • 비슷한 환경에서 함께 공부할 수 있는 사람을 만날 수 있었다. 사실 수업시간보다 이 사람으로부터 배우는 것이 가장 컸다.
  • 일단 비용적으로 부담이 없었다. 시도해보자는 가벼운 마음으로 입문할 수 있었다.
  • 강사님이 수강생 한 사람 한 사람 버리지 않으려는 분이어서 모든 에러를 함께 해결해주었다. 이 때 에러 코드를 읽는 방법을 처음으로 익혔다.

 

교육과정의 아쉬웠던 점

  • 너무 급하게 배우려다보니 무엇하나 어떻게 학습해야하는지 알지 못한채로 5.5개월이 끝나버렸다. 특히 프로젝트 기간이 길어서 교육과정이 더 급격하게 짧게 느껴졌다.
  • 이건 우리반의 특성인 것 같은데 먼저 공부해봤거나 전공을 했거나 프로젝트 방법을 아는 사람이 극 소수인데다 초반에 자율 조구성을 할 때 일부 그룹에만 편성되어서 어떻게 프로젝트를 해야하는지 모르는채로 시작해야 했다.
  • 프로젝트에 대한 평가가 기획과 발표 스킬에 집중되어 있었다. 코드는 구현하는 것이 목적이었고, 어떻게 해야 좋은 코드인지 학습하기는 힘들었다.