Child pages
  • 소프트웨어 공학 여섯번째 수업 - 개발 환경
Skip to end of metadata
Go to start of metadata

지난 주까지 서비스에 대한 기능 목록 추출, 우선순위 선정, 일정 추정 작업을 완료했다. 드디어 개발을 시작한다는 기대감 때문인지 지난 주부터 슬슬 적극성을 보이기 시작했다. 이번 주는 기능 중 하나를 선택해 기능을 구현해 보기로 했다.

개발 단계를 시작한다고 해서 바로 스프린트 1을 시작하지는 않았다. Iteration 0 - 프로젝트 준비 글에서도 간략하게 언급하고 있지만 개발에 박차를 가하기 전에 준비해야할 내용들이 있기 때문이다. 이 단계를 스프린트 1로 규정하지 않고 스프린트 0로 시작했다.

프로젝트를 진행해 보면 실질적으로 애플리케이션을 개발하기 전에 요구사항을 분석하고, 개발 환경을 세팅하는 작업들이 반드시 따르기 마련이다. 애자일 프로세스 기반으로 작업을 할 때 이 같은 작업을 반복주기 1로 잡고 진행하는 것이 맞는 것인가라는 의구심이 들었다. 이 기간은 사실 다른 반복주기와는 기간적인 부분이나 진행하는 업무의 성격도 다른 경우가 많기 때문이다. 그런데 이미 애자일 프로세스 진영에서는 이 같은 단계를 Iteration Zero로 두고 작업을 진행하는 듯하다. 그 동안 어떻게 진행할까 생각만하고 관련 글을 찾아 읽지 않았는데 오늘 책을 읽다보니 관련 내용이 간략하게 나오고 있다.

스프린트 0에서는 개발 서버 설정, 개발자 PC 개발 환경 세팅, 샘플 소스 코드 공유 및 학습 등의 과정을 거친다. 이 목적을 위해 지난 시간에 기능 중 하나를 선택했다. 우리가 선택한 기능은 구현 복잡도가 그리 높지 않으며, 우선순위가 높고, frontend부터 backend까지를 관통하는 기능을 선택했다. 그래야 개발 초반에 고려할 수 있는 부분을 최대한 고려할 수 있다고 생각하기 때문이다.

먼저 구현할 기능에 대한 간략한 모델을 설계했다. 모델명을 정하고 모델이 가지는 속성을 정하는 시간을 가졌다.

대략적인 설계를 마친 후 수업에 참여하고 있는 학생들이 돌아가면서 소스 코드를 이어받아 구현하는 방식으로 수업을 진행했다. 진행 방식은 다음과 같다.

  • 먼저 내가 github에서 프로젝트 저장소를 생성한 후 내 pc에 clone한다.
  • ruby on rails 시작 프로젝트를 생성한 후 소스 코드를 push한다.
  • 이 소스를 학생 중의 한 명이 pull을 한 후 개발을 시작한다.
  • 개발을 진행하는 중에 막히는 부분이 있으면 나와 학생들이 도움을 주면서 기능을 구현해 나간다.
  • 일정 부분까지 개발을 완료하면 그 시점까지의 소스 코드를 push한다.
  • 다른 학생이 그 소스를 pull해서 개발을 계속 이어 나간다.

내가 이 같은 시간을 가진 이유는 기능 하나를 같이 만들어 가면서 기술적인 이해도를 맞추기 위함과 각자가 개발하는 개발 환경을 공유했으면 하는 바람 때문이다. 개발한 경험이 많지 않은 상황이지만 서로가 개발하는 모습을 보면서 배울 수 있는 점이 많다는 것을 느꼈으면 한다. 혼자 고민하는 시간도 필요하지만 같이 함으로써 얻을 수 있는 것이 많기 때문이다. 그리고 개발하는 과정에서 막히는 부분이 있으면 서로 도와가면서 문제를 해결해 나갔으면 하는 바람도 있다.

일단 내 주도로 개발하지 않고 학생들 주도로 개발을 했더니 학생들이 힘들어 하는 부분이 어디인지, 학생들의 개발 속도가 어떤지를 파악할 수 있었다. 아무래도 내가 혼자 진행하는 것보다 느리겠지만 이 같은 속도가 학생들이 새로운 기술을 이해하는데 더 맞을 수도 있겠다는 생각이 들었다.

이번 주 수업에서 기능 전체를 완료하지 못했다. 하지만 어떤 방식으로 개발하는지에 대한 공유와 도구 활용에 대한 공유가 있었기 때문에 이를 바탕으로 다음 단계로 진행할 수 있으리라 생각한다. 다음 주까지 수업에서 진행한 기능과 새로운 기능을 하나 더 완료하는 것을 목표로 세웠다. 그리고 각각의 기능을 두 명이 한 조가 되어 짝 프로그래밍을 통해 해결하기로 했다. 짝 프로그래밍을 하라고 했더니 수업이 끝난 후에 자신들의 자리까지 짝 프로그래밍이 가능한 구조로 바꾸어 버리는 적극성을 발휘했다.

소프트웨어 개발 경험이 많지 않은 친구들과 같이하고 있어 어려운 부분도 있지만 한 주에 조금씩 조금씩 발전해 가는 모습을 보면서 힘을 내고 있다. 나도 서비스 개발에 더 깊이 있게 관여하고 싶지만 생각보다 여유 시간이 많지 않다는 것이 아쉬움이다.