이번 주차 회고엔 9.22 (월) ~ 9.30 (화) 7일간 학습했던 내용을 담았습니다.
크게 배운 내용을 정리했을 때 Git 협업(1일), MySQL DB(5일), JDBC 연동(1일) 이렇게 내용을 배웠습니다.
터미널 환경에서 git 명령어 쓰는 걸 학습하며 Git의 전반적인 구조에 대해서 배웠고, 팀 협업을 할 때엔
git flow 방식을 사용해 Remote 저장소 하나에 여러 사람이 코드를 올리는 방식을 집중적으로 배웠습니다.
GIT 협업을 실습해본 GitHUB 저장소 링크
https://github.com/wnsrlf0721/gitTeam
실제로 실습했던 제 GitHub 저장소입니다. 간단하게 팀 협업을 GitHub로 어떻게 진행되는지 흐름을 파악할 수 있었던 실습과정입니다.
이런식으로 PR이 오면 클릭해 요청된 코드를 확인하고, 이상없으면 반영하는 그런 방식으로 진행됩니다.
git branch 전략으로 많이 사용하는 git flow, github flow를 학습했고, 실제 실습해본건 위에 설명했던대로 git flow 방식으로 버전관리를 신경쓰며 개발했습니다.
데이터베이스 수업은 RDBMS 중 하나인 MySQL을 선택해서 DB의 전반적인 이론 설명,
DML, DDL, Query 등 MySQL 기반 SQL문을 배웠고, 최대한 표준 SQL문으로 사용하는 방법을 배웠습니다.
병행 학습했던 책은 혼자 공부하는 SQL 책으로 같이 공부했고, SQL문 이론 학습 → 실습 적용 하는 방식으로 수업을 진행했습니다. 개인적으로 SQL을 공부할 때 데이터베이스 관련한 모든 SQL문을 이번 기회에 다 사용하면서 익숙하게 만들자는 각오로 배웠고, 실습 + 프로그래머스 SQL 문제풀이까지 병행하며 풀었습니다.

특히 도움이 많이 됐던건 프로그래머스 SQL 문제를 많이 풀어본 게 도움이 됐습니다.
이전에 혼자 공부했을 때 풀어본 것들이 조금 있었는데, 그런 문제들은 Oracle 데이터베이스 방식으로 다시 풀어보고, 풀지 못한 문제들은 MySQL로 풀어봤습니다. 이렇게 주말동안도 문제를 풀어보니 전체 카테고리에서 레벨 3단계까지는 수월하게 풀었고, 레벨 4나 5는 아직 조금 고민을 많이 해야 풀 수 있는 정도까지 올라왔다 느낍니다. 이것도 꾸준히 계속 하는게 좋을 것 같습니다.
수업 5일간에 걸쳐 전체적으로 배운 내용은 혼공SQL 책으로 따졌을 때 1-5장 까지 이론+실습으로 배웠고, 그 이후 단원은 아직 배우지 않고 추후 프로젝트나 백엔드 연동간에 학습한다고 했습니다. 개인적으로 6장에 있는 인덱스에 대해 개념을 정리해두고 싶어서 수업 이후 여러 매체를 찾아보며 공부했고, 잘 정리된 블로그나 유튜브가 많아 배우기엔 수월했습니다.
이전 주차때 배웠던 자바 코드에 JDBC를 연동하는 방법, 자바 환경에서 DB 테이블에 CRUD SQL을 적용하는 방식에 대해 배웠습니다. 자바 API에는 데이터베이스를 연동할 수 있는 여러 클래스, 인터페이스에 대해 잘 설명이 되어있습니다. 추후 JDBC를 연동하고, CRUD하는 코드에 대해 따로 정리해서 올려보도록 하겠습니다.
5주차까지 학습해보니 이제 슬슬 1차 프로젝트 기간까지 얼마 안남았다고 느꼈던 한주였습니다.
10월 20일부터 1차 프로젝트를 시작하는데, 팀 프로젝트를 잘 수행하기 위해선 프로그램에 대한 기획설계를 잘 해둬야하고, 기획 설계간 DB 테이블 설계나 정규화를 잘 해두고, ERD를 만들어야 나중에 개발 단계에서 테이블 컬럼 변경을 줄일 수 있을거라 생각합니다. 또 Git에 대해 공부해보니 그동안 내가 썼던 Git 명령어는 단순히 개인 프로젝트 때 사용하는 명령어만 알고있었구나 생각이 들었습니다. 팀 단위로 저장소를 만들고, Fork를 왜 하는지, PR을 어떻게 push하고 팀장이 어떻게 merge하는지, 팀 단위로 git 브랜치, 버전관리를 어떻게 해야할지 지식이 부족했다 느꼈습니다.
혼자서 공부했을 땐 이런 내용을 놓치고 있었고, 아마 계속 혼자 공부했어도 스스로 발견하기 어려웠을거라 생각합니다. 이런 부족한 부분을 배워가면서 개념을 보충하고, 실습하면서 배운 내용을 다시 정리하고, 블로그나 Notion으로 다시한번 개념을 정리하니 배웠던 내용들의 흐름이 그려지는 것 같습니다.
특히 수업 일정이 타이트하다보니 배우지 못하고 넘어갔던 개념들도 몇몇 있는데, 그러한 부분들은 내가 한번 찾아보고, 전반적인 흐름을 이해해보려 하니 CS 지식의 전반적인 부분들이 보이는 것 같습니다.
라즈베리파이, 임베디드 관련 부분은 학교에서도 배우지 않았던 부분이라 조금 기대가 됩니다.
어찌보면 지금까지 배웠던 프로그래밍, SQL 이 활용되는 분야와는 조금 동떨어진 분야라고 느껴지는데, 다음주차때 관련 개념들을 배우고, 실습을 많이 해보면서 관련 개념들도 지금처럼 공부해보려고 합니다.
아직 지금까지 배웠던 개념들 중에서 정리되지 않은 개념들이 많이 있는데(스레드, 프로세스, 인덱스 등), 그런 개념적인 부분들을 스스로 학습해서 정리하고, 자주나오는 면접 질문과 연결해서 해당 개념을 간단하게 말할 수 있을정도로 학습하고 싶습니다. 일주일 뒤면 추석 연휴인데, 너무 놀지 않고 이런 공부를 많이 하면서 감을 찾아둬야 첫번째 프로젝트를 수월하게 해낼 것 같습니다.