초록 스터디 1주차

주노·2023년 11월 23일
3

초록 스터디

목록 보기
1/7
post-thumbnail

서론

현재 BCSDLab의 Koin 프로젝트를 Spring -> SpringBoot로 마이그레이션 하기 위한 작업을 진행중이다.

이에 Regular로 전환된 인원들에게 협업과정 및 SpringBoot에 대한 이해를 돕기 위해 온보딩 자료를 제공하려고한다.

우연하게도 우아한테크코스에서 브라운, 브리가 이러한 모임을 지원해주기 위한 모임 초록 스터디를 구성한 것을 알게 되었고 동아리 구성원들과 해당 스터디에 참여했다.

초록 스터디는 그룹별(학교, 소모임, 동아리, 스터디 등)로 자유롭게 진행하는 모임이다.
현재는 우아한테크코스 5기 수료생들 중 스터디 혹은 모임을 만들어 운영하는 인원들이 1차적으로 운영중이다.

목적

스터디의 목적은 다음과 같다.

  • BCSDLab 동아리의 Regular 전환 인원의 SpringBoot, 협업 방식 등에 대한 온보딩 자료로서 활용하기 위한 방향성을 모색한다.
    • 교육자들이 해당 커리큘럼을 진행하며 겪은 어려운 점, 좋은 점 등을 사전에 파악한다.
    • 온보딩 과정에 필요한 적절한 기간을 정한다.
  • 주어진 자료를 이용해 실습을 무리없이 진행할 수 있을정도로 학습한다.
  • 교육자의 시선으로 주어진 자료를 어떻게 교육에 활용할 지 자료를 온보딩한다.

커리큘럼 (초안)

자료를 훑어보고 대략적인 초안은 다음과 같이 구성되었다.

[ 초록 스터디 by. BCSDLab ]

1. 스터디 온보딩 - 진행방식 소개
2. MVC 1주차 - MVC Response, CRUD API [미션 1, 2단계]
3. MVC 2주차 - ArgumentResolver, 예외처리 [미션 3, 4단계]
4. JDBC 1주차 - Inmemory DB, JDBCTemplate [미션 5, 6단계]
5. JDBC 2주차 - JDBCTemplate, SimpleJdbcInsert [미션 7단계]
6. Spring Core 1주차 - API~DB 복습, 리팩터링 [미션 8단계]
7. Spring Core 2주차 - InnerJoin, 객체 의존, 외래키 [미션 9단계]
8. Spring Core 3주차 - Bean Container, Spring Bean, Layered Architecture [미션 10단계]
9. 스터디 회고

처음 진행하는 커리큘럼이다보니 다소 널널하게 구성했다.
스터디를 진행하면서 커리큘럼을 지속적으로 개선해나갈 계획이다.

참여 인원

참여 인원은 현재 교육을 담당하고있는 Regular 인원들을 대상으로 모집하고 진행했다.

이번 과정은 총 6명이서 해당 과정을 진행한다.

0~1주차

온보딩 및 MVC 1주차 미션을 진행했다.

진행 과정에서 1주일의 기간을 둘 정도의 범위는 아니라고 판단되어 큰 주제별로 1주씩 묶어서 진행하자는 의견을 제시하고 회의를 통해 이를 반영해봤다.

이에 1주차에는 MVC 내용을 학습하는 것을 목표로 했다.

학습 내용

1주차 학습 후 회고하는 시간을 가졌다.
각자가 학습한 내용을 공유하고, 어려웠던 부분, 커리큘럼의 개선사항 등에 대한 이야기를 나눴다.

학습 키워드

학습을 진행하면서 자료 혹은 개인적으로 추가 학습한 내용들을 공유했다.
아래는 6명의 학습 내용을 키워드 위주로 정리해본 내용이다.

HTTP

  • User-Agent
    • User Agent가 Mozila로 시작하는 이유
  • Http Status Code의 의미
    • 201 응답의 Location 헤더
    • 204 code의 의미

Java, Spring, SpringBoot

  • AtomicLong이란?
  • RestController와 Controller의 차이?
  • json 직렬화/역직렬화
    • jackson, ObjectMapper
  • 그 많은 환경 설정은 누가 해주는가?
    • Spring AutoConfiguration
    • 어디까지 해주는건가?
  • 정적 파일 반환
    • View Resolver
    • Spring MVC Request Life Cycle
  • 의존성
    • thymeleaf 의존성을 설정했을 때 어떤 것들이 추가되는 것인가

Test

  • RestAssured란?
  • SpringBootTest란?
  • DirtiesContext란?

교육생(추후 Regular 전환 인원)들에게 모든 내용을 설명해줘야할지는 조금 고민해봐야할 부분이라고 생각한다. 해당 키워드를 기반으로 자기주도적 학습을 유도하는 방향성이 좋아보인다는 입장이다.

일단 현재로서는 질문이 들어오면 그때 학습 방향성을 제공해주는것이 방향을 고려중이다.

피드백

1주차를 진행하면서 어려움을 느낀 부분 및 생긴 의문점에 대한 피드백을 받았다.
해당 피드백은 구체적으로 작성해두고 FAQ를 쌓아둬도 좋겠다는 생각을 했다.

학습 테스트를 생략하는 경우

SpringBoot에 대한 이해는 어느정도 하고있다고 생각하여 학습 테스트를 생략하는 경우가 있었다.

이 경우 큰 문제를 겪지 않고 미션을 진행할 수 있는 인원이 있던 반면에 그렇지 못한 인원도 있었다.

실제로 6개월간 비기너 과정을 거치거나 혹은 개인적으로 SpringBoot를 학습해본 경험이 있는 인원이라면 학습 테스트를 수행하는 것이 시간 낭비라고 여겨질 수도 있겠다는 생각이다.

개선안

이 상황은 메타인지가 명확하게 이뤄져있는지 가이드라인을 제공해주는건 어떨까? 라는 생각이 든다.

학습 테스트를 생략하기 전 다음 키워드를 이해하고있는지 체크리스트를 제공해주는 방향성이 생각난다.

ex)

잠깐! 미션을 수행하기 전 다음 질문에 대답할 수 있는지 확인해주세요!
만약 대답하기 어렵거나 생소한 키워드가 있다면 학습테스트를 진행해보는 것을 추천드려요 🥹

- gradle에 의존성을 추가하는 방법을 알고있나요?
- SpringBoot는 정적 파일을 읽기 위해 어떤 경로를 참고하나요?
  - 이를 위해 어떤 의존성이 필요하나요?
- Spring에서 json 형태의 요청을 어떻게 받을 수 있을까요?
- Http Method란 무엇인가요?
  - GET, POST, PUT, PATCH, DELETE 각각의 메소드는 무엇을 의미하나요?
- Http Status Code는 무엇인가요?
  - 2xx, 3xx, 4xx, 5xx 각각의 상태코드가 무엇을 의미하나요?

등등...

환경설정

SpringBoot 프로젝트 시작과정에서 환경 설정에 어려움을 겪었다는 내용이 있었다.

대표적인 예로 1단계 미션 수행과정에서 gradle 의존성 추가에 대한 부분이 있다.

필요한 의존성(thymeleaf)을 추가하지 않고 프로젝트를 구동하다보니 컨텍스트가 로드되지 않고 자꾸 죽어버리는 상황을 맞이했다고 한다.

이 또한 학습테스트를 꼼꼼하게 읽어보지 않아 발생한 문제라고 생각되긴한다.

개선안

아무래도 나 또한 초기에 개발을 하면서 가장 어렵다고 느꼈던 부분이라 공감가는 내용이였다. 프로젝트 경험이 없는 인원들에게 어떤 방향성으로 온보딩을 진행해줘야할지 인사이트를 얻을 수 있는 내용이였다.

주어진 LMS를 모든 인원이 성실하게 수행하는것을 기대하지만 최소한의 가이드를 제공해주는 것도 좋겠다는 공감대를 얻었다.

자료만 보는것과 같이 환경을 구성하고 코드를 쳐보는 것은 체감상 많은 차이가 있기 때문에 온보딩과제 안내 전에 함께 환경설정을 구성해보는 시간을 가져보면 좋을 것 같다.

온보딩 OT 과정에서 학습테스트 1개, MVC 1단계 미션을 같이 진행해보는 방식을 적용해보면 좋을 것 같다.

낯선 방식

미션 진행 방식이 잘 와닿지 않았다는 피드백이 있었다.
본래 레포를 fork 하고 미션을 수행하지 않고 개인 레포를 파서 MyBatis도 붙이고~ 오버 엔지니어링을 하는 인원도 있었다.

물론 나쁜 방향성은 아니지만 어떻게 하면 제공하는 온보딩의 방향성을 잘 따라오게 할 수 있을까 라는 고민을 안겨준 부분이다.

개선안

나는 우아한테크코스에서 계속해서 미션을 수행하면서 익숙해져있는 방식이라 LMS 사용 과정에서 크게 불편함을 느끼지 못했지만 다른 동아리 인원들은 git clone, 미션시작, PR 제출 등 전체적인 과정이 어색하다는 의견이 있었다.

이 부분 또한 위에서 이야기한 환경설정에 대한 피드백 개선안과 동일하게 OT 과정에서 함께 진행해보는 과정이 있으면 좋을 것 같다.

커리큘럼 개편

브라운과 커피챗을 하면서 나눈 이야기 중 제공되는 자료가 약 3~4주 가량의 기간을 염두에 두고 구상된 자료라는 이야기를 들었다.

실제로 미션을 진행했을 때도 그렇게 느꼈을 정도로 짧은 템포로 가져가면 좋을 것 같다는 생각이 들었다.

이에 현재 구상한 커리큘럼을 개편할 필요성을 느꼈다.

개선안

커리큘럼을 압축하면서 다음과 같이 커리큘럼을 개편했다.

[ 초록 스터디 by. BCSDLab ]

1. 스터디 온보딩 - 진행방식 소개
2. MVC - MVC Response, CRUD API, ArgumentResolver, 예외처리 [미션 1,2,3,4단계]
3. JDBC - Inmemory DB, JDBCTemplate, JDBCTemplate, SimpleJdbcInsert [미션 5,6,7단계]
4. Spring Core - API~DB 복습, 리팩터링, InnerJoin, 객체 의존, 외래키 [미션 8,9,10단계]
5. 버퍼 기간 (부족했다고 느낀 부분을 추가로 학습하는 시간)
6. 스터디 회고

해당 커리큘럼은 확정은 스터디가 끝날 때 까지 확정이 아니다.
과정을 지속적으로 진행하면서 꾸준히 개편해나갈 예정이다.

기간내로 완료하지 못함

체감 상으로는 미션이 그렇게 많은 기간을 투자해야할 만큼은 아니라고 생각했지만 실제로는 이를 완료하지 못하는 인원도 있었다.

대부분의 사유는 학사 일정, 학교 과제, 낯선 방식으로 인한 트러블 슈팅 등의 이유가 있었다.

추가로 조금 있으면 기말고사 기간이 다가오기 때문에 해당 기간 또한 스터디 일정에 영향을 미칠 수 있을 것이라고 생각했다.

이에 학사 일정 또한 교육과정에서 고려해야할 만한 부분이라고 생각되어 일정 관리 측면에서 어떤 개선을 이룰 수 있을지 고민했다.

개선안

학사 일정을 확인하고 온보딩 기간을 잘 산정해야할 필요성을 느꼈다.
학업과 병행하는 인원들인 만큼 일정 관리 측면에서 해줄 수 있는 최대한의 배려라고 생각된다.

이 이상으로 일정을 봐주기에는 운영하는 측면에서도 일정을 관리하기가 곤란하다는 생각이다.

리뷰어 매칭

온보딩을 진행하면서 리뷰어를 어떻게 매칭해야할지에 대한 질문이 나왔다.

학교에서 본 스터디를 진행하고있는 인원들은 교육장, 회장, 부회장, 트랙장, 학사일정(대학원) 등 스터디 외적으로 다양한 업무를 담당하고 있기도 하고 미션 과정에 대한 이해도가 부족하기 때문에 상호 리뷰가 어려울 것 같다는 의견이 있었다.

개선안

우선 본 과정에서는 우아한테크코스 과정 수료를 앞두고 복학 전까지 일정이 없는 내가 리뷰어를 담당하기로 했다.

추후 온보딩 교육 과정에서는 리뷰어를 온보딩 진행자 + 온보딩 담당자(교육자) 를 리뷰어로 정하는 방향으로 사전에 안내하고 진행하면 좋을 것 같다.

후기

첫 주차라서 헤메는 인원이 많았지만 그렇기 때문에 교육자로서 얻을 수 있는 인사이트가 명확해져서 오히려 좋은 시간이였다고 생각한다.

학습을 위한 온보딩이라기보다는 어떻게 잘 알려줄 수 있을까? 를 초점에 두고 있는 입장에서 스터디를 진행하니 신선한 느낌이기도 하다.

2주차도 화이팅이다 👍

profile
안녕하세요 😆

2개의 댓글

comment-user-thumbnail
2023년 11월 26일

파이팅!

1개의 답글