학계와 업계에서 바이오인포매틱스(생물정보) 분야를 연구하시는 분들, 또 실제 서비스와 제품을 만드는 분들 대상으로 하는 "생물정보 소프트웨어 개발 프로세스 교육"입니다.
작년부터 이 교육을 시작했는데, 올해가 제 3기가 됩니다.
개인적으로는 작년에 했던 두번의 교육이 매우 의미가 깊었습니다. 교육/학습철학에 대해 다시 생각해 볼 기회가 되었고, 저희 스스로 교육을 진행하면서도 그 효과에 놀랐습니다.
우리는 한 사람이 앞에 나와서 강의하는 형태는 최장 20분을 넘지 말자고 나름의 룰을 정했습니다. TeachingWithYourMouthShut을 교육 전에 코치들이 공동 스터디를 했었죠.
교육을 받으신 분들은 "이런 강의는 생전 처음이었다", "교육 중 졸아본 적이 없는 게 처음이다" 등의 말씀을 하셨습니다. 강의가 끝나고 교육생들이 제출한 강의평가서를 제 와이프가 읽고는, "감동적이다"는 말을 해줬습니다.
새로운 교육에 대한 확신을 갖게 되었습니다.
아래는 당시 교육을 끝내고 제가 썼던 글입니다:
대전강의와 서울에서의 생명정보공학 소프트웨어 개발 프로세스 교육을 통해 XP 교육을 어떻게 하는 것이 좋을지에 대한 확신이 생겼다.프로그래밍을 전문적으로 해본 적이 없는 사람이 스스로 MockObject를 발견해 냈다. 나는 단지 테스트 비용을 최소화하고 테스트로부터 얻는 확신을 최대화 해보라고 했을 뿐이었다. 그는 내 기억으로, "Fake어쩌구"라고 클래스 이름을 지었다. "그걸 MockObject라고 부른답니다"라고 말해주면 되었다. MockObject 수업은 따로 필요 없었다.
전공이 생물쪽인 사람이 유닛 테스트(Test Last Programming)를 좀 해보더니, "테스트를 먼저 만들면 더 좋지 않을까요?"라는 의견을 낸다. "그걸 TDD라고 합니다"라고 말해주고 약간 힌트를 준다. 그러면 자연스레 TDD 교육이 이어진다. TDD를 좀 하더니, "메소드나 함수에서 내부적으로 어떤 변수를 바꿔버리는 것보다 값을 리턴하는 것이 테스트하기 더 좋은 것 같아요 -- 스타일의 차이일런지는 모르겠지만 그게 더 좋은 것 같습니다"라고 말한다. "그렇게 변수가 바뀌는 걸 사이드이펙트라고 하고, 아예 그게 불가능한 언어도 있습니다"라고 말해준다.
교육을 듣기 전에 자신은 프로그래밍이란 걸 이제 막 공부하고 있기 때문에 우리가 사전 설문지에서 풀어보라고 한 Toy Problem(20줄 내외로 풀 수 있는 간단한 문제)을 내지 못하겠다고 했던 학생은 2주 후에 OOP로 자신이 원하는 시뮬레이션 프로그램을 만들고 있었다. 그는 "성장상 장원"을 탔다.
그들의 발전을 지켜보는 나로서도 상당히 경이로운 경험이었다.
핵심은 어떤 순서로 어떻게 하느냐 인데, 학습자가 자연스럽게 다음 단계의 내용을 스스로 도출하게 하면 물 흐르듯 교육이 이어질 수 있다. 교육 중에는 누군가가 앞에 나와서 "강의"하는 시간이 결코 연속 20분을 넘지 않는다.
5년 쯤 후에는 상당수의 교육(특히 성인 대상)이 이 형식으로 바뀌리라 전망한다.
...
어떻게 이음새 없이 매끈히 연결되게 하나?하나의 교육 활동이 끝났을 때(30분, 1시간, 2시간 등) 피교육자가 "아하"와 동시에 "그렇다면 이건 어떻게...?" 식의 질문을 느낄 수 있어야 한다.
매 교육은 앞 단계의 질문에 대해 통찰을 제공하면서 동시에 피교육자가 다음 단계로 나아가는 데 초석이 되는 질문을 품게 해야 한다.
이번에도 이런 성공적인 교육이 될 수 있도록 노력할 것입니다.
--김창준