Child pages
  • NEXT 3기들과 함께한 웹 프로젝트 수업
Skip to end of metadata
Go to start of metadata

NEXT는 이번 주부터 방학이다. 올해부터 한 학기를 13주, 방학 3주로 운영하는 것으로 결정되어 일반 대학보다 학기가 빨리 끝났다.

NEXT 1,2기와 달리 3기부터 수업 방식도 바뀌였다. 기존 1,2기가 2년 과정으로 운영했다면 3기는 1년 과정으로 운영하고 있으며 소프트웨어 개발 경험이 있는 친구들과 개발 경험이 없는 친구들을 나눠 운영하고 있다. 내가 이번 1학기에 진행한 수업은 일정 부분 개발 경험이 있는 6명의 친구들을 대상으로 한 수업이다. 6명이 약간의 편차는 있지만 일부 CS 과목은 이수했고, 프로그래밍 언어 하나는 다룰 줄 아는 상태였다. 단, 자바에 익숙한 상태는 아니고, 웹 프로그래밍 경험은 한 명을 제외하고 거의 전무한 상태로 시작했다.

이 친구들은 학습 기간이 짧기 때문에 기존 1,2기들과 달리 하루 8시간을 NEXT에 머무르면서 학습하는 것으로 설계했다. 그런데 내가 이 수업 이외에 1,2기 수업을 담당하고, 학생 상담, 행정 업무도 처리해야하기 때문에 도저히 하루에 8시간을 투자하기 힘들다. 또한 8시간 동안 진행할 강의 컨텐츠도 없고, 8시간 강의한다고 학습 효과도 없다고 생각했다. 이 글은 어떻게 최소한의 시간을 투자하면서 이 학생들이 학습에 집중하도록 할 것인가에 대한 고민의 흔적을 남기기 위해 정리하기 위해 쓴다.

이 수업을 설계하면서 세운 전략은 다음과 같다.

  • 최대한 많은 부분을 온라인 시스템을 활용한다.
  • 강의도 지금까지 수업하면서 찍어 놓은 동영상을 최대한 활용한다.
  • 하루에 많은 강의를 소화하기 보다 매일 최소한의 시간을 투자하는 방식으로 진행한다.
  • 학기 초반에는 약간 많은 시간을 투자하고, 학기 끝날 수록 더 많은 자유를 주는 방식으로 진행한다.

먼저 내가 없는 상태에서도 학생들과의 지속적인 소통을 할 수 있도록 온라인 시스템을 마련했다.

  • Trello: 학생들에게 매주 미션을 주고, 매일 학습 내용을 공유하기 위한 목적
  • Github: 프로젝트 이슈 관리, 소스 코드 관리, 문서 관리를 위한 목적
  • Slack: 나와 학생간의 소통 목적, Trello, Github와 연동해 학생들의 현재 상태를 한 눈에 파악하기 위한 목적

위 3개의 시스템이라면 온라인상으로 학생들의 상태를 지속적으로 파악하고, 소통하는데 문제 없을 것이라 생각했다.

대부분의 지식 전달은 온라인 동영상을 통해 해결했으며, 매일 수업은 다음과 같이 진행했다.

  • 매일 30분 정도 일일 회의를 한다. 
    • 일일 회의는 자신의 감정 상태 공유, 학습 중 어려운 점, 현재 학습 상태를 공유하는데 집중했다.
  • 일일 회의 중 질문이 나오면 답변하는 시간을 가진다.
  • 이론 강의가 필요한 경우 일일 회의 끝난 후 30분 ~ 1시간 정도 강의 진행한다.
  • 마일스톤을 끝내는 시점에 데모, 회고 등을 진행한다.
  • 일정 주기로 온/오프라인 소스 코드 리뷰를 진행한다.

수업은 위와 같은 방식으로 진행했다. 위와 같이 진행한 결과 내가 매주 투자한 대략적인 시간은 다음과 같다.

  • 매주 미션 설계: 1시간 ~ 2시간(컨텐츠가 이미 준비되어 있다는 가정하에서이다.)
  • 일일 회의: 2시간 30분
  • Spot 강의: 2시간 내외
  • 데모 및 회고: 1시간(2주에 2시간 정도. 평균해서 1시간)
  • 온/오프라인 코드 리뷰: 2,3주 간격으로 2, 3시간

이 정도로 계산해 보니 1주일에 8시간 내외로 투자한 듯하다. 이 또한 학기 초반에 집중적으로 많이 배치되어 있었으면 학기가 끝나갈 수록 투자하는 시간은 줄어들었다. 단, 이런 조건을 만족시키기 위해서는 컨텐츠가 미리 준비되어 있었기 때문에 가능하다. 이 과정을 처음 설계할 때는 컨텐츠를 준비하는 시간도 포함시켜야할 것이다.

각 주차별 과정을 어떻게 진행했는지 구체적으로 정리해보면 다음과 같다.

1주차 - 워밍업

주간 스케줄

  • 1일차: 맥 사용법 교육, 팀 빌딩, 평가를 위한 개발 환경 세팅, Trello 시스템 사용 시작
  • 2일차: 개인별 평가. HTTP의 이해 실습
  • 3일차: 오리엔테이션, 일일 회의, HTML 학습, Slack 가입, 학습 일지 작성 시작
  • 4일차: CSS 학습, 팀명 정하고, github 계정 생성
  • 5일차: 서비스 기획, 팀 운영 원칙, 역할, 주간 설문 조사

주간 설문 조사 결과 및 학습 일지 분석

  • 칭찬하고 싶은 팀원과 그 이유는?
    • 이 설문을 통해 내가 팀 활동에 많은 시간이 참여하기 힘들지만 팀원 개개인의 성향을 파악하는데 도움이 된다.
  • 협업을 위한 툴에 익숙해 짐.
  • 협업과 소통에 대한 인식을 하게 됨.

피드백

  • 1주차에는 팀 빌딩, 자산의 상태 파악, 프로젝트에서 사용할 시스템 학습 등에 투자함.
  • 하루에 작업할 내용이 많기 때문에 자기 주도적으로 스케줄링하는 것을 강조함.
  • 기존의 다른 수업과 달리 협업 환경에 대해서는 내 주도로 진행함.
  • 학생의 피드백에서 특별히 인상적인 내용은 없었음.
  • 학생 스스로 스터디 계획을 세우고 스터디 진행함.

Trello 기록

  • Trello 기록을 보면 각 일자별 미션을 주고, 미션을 수행하도록 했다.
  • 각 미션에 개인별로 진행할 필요가 있는 경우 Trello의 checklist를 활용하도록 했다.
  • 학기초라 학습 의욕이 강하고 미션 실행률이 높기 때문에 학기 초반에 좋은 습관을 만드는 것에 집중했다. 이 부분은 예상대로 주요했던 것으로 생각한다.

2주차 - 서비스 기획, JSP/Servlet, git 학습

주간 스케줄

  • 1일차 : 개발할 서비스 선정, 기획, JSP/Servlet 1차 학습
  • 2일차 : JSP/Servlet 미션, 기능 목록 추출
  • 3일차 : JSP/Servlet 2차 학습, 화면 설계
  • 4일차 : JSP/Servlet 미션, JDBC 학습
  • 5일차 : javascript, git 학습, 소스 코드 공유

주간 설문 조사 결과, 학습 일지 분석, 활동
주간 전체 활동 리뷰
  • 각 일자별 과정을 잘 소화했다. 단, 4일차의 경우 미션과 코드 리뷰를 진행하면서 JDBC 학습까지 진행하지는 못함.
  • 학생들이 적극적으로 학습과 활동에 참여했다.
서비스 주제 선정
  • 주제를 선정하는 방법이 인상적이라 남긴다.
  • 기존 대부분의 방법
    • 팀원 각자 아이디어를 낸다.
    • 각 아이디어에 대해 토론한다.
    • 투표를 통해 결정한다. 
    • 이 경우 충분한 토론이 있지 않고, 다수결에 의해 진행이 되는 경우 불만이 있는 친구가 발생할 수 있다.
  • 3기 내에서 선택한 방법
    • 팀원 각자 아이디어를 낸다.
    • 각 아이디어에 대해 토론한다.
    • 프로젝트 선정할 때 고려할 요소를 뽑는다.
    • 각 요소별로 점수화한다(점수화하면서 추가적인 토론이 있을 것으로 예상함).
    • 정량화한 점수의 합을 구해 프로젝트를 선정한다.
    • 이 방법의 경우 좀 더 객관화하는 과정을 거칠 수 있으며, 가시적으로 정량화한 결과가 보이기 때문에 프로젝트 선정에 대한 불만이 최소화할 것으로 생각한다.
미션 진행 및 코드 리뷰
  • 월, 수는 개인 학습을 하고, 화, 목에 개인 학습에 따른 미션 진행함.
  • 미션 진행할 때는 무조건 짝 프로그래밍으로 진행함.
  • 짝 프로그래밍할 때 timer를 활용해 10분 간격으로 무조건 역할을 바꾸도록 함.
  • 1,2차 미션을 진행한 후 1시간 정도씩 코드 리뷰 진행함.
  • 즉각적인 오프라인 코드 리뷰가 의미있는 것으로 판단됨.

회고

의미있던 활동
  • 혼자 학습한 후 같이 미션을 진행하는 점, 특히 짝 프로그래밍이 좋았고, 소스 코드 리뷰에서 토론하는 과정
  • 토론 형식의 코드 리뷰, 일일 회의를 통해 개인의 상태를 공유하면서 서로에 대한 이해도가 높아짐
  • 코드 리뷰. 이론만 알고 있었는데 코드 리뷰를 통해 실전 경험. 짝 프로그래밍도 여유를 가지고 생각할 시간을 가짐
  • 짝 프로그래밍이 새로운 경험.
  • 동영상 강의도 괜찮았음. 직접 따라하면서 실습할 수 있었던 점. 재학습 가능
  • 짝 프로그래밍, 코드 리뷰, Trello 사용
    • 짝 프로그래밍의 경우 서로 간의 부족한 부분을 인지할 수 있었음. 논의가 있어서 좋았음. 개발 순서, 단축키등 암묵지를 배울 수 있었던 점
    • 코드 리뷰하면서 같이 생각을 하면서 구현해 갈 수 있었던 점

 

  • 전반적으로 짝 프로그래밍, 소스 코드 리뷰가 의미있었다는 의견이다. 짝 프로그래밍은 계속해서 진행하는 것으로 한다.
  • 특히 소스 코드 리뷰는 일방적인 리뷰가 아니라 토론 형식으로 더 나은 방법을 찾아가는 것이라 좋았다.

 

개선했으면 하는 활동
  • 현재 방식에 만족.
  • 짝 프로그래밍 - 단위 별로 자리를 바꾸자, 15분 단위로 하자.
  • 하루 계획을 잡을 때 마감 시간을 확실히 잡고 우선 순위도 확실히 잡자.
    • 마감 시간을 잡는 것은 좋은 방법은 아니다. 우선 순위는 확실히 잡자.
  • 점심 식사 후 산책이 좋았다.
    • 돌아가면서 아이디어를 내고 그 의견에 무조건 따른다.
    • 일일 회의를 하는 시점에 그날 활동을 하는 것으로 한다.

Trello 사용 기록

 

3주 ~ 11주차 - 2주 간격 마일스톤

1, 2주차를 상당히 구체적으로 설계함으로써 초반에 어떤 방식으로 학습하고, 시스템을 활용할 것인지에 대한 습관을 만드는데 많은 노력을 기울였다.

무엇을 학습할 것인지도 중요하지만 기본적인 환경과 프로세스가 익숙하지 않은 상태에서 바로 지식을 전달하더라도 효과가 떨어질 것이라 생각했다. 3주 이후부터는 앞의 2주차와 비슷한 방식으로 진행했으며, 마일스톤 단위를 결정하도록 주문했더니 2주 간격으로 진행하는 것으로 결정했다.

매주 2,3일은 새로운 주제로 학습하고, 나머지 시간은 학습한 내용을 프로젝트에 적용하는 방식으로 진행했다. 새로운 주제에 난이도가 있거나 어려워하는 상황이 발생하면 학습일을 고수하기보다 학생들을 상황을 최대한 맞추려고 했다.

학생들이 제안한 자체 세미나

학생들이 컴퓨터 기초 과목을 듣기는 했지만 이해도가 깊지 않았다. 프로젝트를 진행하면서 기초 과목에 대한 필요성을 느끼고 더 깊이 있는 학습을 위해 자체적으로 자신이 관심있는 주제를 선정해 학습한 후 자체 세미나를 진행해 보자는 제안을 했다.

새로운 웹 기술 학습, 프로젝트 진행에도 벅찼지만 기초 과목에 대한 동기부여가 되어 있는 상태라 가능했다. 자체 세미나로 진행하는 주제는 다음과 같다.

나도 각 세미나 주제를 발표할 때 참여했는데 나름 신선하고 재미있었다. 특히 질문을 주고 받으면서 더 깊이 있는 내용을 같이 학습하는 모습이 인상적이었다. 원래 이 세미나를 학기가 끝나기 전에 두 번 진행하기로 했는데 학기가 짧다보니 한 번 밖에 진행할 수 없어 아쉬움이 남았다.

12 ~ 13주차 - 마지막 마일스톤

12주차까지 왔다. 그런데 1학기를 시작할 때 계획한 모든 주제를 소화한 상태는 아니였다. 그럼 어떻게 할 것인가? 더 많은 지식을 전달하는데 마지막 2주를 투자할 것인가? 아니면 더 많은 지식 전달보다는 프로젝트를 마무리하는 것에 집중할 것인가?

나는 후자를 선택했다. 지금까지 학습한 내용만으로 서비스의 완성도를 높이고, 지식을 활용하는 재미를 느껴보는데 집중하는 것이 더 좋은 경험이라 생각했다.

따라서 12, 13주차에는 강의는 없고, 내가 일정 관여하지 않고, 학생 주도록 진행하도록 했다. 프로젝트 진행 중 궁금한 점이 있으면 slack을 통해 요청하도록 했다. 이 기간 동안 나는 거의 시간을 투자하지 않았다. 정말 마지막 남은 기간 동안 프로젝트 개발에만 집중하도록 했더니 그 결과는 놀라웠다. 대표적으로 commit 수 결과만 보면 다음과 같다.

6명의 학생모두 균등하게 참여하고 있으며, 마지막 2주 동안 정말 많은 개발이 진행되고 있음을 볼 수 있다는 나는 그냥 지켜보기만 할 뿐이었다. 11주 동안 참아온 모든 열정을 2주 동안 쏟아붓는다는 느낌을 받았다.

마치며...

이번 학기 나에게 맡겨진 일이 너무 많아 3기 수업에 많은 시간을 투자하지 못했다. 내가 투자할 수 있는 시간이 한정되어 있었기 때문에 그 시간 내에서 할 수 있는 최선을 방법을 찾아 실행했는데 기대보다 좋은 결과를 얻은 듯하다.

학기를 시작할 때 프로젝트 구성원이 6명, 6명 모두 남자, 지금까지 제대로 된 협업을 해본 경험이 없는 상태라 기대를 하지 않았기 때문에 지금의 결과가 더 기분 좋은 듯하다.

정확하게 성공의 이유가 어디 있는지 모르겠지만 몇 가지 이유를 정리해 본다.

  • 매일 짧은 시간의 회의, 즉각적인 피드백
  • 초반에 학습 방식, 프로세스를 습관하는데 성공
  • 경쟁보다는 학생간의 협업을 통합 학습에 집중한 점
  • 정해진 지식 습득보다 개인별 학습 속도에 맞추도록 배려한 점. 
  • 동영상을 통한 학습이 대부분이라 학생 주도로 학습 가능했던 점.
  • 감정 회고를 함으로써 상대방에 대한 공감, 배려를 하도록 유도한 점
  • 가능한 학생 주도로 문제에 대한 해결책을 찾도록 한 점
    • 내가 원래 이런 성향이 있는 부분도 있지만 시간이 없어 더 많은 간섭을 하지 못한 부분도 있다.
  • 매일 일일 회의를 했기 때문에 시간 약속을 잘 지켰으며, 이 부분에서도 신뢰가 형성된 점
    • 프로젝트 수업을 해보면 잘 모이지 않아 신뢰가 깨지고, 힘들어하는 경험을 많이 했다.
  • 마지막 마일스톤을 새로운 지식 습득보다 서비스 완성에 집중한 점

이 같은 결과의 이유를 한 가지로 정리하기는 힘들다. 위 모든 부분들, 내가 인식하지 못한 많은 요소들이 합쳐지면서 이런 결과나 나왔으리라 생각한다. 나 또한 즐거운 경험이고, 새로운 경험이었다. 일도 많고 힘든 2015년 1학기였지만 이런 새로운 경험을 했기 때문에 그 자체만으로도 헛된 시간은 아니였던 듯하다. 이 친구들은 학기가 끝난 후 도메인까지 구매해서 직접 서비스를 해볼 생각까지 하고 있다. 앞으로 사용자와 직접 소통하고, 그 속에서의 즐거움까지 맛볼 수 있기를 기대해 본다.

학생들의 최종 피드백 중에서 일부를 정리하며 이번 학기 3기 웹 프로젝트 수업에 대한 정리를 마친다.

기술 보다 사람의 중요성에 대해서 많이 배울 수 있는 학기였습니다.
정말 잘 하는 개발자 보다는 같이 일 하고 싶은 개발자가 되고 싶다는 생각이 들었습니다.
또한 지식 뿐만 아니라 생각하는 방법을 가르쳐 주신 교수님께 감사의 말씀을 드리고 싶습니다.

 

혼자 공부할 때 보다 함께 공부하는게 최고의 동기부여가 아니었나 생각합니다. 함께 하는 친구가 있다는게 가장 좋았습니다. 

 

대학 1학년때 이런경험을 했었다면 더없이 좋았을 것 같다!

 

앞으로 개발자의 길을 걸어가면서 지금 3개월의 경험이 좋은 추억이 될 것 같습니다. 그런 기회를 만들어준 포비(나의 닉네임)와 팀원들에게 감사합니다.
컴퓨터 공부를 시작한 이래 제일 즐겁게 코딩을 했던 시간들이었습니다.
우리가 특별했던 건지, 다음 기수에서 비슷한 연령대 비슷한 인원의 팀이 구성되었을 때 지금과 같은 시너지가 나올 수 있을지는 의문이네요. 앞으로 사회에 나가서도 이런 팀을 만나서 개발을 할 수 있을까도 걱정이네요.

 

학부시절 진행했던 프로젝트의 경우 팀원중 개발하는 인원이 극소수인 반면에 해당 넥스트 수업의 경우 전부 열정적으로 수업을 참여하고 개발을 진행했습니다.
때문에 개발을 진행하면서 모두가 커뮤니케이션을 하려고 노력했고 이 부분에 대해서 저역시 능동적으로 개발에 참여하여 다른 사람의 코딩 스타일과 내가 모르고 있던 내용을 교수님에게서 뿐만 아니라 팀원들에게 배우려고 노력했던 점이 가장 잘했던 점이라고 생각합니다.
이를 기반으로 현장에서 개발자로 투입이 된다면 개발시 필요한 기술과 코드리뷰에 주도적으로 대화에 참여하고 배우려는 자세에 대한 자신감을 가졌습니다.

산출물

 

  • No labels