이 글은 박은종 멘토님의 2022년 상반기 자바 스터디 회고록입니다. 
스터디는 4/28부터 6/9 까지 총 6주간 진행되었습니다.

01. 스터디에 참여한 이유

01.1. 멘토님과 함께하는 스터디

교재,강의,교수가 없는 환경에서 멘토님이 모집하시는 스터디입니다.
스터디의 주제, 과제, 커리큘럼 모두 멘토님이 정해주십니다.
저희는 매주 주어진 과제를 따라 짝과 공부를 하면 됩니다.

​01.2. java 공부

자바를 사용해본 적은 있지만, 제대로 공부해본 적은 없었습니다.

학교를 다니며 전공과목으로 배웠고, Spring 기반의 프로젝트를 해본적도 있지만 자바를 ‘잘’ 안다고 느꼈던 적은 없었습니다. 백엔드를 공부하고 있는 입장에서 자바를 제대로 공부해야겠다고 생각했고, 박은종 멘토님의 자바 스터디 글을 보고 참여하게 되었습니다.

02. 스터디 진행 방식

자바 스터디는 주 1회 진행되었습니다.

02.1. 짝과 페어프로그래밍

분반별 스터디를 하기 전 짝과 함께 이번주 과제를 진행합니다. (짝은 매주 바뀝니다)
이 때는 페어프로그래밍으로 과제를 수행해야 합니다.

페어프로그래밍의 방법은 여러가지가 있는데, 저는 클래스마다 번갈아가며 작성하거나 혹은 한명이 코드를 작성하고 한명이 옆에서 로직을 구성하는 방식으로 하였습니다.

페어프로그래밍을 처음 해본 입장에서 느낀 가장 큰 장점은 혼자서 할 때보다 훨씬 빠른 진행이 가능하다는 것입니다.

둘이서 하나의 코드를 짜는 것이 더 번거롭고 오래걸리는 과정이 아닐까 생각했는데, 실제로 해보니 로직을 같이 생각하고 피드백도 짝에게 즉각적으로 받을 수 있는 점에서 결과적으로 훨씬 빠르게 과제를 완성할 수 있었습니다.

이 과정은 평균적으로 2~4시간정도 소요되었으며, 마지막 과제의 경우 1회의 만남으로 과제를 끝내지 못해 2회의 만남을 가졌습니다. 또한 짝과의 원활한 공부를 위해 개념 키워드, 과제 이해 등 사전에 개인 공부의 시간을 가진 후, 짝과의 모임을 진행했습니다. 이 단계가 스터디 전 과정 중 가장 오랜 시간이 소요되는 단계였습니다.

02.2. 분반별 스터디

자바 스터디 인원은 20명으로, 10명씩 한반, 총 2반으로 나누어 진행되었습니다.

반별 모임은 온/오프라인 자유롭게 진행가능하였는데, 저희반은 투표를 통해 오프라인 모임으로 결정하였습니다. 모임은 멘토님과의 스터디 한시간 전, 3층 멘토룸 앞에서 하였으며, 매주 1팀을 정하여 발표하는 방식으로 진행되었습니다.

이 시간에는 공부한 내용 이외에도 짝과의 공부시간에서 해결하지 못한 질문들, 과제를 하며 겪은 시행착오 등 공부를 하며 생긴 여러 이슈들에 대해 공유하고 논의하였습니다.

첫 주에는 전체인원 스터디 후에 반별 스터디를 진행하였는데, 이 과정에서 반별 스터디 시간에 나눌 논의거리가 모두 해결이 되었습니다. 때문에 이주차부터는 사전에 더 다양한 논의를 나누어볼 수 있도록 전체인원 스터디 전에 모임을 가졌습니다.

02.3. 전체인원 스터디

20명의 인원이기 때문에 멘토님과의 스터디는 온라인 클러스터에서 진행되었습니다.

지난 과제에 대한 리뷰 후, 새로운 과제에 대해 간략한 설명을 해주시는 시간입니다.
멘토님이 자바에 대한 강의를 해주시는 것이 아닌, 어떻게 공부를 해야하는지에 대한 방향성을 잡아주십니다.

(예를 들어 ‘용도’가 아니라 ‘실제로 언제,어디서,왜 사용하는지‘와 같은 접근으로 공부를 진행하라는 조언을 주셨습니다.)

결과적으로 이 시간은 ‘다음 과제에 대한 소개’가 이루어지는 시간이며, 스터디의 내용은 저희가 모두 채워나가야 합니다.

자바 스터디는 주 1회이지만, 짝->반->전체인원 총 3차로 이루어지고 또한 짝과의 공부를 위해 사전 준비를 하는 과정을 포함하면 총 4차의 과정으로 진행되었습니다. 때문에 생각보다 많은 시간을 소요해야했습니다. 또한 위에서 언급했다시피 멘토님이 강의를 해주시는 것이 아닌, 카뎃들끼리 스스로 공부하고 발표하고 논의하는 방식입니다. 들이는 노력만큼 얻어갈 수 있는 방식입니다.

03. 스터디를 통해 달라진 것

03.1. OOP

객체지향‘을 이해하였습니다. 드디어 ‘절차지향’과 ‘객체지향’을 구별할 수 있게 되었습니다.

이번 6주간의 스터디에서는 클래스와 인터페이스를 중심으로 공부를 하였고, 예제문제를 풀면서 각각의 요소들을 직접 사용해보았습니다. 학교에서 C++과 자바를 배우면서 ‘객체’라는 추상적인 개념이 와닿지 않았었는데, 이번 스터디에서 클래스와 인터페이스를 설계하고 구현해보면서 ‘객체’를 이해할 수 있었습니다.

어디까지 별도의 객체로 분리해야 이상적인 객체지향 프로그래밍인지는 아직 어렵지만, 자바를 그저 언어로만 인지했던 이전과 달리 객체 기반의 언어라고 인지하고 나니, 자바를 조금 더 ‘잘’ 사용하게 된 것 같습니다.

03.2. 동료학습

짝꿍, 반 모두 기수와 상관없이 랜덤으로 배정됩니다.

10명의 사람들 중에는 동료학습을 잘하는 사람, 자바를 잘 아는 사람, 질문이 많은 사람 등 다양한 사람들이 있습니다. 덕분에 반 전체가 더 적극적인 참여와 자연스럽게 의견을 나눌 수 있는 분위기가 되었습니다.

멘토님이 개념 공부에 대한 가이드라인은 제시해주시지만, 코드에 대한 해설이나 강의는 해주시지 않습니다. 덕분에 짝 그리고 같은반 분들이랑 이것저것 여러 방향으로 시도해보고 더 나은것이 무엇인지 의견을 나눌 수 있었습니다.

짝과 과제를 하면서는 디버깅으로 삽질도 해보고, 예상치 못한 에러도 많이 만났지만 페어프로그래밍을 통해 에러의 원인, 해결 방식, 올바른 사용방법 등 다양한 의견을 공유하며 같이 해결할 수 있었습니다.

(삽질과 피드백의 흔적)

가이드라인을 따라 효율적인 공부를 하는 것이 아닌, 테스트 코드 하나를 두고 여러가지 방향으로 고민하고, 논의하는 과정이 이번 스터디의 재미요소였다고 생각합니다.

6주간의 자바 스터디는 시간을 투자하는 만큼 더 많이 얻어갈 수 있는 스터디였습니다. '입문' 스터디인 만큼 앞으로 공부할 것이 더 많이 남아있지만, 좋은 동료들을 만나서 앞으로 계속 자바 공부를 할 원동력을 얻은 것 같습니다. 스터디의 내용과 일정이 42과정과 병행하기에 무리는 아니니 고민된다면 일단 시작해보라고 말하고 싶습니다. 좋은 기회를 제공헤주신 박은종 멘토님께 감사드립니다.

끝.