Web Applications 과목 정리

역시 지난 쿼터에 들었던 과목이다. 과목 이름이 상당히 긴데, Abstractions for Highly Interactive Web Applications 라는 주제를 다루고 있다. 단순한 텍스트 정보의 전달이나 기본적인 폼 전송을 넘어 보다 다양하고 시각적으로 보기 좋고 사용이 편리한 상호작용을 지원하는 웹 어플리케이션을 만들자는 것이다. 그리고 이러한 웹 어플리케이션을 가능하게 하는 프레임워크를 설계하는 것이 Ousterhout 교수님의 목표라서 ‘Abstractions for’  가 앞에 들어갔다 🙂

교수님은 아버지뻘은 되어보이는 나이에도 아직도 지적호기심이 넘치고 열정적인 사람이었다. 최신 웹기술을 다루는 수업답지 않게 역사학과 건물 3층에서 칠판과 분필을 가지고 수업을 하는 것도 인상적이었다. 최신기술일수록 이론과 기초가 밑바탕이 되어야 한다는 말을 여러번 강조하던 것도 기억에 남는다. Tcl 이라는 스크립트 언어를 만들어서 유명해진 교수님은 Berkeley Tenure 를 박차고 나와서 창업을 해서 웹 쪽에 뛰어들었다가 이번에 Chairman 과 교수직을 겸하게 되었단다.

수업은 전반적으로 여유가 있었다. 시험도 없었고 프로젝트만 3번 있었는데, 마지막 프로젝트를 빼고는 그렇게 어렵거나 시간을 많이 필요로 하는 것들이 아니었기 때문이다. Intro to HCI Design 과목에 비해 투자한 시간이 1/10 정도 되려나? –_- 물론 학점을 받고 나니 그거보다는 조금 더 썼어야 하지 않았나 싶다;;;

이 수업을 통해 얻은 가장 큰 수확은 웹과 관련한 다양한 이슈들에 대해 새로 배운 것이 많다는 것, 그리고 또 웹 어플리케이션의 현재 구성과 앞으로의 발전 방향에 대해 큰 그림을 볼 수 있게 된 것이다. 또다른 수확이라면 영어 발표에 대한 경험을 빼놓을 수가 없다. 매 프로젝트마다 Write-up 을 적어내고 10분 가량의 In-class presentation 을 해야 하는데, 이 경험이 미국식 수업에 적응하는 데에 큰 도움이 됐다.

첫 프로젝트 발표를 하던 것이 아직도 생각난다. 대충 이런 정도의 이야기를 하면 되겠지 하고 한국에서 발표를 하던 것처럼 생각을 하고 갔는데, 막상 앞에 서니 영어도 꼬이기 시작하고 진행도 제대로 되지 않는 것이다. 결국 겉도는 이야기만 하고 말았는데, 이 날이 지난 쿼터를 지내면서 가장 큰 충격을 받았던 날이었던 것 같다. 와신상담의 자세로 임한 두번째 발표 때는 미리 개요를 짜서 발표 연습도 해보고 표현도 어느 정도는 준비해 갔다. 그런데 데모를 보여주는 과정에서 마우스로 데모를 보이면서 말도 같이 하려니까 생각보다 발표가 너무 길어졌다. 결국 10분 발표중에 앞부분에서만 8분을 쓰고 중요한 분석 부분에 시간을 제대로 할당하지 못했다.

이렇게 두번의 당황스러운 경험을 통해 얻은 교훈은, 철저한 준비와 연습만이 살 길이라는 것이다. 마지막 발표 때에는 지난 두번의 시행착오를 반복하지 않아야지.. 하는 조마조마한 마음으로 준비를 해갔고, 잘했다고 말하기는 그렇지만 원하는 형태의 발표에 어느정도 다가갈 수 있었던 것 같다. 진땀흘려 얻은 발표에 대한 몇 가지 팁.

  • 주눅들지 말 것. 영어실력, 그리고 보여줄 내용의 퀄리티에 상관없이 자신감 넘치는 태도를 유지해야 한다.
  • 말이 꼬이거나 어색한 정적이 흐르면… 관심은 떠난다. 발음이 안좋은건 괜찮지만 말이 꼬이는 건 청중들이 훨씬 민감하게 받아들인다.
  • 데모를 보일 때는 cool 한 느낌을 주는 것이 중요하다. 내가 고생한 부분이 중요한 것이 아니라 처음 보는 사람이 어떤 인상을 갖는가에 집중하라.

마지막 프로젝트는 아주 재미있었다. 새로운 형태의 web interaction 을 설계하고 구현하는 것이었는데, 우리 조는 Flash 나 Java 등의 기술을 사용하지 않고 HTML + Javascript 의 조합만으로 탐색, 수정할 수 있는 Interactive Treeview 를 만들었다. 이번 쿼터부터 우리과 교수로 부임한 Jeff Heer 교수의 Prefuse Library 에 있는 Treeview 에서 영감을 받아 작업을 했다. HTML Canvas element 와 Processing.js 라이브러리를 사용해서 구현했고, Firefox 에서는 동작하지만 IE 에서는 동작하지 않는다. (과제의 조건이 ‘Firefox 에서 동작할 것’이었다;;)

이 수업을 통해 전부터 관심있어 했던 웹에 대해 좀더 깊이있는 지식과 관심을 갖게 되었고, Visualization 에 대해 좀더 체계적으로 배워보고 싶은 생각이 들었다. 그래서 이번 쿼터에는 Visualization 수업을 들어보려고 한다.