Child pages
  • 소프트웨어 공학 여섯번째 수업 - 개발 환경

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

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

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

Info

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

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

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

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

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

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

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

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

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