Page tree
Skip to end of metadata
Go to start of metadata

스터디 진행 과정

1단계 - openSquare 리팩토링

2단계 - 설계 논의

  • 1단계로 boundary condition에 대한 중복은 제거했다.
  • 다음 단계로 새로운 자료 구조(Dummy Square)를 가지도록 변경한다. 하지만 Position 작업만으로 바로 변경하기 힘들다.
  • 지뢰찾기 판을 생성하고 이 판을 사용하는 부분을 별도의 클래스로 분리하는 것이 좋겠다.
  • 이 시점에 설계에 대한 논의를 시작했다. 1차적으로 학생들이 찾아낸 방법

  • 위 그림 만으로는 이해하는데 한계가 있어 내가 클래스 다이어그램을 설명하면서 이와 같은 구조가 맞는지 검증하는 시간을 거쳤다.

  • 기존 Grid를 GridManager로 변경한다.
  • Grid를 인터페이스로 추출하고 이 인터페이스를 구현하는 NormalGrid, DummyGrid, ListGrid를 생성한다.
  • Position 인터페이스를 두고, 각 Grid마다 Position이 1:1로 매칭되는 구조로 구현한다.
  • 학생들의 논의를 통해 자연스럽게 위와 같은 구조가 도출되었다. 중간 과정에서 내가 요구한 부분은 다음과 같다.
    • Grid와 Position의 의존 관계를 최소한으로 제한해라.
    • Position이 Grid와 의존 관계를 가지지 않도록 해라.
    • 각 클래스는 각각의 역할에 충실하도록 해라.
    • 이 같은 제약사항을 둔 결과 위와 같은 모습으로 클래스를 설계해 나가는 것을 경험했다.

3단계 - 설계에 따른 구현 시작

  • 기존 Grid 클래스에서 인터페이스부터 추출하려는 모습을 보였다.
    • 이와 관련해 인터페이스를 바로 추출하기보다 Grid로 분리할 부분을 먼저 고려해 분리한 후 인터페이스를 추후 별도의 작업을 나누어 생각하도록 유도했다.
  • GridManager(Grid가 변경되어도 변경할 필요가 없는 지뢰 게임의 핵심 엔진 부분)와 Grid(자료구조가 달라짐에 따라 구현 클래스가 달라지는 부분)로 분리하는 작업을 하는데 어려움을 느꼈다.
  • 과정에 어려움을 느끼고 시간의 한계로 인해 대략적인 과정을 교수 주도로 라이브 코딩을 통해 경험을 전달했다.
  • 다음 주 스터디에서 앞에서 설계한 구조대로 구현해올 것을 요구했다.
  • 이 과정에서 변경한 내용은 다음과 같다.

스터디 마지막 녹음 내용 및 회고

  • 자바 스터디 마지막 내용 : Java Study-20140207.mp3 - 회고한 부분의 내용이 잘려서 아쉽다. 녹음 중 전화가 오면 녹음이 되지 않는다.
  • Step by Step으로 점진적으로 소스 코드를 개선해 나가면서 많은 것을 보고 배운다는 느낌이 들었다.
  • 제약사항을 두었을 때 답답함을 느꼈다는 의견이 있었는데 최종적으로 변화해 가는 모습을 보면서 이 답답함이 해소되는 느낌을 받았다는 의견이 있었다.
    • 최초 답답함이 있겠지만 제약 사항을 두고 이 제약사항하에서 문제를 해결해 나가도록 유도하는 것이 필요하겠다.
  • 경험이 없는 상태에서 혼자 힘으로 문제를 해결하는데는 한계가 있었다. 과제를 하고 싶었지만 막막함 때문에 할 수 없었다. 그런데 스터디에서는 여러 명이 같이 토론하고 논의하면서 해결책을 찾을 수 있었다.
    • 기존에 경험해 보지 못한 문제에 대해 혼자 힘으로 과제를 해결하는데 어려움을 느낀다.
    • 과제를 혼자 해결하기 보다는 여러 명이 같이 의견을 모아 해결해 나갈 수 있는 방법을 찾아야 한다.
    • 장애물이 높을 경우 약간의 시도를 한 후 포기하는 경향이 많이 보인다. 이 부분이 정말 중요한 부분이라는 생각이 든다.
    • 문제를 해결하는 과정에 힌트를 주어 계속해서 혼자 힘으로 시도해 볼 수 있도록 유도해야 한다.
  • 혼자가 아니라 여러 명이 모여 같이 문제를 해결하는 것이 더 많은 것을 배우고 허들을 넘을 수 있겠다는 인식을 심어줄 수 있겠다.
  • 스터디 마지막에 live coding을 하면서 약간은 자아 도취에 빠진 경향이 있다. 학생들의 사고 흐름보다 빠르게 진행했다는 느낌이 든다.
    • live coding을 할 때 말을 하지 않고 coding 과정만 보여주면 어떨까? 
    • coding 과정 중 궁금한 부분을 학생이 찾아 질문하도록 유도한다.
    • 같은 coding 과정을 2,3회 반복해서 진행하면 어떨까?
    • 내 coding 속도가 빠르고, 말을 같이 하는 경우 흐름을 따라오는데 한계가 있을 것으로 판단된다.
  • No labels