ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 코딩테스트 대비 스터디 자바반, 이렇게 만들었다 - 실전편
    교육 이야기 2019. 5. 30. 16:36

    이 글은 프로그래머스 교육 운영자 에밀리가 '코딩테스트와 실무 역량 모두 잡는 알고리즘 스터디(Java반)' 를 준비하며 있었던 일을 회고하는 글입니다. 전 편인 '준비편' 을 읽고 오시면 더 재밌게 볼 수 있어요.

    코드리뷰

    스터디에서 가장 중요한 것 중 하나는 코드리뷰였다. 코드리뷰는 누군가가 작성한 소스코드를 여러 명의 개발자가 한 데 모여 리뷰(review)하고, 개선점을 찾으며 더 품질 좋은 코드를 작성하기 위한 행위이다.

    물론 우리는 과정 특성 상 여러 명의 리뷰어가 붙는 형태는 (아쉽게도)아니었지만, 스터디원들이 다른 사람이 작성한 코드를 열람하고 인사이트를 얻을 수 있도록 모든 코드리뷰 과정을 공개했다. 그러나 아쉽게도 스터디원끼리 적극적으로 피드백을 주고 받는 모습을 유도하긴 힘들었는데, 아무래도 코드리뷰 자체가 처음인 멤버들이 있다보니 남의 코드에 직접적인 피드백을 남긴다는 것이 심리적으로 무척 부담이었던 것 같다.

     

    20명 모두가 설문에 참여한건 아니지만, 코드리뷰 경험이 없는 멤버들의 비율이 더 높았다.

     

    코드리뷰를 하는 방식은 여러 갈래가 있지만 우리는 GitHub을 활용하기로 했고, 큐레이션한 29개의 문제를 스터디원들이 풀고 Pull Request 방식을 통해 본인이 풀이한 코드에 대한 리뷰를 요청하면 리더가 그에 대한 피드백을 주는 방식이었다.

    위 차트를 보면 알 수 있듯 코드리뷰를 경험해보지 못한 사람들의 비율이 꽤 높을 것으로 예상해서, 스터디에서 어떤 방식으로 코드리뷰에 참여하게 되는지 안내하는 것이 필요했다. 그래서 나온게 바로 아래 동영상. 저장소 fork, clone 에서 본인의 코드를 Pull Request 보내기까지의 방법을 잘 정리해두었다.

    약 4주 기간동안 Pull Reuqest는 84회 있었고, 리퀘스트 하나하나 모두 코드를 정독하고 피드백을 보냈다. 중요한건 이런 피드백 과정이 단발성이 아니라, 한 번 피드백을 보내서 코드를 고치면, 그 리팩토링 된 코드를 또 리뷰하는 반복적인 행위였다는 점이다. 때문에 본 과정에 온전히 집중한 스터디원들은 본인의 코드가 점진적으로 더 나아지는 경험을 통해 많은 것을 배웠으리라 생각한다.

    1기 스터디원들의 Pull Requests 일부. 리뷰를 받고 싶은 문제에 대해 언제든 요청을 할 수 있고 횟수 제한이 없다. 원한다면 모든 문제에 대해 리뷰를 받을 수 있다.

    우리가 코드리뷰에서 스터디원들에게 강조한 것들 중 가장 자주 언급했던 것들은 이런 것들이었다.

    1. 객체지향적으로 생각해서 코드를 짜자
    2. 가독성을 늘 고려하자. 변수명은 무엇을 의미하는지 한 눈에 알아볼 수 있게, 분리가 필요한 코드는 명확히 분리

    ...물론 자잘하게 더 많은 것들이 있지만, 효율성이 더 높은 코드를 쓰기 위해 필요한 작은 팁들은 물론 개발자로서(또 자바를 쓰는 개발자로서) 꼭 가져야 할 좋은 습관을 길러주는 것과 반드시 유의해야 하는 것들을 자연스럽게 심어드리고자 노력했다.

     

    온라인 세션(웨비나)

    코드리뷰 다음으로 중요한 것은 일주일에 한 번씩 모두 동시접속해서 진행하는 온라인 세션. Zoom 이라는 화상 미팅용 소프트웨어를 활용해서 진행하였고, 1시간~2시간 내외로 진행되었다. 이 시간은 리더가 미리 꼽아둔 몇 개의 문제를 시범으로 풀이하고, 그 과정을 모두 라이브 코딩으로 생중계했다.

    실제 영상을 못 공유하고 스크린샷을 공유하는 점 양해 부탁드린다. 위는 문제풀이 중인 모습. 막 Unit Test 코드를 하나 작성한 순간.

    문제를 풀 때는 우선 문제의 설명(description)을 읽고, 무엇을 요구하는 문제인지 정확히 이해한 뒤, 일단 생각의 흐름대로 코드를 작성해서 풀이하는 예시를 한 번 보여주었다.

    그렇게 다소 무식하게(?) 풀이한 코드를 더 효율적으로 개선해나가는 과정을 매번 생중계했고, 이 과정에서 자바 언어와 관련된 각종 팁이나 좋지 않은 코드 작성 사례 등을 자연스럽게 소개할 수 있었다. 평소 문제를 풀 때 객체지향은 전혀 생각하지 않고 일단 문제를 풀어내는 데에만 집중했던 분들에게는 무척 유익한 시간이었을 것라고 자부한다.

    스터디에 취준, 또 이직을 고려하는 분들이 많다보니 세션에서는 개발자로서의 삶이나 앞으로의 진로에 대한 고민 상담도 자연스럽게 이뤄졌다. 비록 한 번도 오프라인에서 만나지 못했지만, 각자 비슷한 관심사와 비슷한 고민을 하고 있다는 것을 서로 알게되니 온라인에서도 분위기가 누그러지는 것을 느낄 수 있었다.

    그 때는 생각하지 못했는데, 지금 돌아보니 오프라인 번개 식사 자리라도 만들걸 하는 아쉬움이 든다. 리더와 실제로 만나게 도와주고 더 다채로운 대화를 할 수 있게 이끌어드렸다면 좋았을텐데.

     

    마무리

    1기를 준비하며, 또 20명의 스터디원들과 온라인에서 함께하며 참 많은 것들을 배웠다. 스터디원들은 더 나은 문제 풀이 방식과 자바를 더 객체지향적으로 잘 쓰는 방법을 대표적으로 배웠을 것이고, 리더는 코드리뷰를 통해 스터디원들의 코드 개선점, 더 알려주어야 하는 것들에 대한 깨달음이 있었을 것이다. 그리고 나도 교육 운영자로서 배운 것들이 많다.

    내게는 어떤 사람들이 이 과정에 참여했고, 그 이유는 무엇이며, 어떤 고민들을 갖고 있고, 코드리뷰에는 어떻게 참여하고 있는지 관찰하며 얻은 작고 큰 인사이트가 모두 배움이다. 그 깨달음을 토대로 이번 2기는 더 알차게 진행해보려고 준비하고 있다. 이번에도 코드리뷰의 강점을 최대한 살려서 운영할 것이고, 리더 곰튀김님의 각종 개발 관련 꿀팁과 썰로 많은 스터디원들이 뜻깊은 경험을 할 수 있도록 적극적인 중간 커뮤니케이터 역할을 해야지.

    코딩테스트에서 통과하려고 과정에 등록했겠지만, 나갈 땐 테스트 통과 뿐 만 아니라 더 나은 코드를 작성하는 개발자로 성장시켜드리는 것이 이 스터디의 목적이다. 마지막으로 2기 일정을 공유하고 글을 마친다.

    • 스터디 기간: 2019-06-17(월) ~ 2019-07-12(금)
    • 리더: 1기 때의 인사이트를 토대로, 곰튀김님과 또 한 번 갑니다
    • 문의: 교육운영자 에밀리 emily@grepp.co
    코딩테스트와 실무 역량 모두 잡는 알고리즘 스터디(Java반) 2기 자세히 보기

    댓글 0

Programmers