하위 페이지
  • 휴먼 디자인 프로젝트 - 교육 저널 1
메타 데이터의 끝으로 건너뛰기
메타 데이터의 시작으로 이동

이번 학기 NHN NEXT에서 내가 담당하고 있는 과목은 휴먼 디자인 프로젝트다. 휴먼 디자인 프로젝트의 활동 중에 학생들이 개발 저널을 쓰는 활동이 있다. 팀으로 프로젝트를 진행하면서 느끼는 다양한 경험, 통찰을 개발 저널에 담기를 바라는 마음에 진행하고 있다. 학생들이 쓴 개발 저널을 읽으면서 느끼는 점이 많아 나는 학생들을 향해 교육 저널을 쓰면 좋겠다는 생각이 들어 이 글을 시작한다.

최초 휴먼 디자인 프로젝트 과목은 기존 대학의 프로젝트 과목과 비슷한 형태로 기획되었다. 그런데 지난 1년을 경험한 결과 이 프로젝트 과목에 이론 과목을 통합하는 것이 학생들의 경험과 배움 측면에서 더 좋겠다는 생각이 들어 여러 개의 과목을 이 프로젝트 과목에 통합했다. 현재 프로젝트 과목에 통합되어 있는 과목을 보면 소프트웨어 공학, HTML & JavaScript, Java Web 프로그래밍, 안드로이드, iOS, 모바일 웹, Communication으로 웹과 모바일 서비스를 만들기 위해 필요한 대부분의 과목이 통합되어 있다. 학생들은 자신의 전공, 서비스 기획 방향에 따라 이 과목 중에서 자신이 수강하고 싶은 과목을 선택해 조합할 수 있다. 물론 필수 과목의 경우에는 반드시 수강해야 한다.

이렇게 많은 과목이 통합되어 있기 때문에 이전과 같이 강의 주도로 수업을 진행하는데는 한계가 있다. 따라서 수업 진행이 교수 주도가 아닌 학생 주도로 대부분의 과정이 진행되고 있다. 팀을 만들고, 서비스를 기획, 개발하고, 개발 환경을 구축하는 대부분의 과정이 학생 주도로 진행되고 있기 때문에 이런 환경에 익숙하지 않은 학생들이 힘들어하는 것 또한 사실이다. 하지만 내가 이 과목을 통해 기대하는 바는 현재 힘들어하는 점을 사회에 나간 후 경험하는 것이 아니라 이 과목을 통해 실험하고 연습해서 극복했으면 하는 것이다. 사회에 나가면 회사, 조직이라는 곳에서 돈을 받으면서 일하기 때문에 다양한 실험을 하기 힘들기 때문이다. 그런 실험을 할 수 있는 가장 안전한 장소가 지금의 학교이기 때문에 이 학교에서 사회에 나간 후 해야할 경험과 실험을 마음껏 해봤으면 좋겠다.

이 같은 맥락에서 학생으로부터 받은 최근의 피드백에 대한 답변을 하면서 이 과목 진행방식에 대한 내 의도를 전하려고 한다.

이 과목은 수업을 시작하고 4주 동안 서비스에 대한 기획, 기능 목록, 일정 추정과 더불어 개발 환경을 구축할 것을 요구했다. 일반적으로 현장에서도 프로젝트 초반에 기획에 대한 요구사항을 분석하는 과정에서 개발 환경을 구축하기 때문에 현장과 비슷한 환경으로 만들기 위한 의도였다. 4주가 끝난 이후에 바로 개발을 시작할 수 있도록 하기 위함이기도 했다. 내가 요구한 개발 환경은 다음과 같다.

  • 개발자는 github에 commit한다.
  • jenkins ci 도구는 github 저장소와 연결되어 빌드를 한다.
  • 빌드 도구는 maven을 활용한다.
  • 모든 테스트가 성공하면 배포 스크립트를 활용해 최신 소스를 tomcat에 배포한다.

이 같은 환경을 구축해 개발 소스를 배포하는 과정을 최대한 자동화하도록 하는 것이었다. 즉, 이 같은 환경을 구축함으로써 현재 개발하고 있는 기능은 언제, 어디서, 누구나 테스트할 수 있도록 하기 위함이었다. 이 환경을 구축하는 것이 단순해 보이지만 알아야할 내용이 많다. 각 도구에 대한 용도, 설치, 설정 방법, 리눅스와 같은 OS에 대한 지식, 쉘 스크립트 작성 능력, 문제가 발생할 경우 디버깅하는 능력 등등. 작년 한해 동안 많은 것을 배우기는 했지만 실제로 적용하는 경험은 거의 없는 상태였다. 위와 같은 개발 환경을 구축하라는 요구사항을 던지면서 내가 학생들에게 제공한 문서는 다음 정도 수준이었다.

개발 환경 구축을 위해 필요한 도구들만 쭉 나열한 후 이 도구들을 조합해 개발 환경을 구축하라는 것이었다. 내가 학생이었다면 무지 황당했을 수 있겠다. 하지만 일단 던져봤다. 학생들이 어떻게 대응할 것인지 보고 싶었다. 이 같은 황당한 상황 속에서 어떻게 문제를 해결할 것인지를 보고 싶었다. 문제를 해결해 가는 방법을 찾기를 바랬다.

수업 중간, 중간 회고하는 자리가 있다. 이 자리에서 예상한대로 "개발 환경 구축하는데 삽질을 너무 많이 하는 듯하다. 작년 수업처럼 따라하기 식은 아니더라도 가이드 문서는 제공해 주었으면 좋겠다."라는 이야기가 나왔다. 일단 고려해 보겠다고 했다. 하지만 이번 학기가 끝날 때까지 나는 이번 개발 환경과 똑같은 방식으로 진행할 계획이다. 지금은 시작이라 이 같은 방식으로 진행하는 것이 힘들겠지만 시간이 지나면서 나아질 것이라 확신하기 때문이다. 내가 이 같은 방식으로 진행하면서 의도하는 바는 다음과 같다.

  • 모르는 지식을 온전히 자신의 것으로 만들려면 일정 시간이 필요하다. 가이드 문서를 통해 쉽게 해결하면 이후에 일정 시간을 또 투자해야 완벽하게 자신의 것으로 만들 수 있다.
  • 삽질은 완전한 시간 낭비가 아니다. 삽질을 하면서 최초 예상했던 것보다 얻는 것이 훨씬 더 많다. 특히 문제 해결 능력을 키울 수 있다.
  • 삽질 시간이 길어진다면 삽질 시간을 줄이기 위한 다른 방법을 찾아 봤으면 한다. 어떤 방식으로 접근해야 삽질 시간을 줄일 수 있을까? 혼자하는 것보다 둘이 하는 것이 더 나은가? 해당 도구에 대한 기초 지식을 쌓은 후 접근하는 것이 더 효율적인가?
  • 앞으로 다양한 문제 상황에 직면하게 될 텐데 이 때 자신만의 문제 해결 능력을 키웠으면 한다. 검색을 활용할 수도 있고, 주변에 잘하는 친구를 활용할 수도 있고, 교수님을 활용할 수 있다. 교수님은 사회에 나갔을 때 주변 선배 개발자들이라고 생각하면 된다.
  • 어려운 문제를 스스로 극복했을 때의 쾌감을 경험해 봤으면 한다.
  • 이 이외에도 정말 많은 경험을 하고 실험을 해볼 수 있다.

일단 던지고 기다렸다. 그런데 내가 의도하지 않았던 경험을 한 친구도 생겼다. 이 친구는 자신이 맡은 도구를 팀원들에게 설명하기 위한 문서를 만들고 이 문서를 다른 팀이 참고할 수 있도록 공유하기까지 했다. 공유한 문서는 http://www.slideshare.net/ssuserdaba75/ss-32520625 에서 볼 수 있다.

이 친구는 이 문서를 공유하는 것을 대수롭지 않게 생각했는데 이 문서를 공유함으로써 주변 친구들에게 많은 감사의 메시지도 받았다. 자신이 알게된 지식을 자료로 만들고 공유함으로써 느끼는 즐거움을 경험할 수 있게 된 것이다. 이 친구는 앞으로도 자신이 알게된 지식을 계속해서 공유하겠다는 이야기를 하고 있다.

어제 처음으로 내가 요구한 개발 환경 구축을 완료한 팀이 나왔다. 개발 환경을 구축한 후 그 기쁨을 알리기 위해 나를 찾아왔다. 사실 힘든 과정이었다는 것을 안다. 하지만 그 과정을 통해 많은 것을 배우고 느꼈을 것이라 생각한다. 힘든 과정이었지만 성공했을 때의 그 즐거움이란 마약을 했을 때의 느낌(그렇다고 내가 마약을 해본 경험이 있다는 것은 아니다.)과도 비슷할 것이다. 어쩌면 우리 개발자들은 이 같은 짜릿함을 느끼기 위해 프로그래밍에 집중하는지도 모르겠다. 일단 이 짜릿함을 한번 느껴보면 좀 더 강렬한 짜릿함을 느끼고 싶기 때문에...

개발 환경 구축을 완료한 나를 찾아온 학생들과 나눈 이야기를 공유해본다. 학생들과 이야기를 나누면서 나 또한 많은 것을 보고 배운다. 학생들이 개발 환경 구축을 완료한 후 자축하는 사진을 공유하면서 글을 마친다.