중앙대학교 중앙 도서관.
내가 우리학교에 고마워하는 몇 안되는 것 중 하나는 중앙도서관이다. 재학시절 내 지식의 젖줄이 되어줬다. 신청하고 몇 달을 기다려 받아 본 책들이나, 내가 찾아낸 숨겨진 보물들, 십년도 더 된 저널들... 정말 귀중한 도움이 되었다. 나를 키운 것은 도서관이었다. 그래서 학교 도서관에 애착이 많다.
하지만, 현재의 도서관 시스템은 사용하면 할 수록 불편한 시스템이다. "Ease of Learning"(MS 워드)과 "Ease of Use"(Emacs, Vi) 어느 것도 충족시키지 못한다.
나는 우리학교 도서관에 아마존 스타일의 시스템(많이도 말고, 도서별 리뷰 등록, 별표 평가, 고객 클러스터링을 통한 서적 추천, 도서별 대출/검색 횟수를 통한 베스트셀러 집계 및 이에 대한 통계 분석 -- 예컨대 공대 학생의 베스트셀러, 경영학과의 베스트셀러, 4학년의 베스트셀러 등 -- 같은 것만이라도) 을 도입하면 학생들의 독서량이 두 배는 높아질 것이라고 확신하며, 이것이 다른 곳(정문 바꾸기 등)에 돈을 쓰는 것 몇 십 배의 가치를 지속적으로 만들어 낼 것이라 믿는다. 이제는 도서관도 인터넷 서점을 벤치마킹 해야 한다.
지금 도서관의 온라인 시스템은 상당히 오래된 레거시 코드와 아키텍춰를 거의 그대로 사용하면서 프론트엔드만 웹(CGI)으로 옮긴 것으로 보인다. 만약 완전한 리스트럭춰링 작업을 한다면 얼마나 걸릴까? 나는 커스터머나 도메인 전문가(도서관 사서, 학생)를 포함한 6-8명의 정예 요원으로 약 5 개월의 기간이면 데이타 마이그레이션을 포함, 새로운 시스템으로 옮길 수 있다고 본다. 우리과에서 이 프로젝트를 하면 좋을텐데 하는 바램도 있다(하지만 학생의 사정상 힘들 것이다 -- 만약 풀타임으로 전념하지 못하면 기간은 훨씬 늘어날 것이다). 외국의 대학 -- 특히 실리콘벨리 부근 -- 에서는 SoftwareEngineeringClass에 근처 회사의 실제 커스터머를 데려와서 그 사람이 원하는 "진짜" 소프트웨어를 개발하는 실습을 시킨다. 실습 시간에 학부생과 대학원생이, 혹은 저학년과 고학년이 어울려서(대학원생이나 고학년이 어울리는 것이 아주 중요하다. see also SituatedLearning ) 일종의 프로토타입을 만드는 작업을 하면 좋을 것 같다. 엄청나게 많은 것을 배우게 될 것이다. --JuNe
이런 프로젝트가 컴공과 학생에게 쉽게 떨어질리는 만무하다. 그래서 대부분은 디자인 단계에서 끝내게 된다. 유스케이스 몇개 그려보고 끝나는 것이다. 좀 더 용감하고 야망이 높은 사람들은 밑바닥부터 구축을 해나갈지도 모르겠다. 어찌 되었건 프로그래밍은 중요하다. 빌게이츠가 늘 하는 말이 "Code is the thing"이란다. 만약 프로그래밍을 직접 해보지 않고 끝내게 되면 자신이 배울 수 있는 엄청난 크기의 빙산을 그냥 지나치는 셈이다.
전부 다 만들기엔 시간과 용기가 부족한 사람들은 기존 시스템에의 랩퍼(wrapper)를 만들 수도 있다.
즉, 현재의 도서관 시스템을 일종의 웹서비스로 이용하는 것이다. 직접 CGI로 쿼리를 보내고 받아오는 HTML을 파싱해서 적절한 XML로 치환해주는 레이어를 만든다. 이렇게 하면 "일반적 도서관 랩퍼"를 만들 수 있다. 즉, 어느 도서관 시스템에든지 약간만 수정하면 적용할 수 있게 된다.
사용자는 이 랩퍼를 통해 로긴을 하고, 책 평가도 하고, 리뷰도 쓰고, 베스트셀러 검색도 하고, 대출 예약도 한다. 기존 시스템의 모집합이 되는 셈이다. (하지만 꼭 그럴 필요는 없다. 중요하고 자주 쓰이는 기능만 노출해도 충분하다)
일단 이걸 만든 사람들이 열심히 사용하다가, 우리과 사람들이 점점 더 쓰고, 나중엔 다른 과 학생들까지 쓰다보면, 혹시 모르잖는가. 정말 이런 시스템으로 도서관을 바꿀 생각을 정책입안자들이 하게 될지.
--JuNe
will move to somewhere more appropriate
왜 우리는 학년이나 학부생, 학원생의 임의적 구분에 그렇게 매달리는 것일까. 저학년과 고학년이 한 팀이 되어 뭔가를 함께 하면 여기서 얼마나 많이 배울 수 있을지 사람들은 잘 모른다. 저학년은 고학년의 운신 하나 하나에서 배운다. 그가 키보드를 어떻게 누르고, 버그에 어떻게 대처하는지 등은 글을 통해 알 수 없다. 고학년은 저학년과 함께 일을 하면서 어떻게 팀을 이끌어나갈지, 어떻게 커뮤니케이션을 잘 할지, 내 코드의 가독성이 어떠한지를 배운다.
물론 현재도 저학년, 고학년이 함께 일하는 경우는 있다. 고학년이 예비역인 경우가 그렇다. 하지만 대부분의 경우, 저학년끼리, 고학년끼리 뭉치거나, 서로 섞인다고 해도 고학년은 방외자요, 관찰자로 남는다. 보다 명시적이고 적극적으로 저학년, 고학년 공동 학습을 장려할 필요가 있다. 우리는 교과과정이나 교육방법에 대한 스테레오타입에서 벗어나야 한다.
--JuNe
정말 많이 배우는 지름길은 자신의 삶 속에서 실현을 하는 것이다. 만약 XP를 정말 제대로 공부한다면 자신의 삶에도 그것이 영향을 미치지 않으면 안된다는 말이다. 아니 정말 그렇게 된다. 또, 그렇게 되도록 하면 정말 많은 것을 배우게 되고, 또 빨리 배울 수 있다. 마찬가지로 어떤 연습 프로젝트를 진행할지라도 자신의 삶에 의미가 있는 어떤 것을 우선적으로 택하는 것이 좋다. 날마다 게임을 하는 사람이라면 게임을 만들고, 날마다 게시판을 붙들고 글을 쓰는 사람이라면 게시판을 만든다.
--JuNe