[새싹] 레이싱 게임 페어프로그래밍(2)

채상엽·2022년 5월 10일
0

Sproutt 2nd - Spring Study

목록 보기
25/32

layout: post
title: "레이싱 게임 미션 페어프로그래밍 - 회고"
date: 2022-02-18T0:00:00-00:00
author: sangyeop
categories: Sproutt-2nd


레이싱 게임 미션 페어프로그래밍 - 회고

2월 초부터 진행중인 자바, 스프링부트, 알고리즘 스터디에서 첫 번째 미션으로 자동차경주게임 의 기능요구사항들을 페어프로그래밍 으로 구현하라는 미션을 받았다.

여기서 말하는 페어프로그래밍의 규칙은 다음과 같다.

  • 네비게이터드라이버

    • 네비게이터 : 전체적인 코드 구조와 설계에 대해서 방향을 잡아주는 역할
    • 드라이버 : 키보드를 잡고 코드를 네비게이터의 요구사항에 따라 코드를 작성함

    위 두 역할을 10분 마다 번갈아가며 진행하는 형식의 프로그래밍을 의미한다. 네비게이터가 드라이버에게 지시를 하지만 드라이버는 무조건 그 의견을 수용하는것이 아니라, 본인의 생각과 다르다면 어필을하고 같이 조율해 나갈 수 있다.

회고


어려웠던 점

모든 게 처음이어서 어려움이 있었다. 순수 자바코드만을 이용하여 기능을 나누고 기능에 따라 클래스를 나누는 과정과 구현한 기능들에 대해서 테스트 코드를 짰는데, 내가 안드로이드를 공부하며 1년 동안 사용했던 자바라는 언어가 이렇게 어려웠나 싶은 생각이 들었다. 그만큼 객체지향언어라는 자바를 사용하면서 한번도 객체지향적인 구조에 대한 설계 고민을 해보지 않았음을 반증하는것 같았다.

또한 역할과 구현 등 이라는 객체지향에서 알아야 한다는 좋은 키워드들을 알고는 있으나, 정작 코드를 짜라고 던져놓으니 어떻게 구현해야할지 막막하게 느껴졌다. 이러한 부분에서 이론도 중요하지만 직접 고민을 많이 해보고 코드를 작성해 보는 것이 더 중요하다고 느껴졌다.

배웠던 점

  • 기능에 따라 클래스를 분리하는것에 익숙해질 수 있었다. 이전에는 당장 기능 구현에 급급해서 기능 여러가지를 하나의 클래스에 뭉탱이로 때려 넣고 스파게티 코드를 만들었다면, 구현에 투자하는 시간보다 역할 분리와 설계에 더 많은 시간을 투자하면서 각 기능과 클래스를 적절하게 분리하는 방법을 배울 수 있었다.

  • 테스트코드를 이전에 작성해본적이 한번도 없었기 때문에, 어떤 기능에 대해서 어떻게 작성해야하는지 감이 잘 오지 않았다. 직접 기능을 구현하고 테스트코드를 짜 보면서 어떤 식으로 코드를 작성해야 테스트하기가 용이하겠구나에 대해서 대략적인 감을 잡을 수 있었던 것 같다.

  • 나의 생각으로만 코드를 작성하는 것이 아니라, 페어 동료의 생각을 함께 반영해서 협업하는 코드를 작성하는 방법을 배울 수 있었다.

느낀점

페어프로그래밍을 진행하면서 가장 먼저 느꼈던 점은 내가 아직 많이 부족하다는 것이다. 함께 페어를 진행한 친구의 경우에 나보다 이런 미션과 구조 설계에 대한 경험이 더 많았기 때문에, 내가 부족함을 느낌과 동시에 정말 많은 것을 배울 수 있는 유익한 시간이었다고 느껴졌다. 10분 마다 네비게이터와 드라이버의 역할을 번갈아 가며 페어를 진행함으로써 자연스럽게 페어 동료의 아이디어와 내 아이디어가 자연스럽게 작성된 코드에 녹아 들 수 있었다.

또한 우리 페어 외에 페어 팀 하나가 더 함께 스터디를 진행했는데, 서로 구현이 마무리 된 후 GitHub에 올라온 서로의 PR을 리뷰하며 피드백하는 시간을 가졌다. 다른 사람의 코드를 보는 것이 처음에는 쉽지 않았지만, 보다보니 어떤 의도로 구현을 했는지 조금씩 보이는 것 같았다. 또한 같은 기능을 구현하는 것이었지만, 서로 다른 관점에 따라서 클래스를 나누고 다른 구조로 설계한 것을 보면서 재밌다고 느꼈다.

특히 순수 자바 코드로 프로그래밍을 진행하면서, 프레임워크와 라이브러리를 잘 사용하는 것도 중요하지만 언어에 대한 높은 이해도가 필수적이라고 느껴졌다. 프레임워크 공부를 진행하면서도 언어에 대한 공부는 꾸준히 해야겠다고 느꼈다.

아직 어떤 코드가 객체지향적인지에 대해서 확실하게 알겠다고는 말할 수 없겠지만, 내가 알고 있던 지식과 다른 여러 사람들의 생각이 더해지면서 조금씩 퍼즐이 맞춰지는 기분이 들었다. 이외의 나머지 퍼즐의 조각들은 이어지는 추가 미션들과 나의 개인적인 학습량에 따라 달렸다고 생각한다.

profile
프로게이머 연습생 출신 주니어 서버 개발자 채상엽입니다.

0개의 댓글