이번 주 목요일 첫 번째 소프트웨어 공학 수업을 했다. 소프트웨어 공학 첫번째 수업 글에서 이야기했듯이 처음 소프트웨어 공학 수업을 설계할 때는 내가 주도해서 프로젝트를 하나 진행하면서 소프트웨어 공학의 다양한 기법들을 소개하려고 했다. 그렇게 한 이유는 학생들이 한 학기에 학습해야할 것들이 너무 많아 소프트웨어 공학 수업까지 프로젝트 진행하기 힘들 것으로 예상했기 때문이다. 그러나 나의 예상을 깨고 학생들 주도로 프로젝트를 진행하면서 소프트웨어 공학 수업을 듣고 싶단다.

프로젝트를 시작할 때 제일 먼저 하는 일이 서로에 대해 알아가는 시간을 가지는 것이라 생각한다. 서로 간의 관계를 먼저 만들고 신뢰를 쌓아가면 프로젝트를 원할히 진행하는데 훨씬 더 유리하다. 이런 목적으로 서로를 알아가기 위한 만남 시간을 가졌다. 처음 설계할 때는 서로에 대해 알아가고 현재 학교 생활하는데 고민꺼리는 없을 것인지에 대해서만 이야기하려 했는데 프로젝트를 진행하게 되면서 우리가 만들 프로젝트 주제를 선정하는 작업까지 병행했다.

하루 밖에 시간이 없었기 때문에 준비를 많이 못했을 거라 생각했다. 그런데 내 예상을 깨고 자료까지 만들어 온 친구가 있었다. 현재 서비스에 대한 대략적인 기능 구성, 세계적인 흐름, 사용자들에게 줄 수 있는 가치, 한반 더 나아가 수익 모델까지 설계해서 가지고 왔다. 놀랄 따름...

 

다른 친구 한명은 자신이 만들고 싶은 서비스를 말로 설명하고, 한명의 친구는 어떤 주제가 결정되더라도 자기는 그 결정에 따르겠다고 의견을 제시했다. 자신들이 만들고 싶은 주제를 이야기한 후에 각 서비스에 대한 논의를 진행했다.

잠시 동안 자신이 만들고 싶은 서비스를 이야기했던 친구들간의 공방이 있었다. 그 서비스는 무엇이 문제이고, 한 학기에 구현하기에는 너무 범위가 크다, next가 추구하는 서비스 방향과는 맞지 않는 듯하다는 등 다양한 의견을 피력하면서 자신이 제안한 서비스가 더 좋다는 의견이었다. 나는 서로 논쟁할 수 있도록 그냥 구경만 하면서 지켜봤다. 해결책은 본인들이 논쟁을 통해서 찾아갈 것이기 때문이다. 한 친구는 프로젝트의 범위를 너무 크게 가져가지 말았으면 좋겠다고 이야기하고 한 친구는 범위를 더 키웠으면 좋겠다는 이야기들이 오고 갔다.

그렇게 한 참을 이야기하더니 서로 타협안을 찾아가기 시작했다. 한 친구가 다음과 같은 제안을 한다. "좋다. 나도 네가 제안한 서비스가 재미있고 의미있을 것으로 생각한다. 하지만 지금 제안한 범위는 너무 크다. 따라서 우선순위를 정하고 핵심 기능만 구현하자. 그리고 사용자의 범위도 현재 너무 크다. 사용자의 범위를 최소화해서 먼저 진행하고 이후에 넖혀 갔으면 좋겠다.". 열심히 자신의 서비스를 설명하던 친구도 이 제안에 동의하면서 이번 학기에 진행할 프로젝트 주제가 선정되었다.

서로를 알아가기 위한 가벼운 모임이었는데 주제 선정을 하면서 자연스럽게 서로 간의 협상도 하고 소프트웨어 개발에서 정말 중요한 우선순위 선정과 소프트웨어 개발 범위에 대한 논의가 진행되었다. 이렇게 소프트웨어 개발에 대해 자연스럽게 하나씩 느껴갈 것이라 생각한다. 이 모든 주제들이 소프트웨어 공학에서 다루는 주제이며, 매 주 수업을 통해 우선순위를 선정하고 개발 범위를 결정할 것이다.

주제 선정이 끝난 후 팀 이름을 정하고, 호칭이 어떻게 할 것인지에 대한 이야기도 나누었다. 형, 동생 할 것인지, 아니면 별명을 만들어서 별명을 부를 것인지에 대해서... 이와 관련해서는 다음 주 수업 시간에 결정하기로 했다.

마지막으로 논의한 내용은 프로그래밍 언어와 프레임워크 선정이었다. 사실 개발 언어와 환경에 대해서는 구현할 소프트웨어에 대한 요구사항이 일정 수준 진행된 후에 결정하는 것이 맞겠지만(사실 현실에서는 이미 결정되어 있는 경우가 대부분이다.) 학생들은 아직까지 개발 경험이 많지 않은 상태라 요구사항 파악, 우선순위 선정, 일정 추정을 하는 동안에 기술적인 지식을 쌓아야할 필요가 있다. 이런 이유 때문에 사용한 프로그래밍 언어와 프레임워크를 일찍 결정하게 되었다. 그렇게 논의해서 결정한 개발 언어는 Ruby이고 프레임워크는 Ruby on Rails로 진행하기로 했다. 아무래도 웹 개발 경험이 많지 않은 상태에서는 Ruby on Rails가 가장 좋을 것으로 생각했는데 학생들이 Ruby 기반으로 개발해 보고 싶단다. 책을 한권 구매해서 다음 주부터 공강 시간에 모여서 한 시간씩 스터디를 하기로 결정했다. 물론 나 또한 Ruby on Rails에 대한 경험이 많지 않기 때문에 같이 스터디를 해야할 듯하다. 스터디에 적극적으로 참여하지는 못하겠지만 틈틈이 공부 좀 해야겠다.

프로젝트 진행에 내가 많은 부분 관여하지 않으려고 한다. 대부분의 서비스 구현과 진행은 학생들 주도로 하고 나는 그들이 문제에 부딪혀 고민하고 있을 때 옆에서 조언해 주고 방향을 잡아주는 역할만 하려 한다. 그렇게 하는 것이 이 친구들이 더 빠르게 성장할 수 있는 지름길이라 생각한다. 이렇게 시간을 쏟는 것이 육체적으로 힘든 점은 있으나 열정적인 학생들의 모습을 보면 나 또한 즐겁고, 소프트웨어 개발을 처음 시작했을 때의 열정이 다시금 느껴진다.

위 이야기들 이외에도 인생 선배로서 학생들과 많은 이야기를 나눌 수 있어 즐거운 시간이었다. 앞으로 이 친구들과 같이할 일들이 기대된다. 몇 일 지나지 않았지만 우리가 해야할 일들이 하나씩 정리되어 가고 있다.