TDD, 클린 코드 with Java 교육 과정 후기
NextStep의 Next Step - 온라인 글을 통해 NextStep의 새로운 도전을 알리고 2달 반이 지났다. 새로운 교육 과정을 시작하면 "이 과정이 끝날 때 어떤 결과가 나올까?"라는 기대감과 "이 과정 언제 끝날까?, 잘 끝낼 수 있을까?"라는 약간의 불안감과 두려움이 공존한다.
온라인으로 처음 진행하는 이번 과정은 새로운 시도 때문에 기대감도 컸지만 불안감과 두려움이 더 컸다. "기간도 5주에서 8주로 늘어났는데 8주 동안 미션 진행에 대한 동기부여를 지속할 수 있을까?", "중도 포기하는 수강생이 많아지면서 과정에 대한 불만의 목소리가 크지 않을까?"라는 두려움...
나는 교육 과정의 중요한 목표 중 하나는 교육을 통해 실질적인 변화를 만들 수 있어야 진정 의미 있는 교육이라 생각한다. 2020년 현재 클린코드를 위한 TDD, 리팩토링 with Java 교육을 통해 실질적인 변화가 만들어졌는지 측정할 수 있는 가장 좋은 방법은 교육 기간 동안 미션을 얼마나 성실히 완료했는지를 통해 판단할 수 있다고 생각한다. 교육이 끝난 후 6개월, 1년이 지난 시점에 이 교육을 통해 학습한 내용을 현장에 얼마나 적용하고 있는지를 측정하는 것이 좋은 방법 중 하나라 생각하지만 아직 그 단계까지 측정하고 관리할 여력이 되지 않는다. 어쩌면 핑계이고 합리화인가? 장기적으로 측정해 보고 싶은 미션 중의 하나이다.
현재 상태에서 교육 목표를 달성했는지 여부를 측정할 수 있는 방법이 미션 완료율이라고 생각했기 때문에 오프라인 과정을 온라인으로 전환할 때 미션 완료율을 어떻게 하면 유지할 수 있을까에 대해 가장 크게 고려했다.
미션 완료율을 높이기 위한 일환으로 지금까지 온라인 교육과 다르게 시작과 끝을 가지도록 과정을 설계했다. 온라인 과정의 미션 완료율이 떨어지는 이유 중의 하나는 데드라인이 없기 때문이라 생각했다. 데드라인이 없기 때문에 시간적인 여유가 있을 때 학습해야지라는 마음이 들면서 자꾸 미루는 상황이 발생한다. 한번 미뤄진 학습은 계속해서 미루게 되고 다시 회복하기 힘든 상태가 된다. 교육 기간이 끝나면 코드 리뷰 요청을 할 수 없는 것으로 강제함으로써 외적 동기부여를 높이려 했다.
두 번째 장치는 기존 오프라인 교육과 같이 기수별로 운영했다. 기수 단위로 운영하면서 다른 수강생이 어떻게 학습하는지를 지켜보는 것은 자연스럽게 미션 진행에 대한 동기부여를 줄 수 있다고 생각한다. 다른 수강생이 얼마나 열심히 학습에 참여하는지를 보면서 자신 또한 학습에 대한 동기를 키워나가기를 바랐다.
오프라인 과정을 온라인으로 전환했지만 오프라인 과정에서 진행하던 강의를 동영상 강의로 대체한 것을 제외하고 모든 점이 동일했다. 이와 같이 도전한 이유 중의 하나는 한 번에 너무 큰 변화를 만들 경우 미션 완료율의 변화를 판단할 때 어떤 변화로 인해 그 같은 결과가 나왔는지를 측정하기 힘들 것이라 판단했기 때문이다.
오프라인(코드리뷰는 온라인) 과정으로 진행했을 때의 NPS 점수와 미션 완료율과 온라인으로 진행한 8기 교육 과정의 NPS 점수와 미션 완료율은 다음과 같다.
NPS 점수와 최종 미션 완료율만으로 온라인 과정의 성과를 판단하는 것이 부족한 점이 있다고 판단해 좀 더 세부 내역을 파악해 봤다. 클린코드를 위한 TDD, 리팩토링 with Java 교육 과정은 모두 4개의 미션으로 구성되어 있다. 4개의 미션을 모두 완료해야 미션 완료로 판단하는데 각각의 미션 완료율이 어떻게 변화했는지 파악해 봤다.
오프라인(코드리뷰는 온라인)으로 진행한 5기, 6기, 7기의 각 미션별 완료율과 순수하게 온라인으로만 진행한 8기의 각 미션별 완료율은 다음 그림과 같다.
오프라인으로 진행한 5기, 6기, 7기와 온라인으로 진행한 8기의 각 미션 완료율과 추이와 최종 미션 완료율에 그리 큰 변화가 있지는 않다. 기간이 3주 더 길어지기는 했지만 온라인 과정으로 진행하더라도 오프라인의 미션 완료율과 비슷한 결과가 나왔다는 것은 고무적이다. 온라인으로 진행하더라도 기존의 온라인 교육 과정과 비교해 스스로 동기 부여하고 미션을 지속할 수 있는 힘이 있다는 것을 느낄 수 있었다. 이 같은 결과가 나온 가장 큰 원인은 온라인으로 진행한 1:1 코드리뷰에 있다고 생각한다.
단, 순수하게 온라인으로만 진행하는 첫 번째 과정이다 보니 개선할 부분이 많이 보인다. 특히 초반에 어떻게 미션을 진행할 것인지에 대한 막막함을 호소하는 분들과 동영상 품질에 대한 개선이 필요할 것으로 판단된다. 개선할 점도 있지만 온라인으로 진행하더라도 충분히 의미 있는 교육 효과를 볼 수 있다는 것에서 희망을 봤다.
한 걸음 전진했다. 다음 단계의 한 걸음이 무엇이 될지 기대된다.
8기 온라인 과정 후기를 공유하며 글을 마친다.
교육을 넘어 아트의 경지인 것 같습니다.
단순히 코딩을 일로만 생각했었는데, 코드를 다시 다듬고 하는 과정을 통해서 조금 더 생각을 하게 되고, 그로 인해서 관습적으로 사용하던 코드도 다시 찾아서 새롭게 알게 되고 하는 점들이 너무 좋았습니다. 그로 인해서 코딩하는 게 지루한 작업이 아니라 흥미가 생겨서 관련 책들(이펙티브 자바, 객체지향의 이해)도 읽게 되고 개발 공부하는 게 즐거워졌습니다.
이번 과정은 개발계의 도수치료였다고 생각합니다. 어떤 자세가 코드를 만들 때 올바른 자세인지 매주 미션과 리뷰를 통해 교정받을 수 있었습니다. 특히 객체를 다루는 부분에 있어서 객체를 잘게 나누는 목적과 필요성을 느낄 수 있었습니다. 또한 조영호 님의 '오브젝트'에서 얘기한 객체 지향 이야기들을 몸으로 체험하고 이해도를 높일 수 있었습니다. 마지막으로 테스트 코드를 다룸에 있어서 어디까지 테스트해야 할지 경계를 보는 안목을 만들 수 있었습니다.
객체지향, TDD, 클린코드, 리펙토링 평소에 궁금했던 모든 것들을 해소할 수 있는 시간이었습니다. 동시에 앞으로 개발자로서 어떤 것들을 어떤 방식으로 공부해야 할지 명확한 길을 제시해주는 소중한 시간이었습니다.
퇴근 후 여러 핑계로 개인 공부를 조금 미루고 있었는 데 이번 미션을 수행하면서 기존에 공부하기 어려웠던 핑계에서 멈추는 것이 아니라 매일 공부할 수 있는 행동 아이템을 생각하고 공부하는 습관을 가지게 된 것이 무엇보다 좋은 경험이 된 것 같습니다.
지난 8 년 간 혼자 알게 된 것보다 지난 8 주간 함께 배운 내용이 훨씬 더 농도가 짙다. 힘들 때마다 늘 8 년 전으로 되돌아 가고 싶었지만, 비록 힘들었어도 8 주 전으로는 절대 돌아가고 싶지 않을 만큼 많은 것을 알게 되었고 했다. 알면 하려고 하지 말고, 하면 알게 되는 것을 빨리 깨닫기 원한다.
이 글을 쓰고 발행한 지 3년이 지났다. 펜데믹 상황에서 어쩔 수 없이 온라인 과정을 진행했는데 3년 동안 온라인으로 교육을 진행하다보니 다시 오프라인으로 돌아가기 힘들어졌다. 오프라인으로 돌아가기 힘든 첫 번째 이유는 한 기수에 모집하는 인원이 많아져 오프라인으로 진행하기 힘들어 졌다. 두 번째 이유는 지방 또는 해외 수강생도 생기면서 수용할 수 있는 폭이 다양하고 넓어졌다. 세 번째 이유는 수강생의 온라인 과정에 대한 선호도가 높고, 온라인으로 진행할 경우 참석하지 못하더라도 동영상을 제공함으로써 추후 학습이 가능하다는 장점이 있다.
나 또한 코로나가 끝나 가는 상황에서도 온라인을 유지하는 이유가 온라인으로 진행할 때와 오프라인으로 진행할 때의 과정 만족도와 미션 완료율의 변화가 그리 크지 않기 때문이다.
온라인으로 1:1 코드 리뷰를 진행하고, 오프라인 강의를 진행한 1기 ~ 7기의 NPS는 73% ~ 87%이다. 온전히 온라인으로 진행한 8기 ~ 15기는 58 ~ 87%까지 변동폭이 더 크다. 이는 온라인으로 진행한 측면도 있지만 수강생 수가 많아진 측면도 있다. 미션 완료율은 온/오프라인을 병행했을 때와 온라인으로 진행했을 때 큰 차이는 없다. 이 같은 결과로 봤을 때 앞으로도 온라인으로 진행할 계획이며, 온라인으로 진행하면서도 NPS와 미션 완료율을 높이는 방법을 꾸준히 찾아 나갈 계획이다.