혼자 프로그래밍 언어를 공부하다 이번 학기 전공 수업으로 강의를 수강하며 듣다보니, 과제의 조건이 굉장히 낯선 경우가 많다.
이전까지는 간단한 문제 풀이로 복습을 해왔다면, 학교에서는 프로그램의 구현을 통해 복습을 하는 느낌이랄까..
그 중 나에게 있어 가장 골치 아프고 과제 수행을 하는 내내 화를 참기 어려운 것이 바로 이 조건이다.
“Don’t use library functions.”
모든 교수들이 이같은 조건을 내거는 것은 아니지만, 초장부터 끝장까지 뚝심있게 이 조건을 내거는 강의들 또한 존재한다.
과제를 처음 내받을 때는 큰 감정의 변화는 없다. 다 한 번쯤은 써본 함수로 구현하는 과제일테고, 어떻게 어떻게 작동 과정을 거치면 되겠다!
그리고 이러한 생각이 끝나갈 때 쯤, 항상 위 말을 한국어 버전으로 들을 수 있다. “함수나 메소드 사용하지 않고, 직접 구현해서 작성하세요”
하나의 조건이 추가된 것 뿐이지만 이전에 떠올린 생각은 완전히 무의미한 사고가 되었다. 도움이 될 때도 있지만, 대부분은 아니다. 그리고 과제의 수행을 위해 라이브러리 함수가 가진 기능을 직접 구현하고 있는 자신을 보고 있자면 이런 생각들이 나를 지배한다. 왜 멀쩡히 존재하는 기능을 쓰지 않는 것일까? 우리가 함수 개발자가 되길 바라시는 것일까? 굉장히 변태적이구나..
대학 과제 외에도 이처럼 라이브러리 함수 사용의 제한을 두는 집단들이 존재한다. 듣자하니 삼성 소프트웨어 멤버십의 일정 하이 레벨에 이러한 제한이 있고, 사내 심사에 있어 제한을 두는 기업들도 있다고 한다. 모두 비슷한 생각을 가지고 시험에 임할 것이 눈에 그려진다.
그렇다면 이러한 제약은 왜 존재하는 것이고, 이로 인해서 피시험자 혹은 학생이 얻게 될 이점은 무엇이 있을까?
생활코딩의 ‘이고잉’님은 HTML / CSS 강의 내 초기 수업들을 메모장을 이용하여 진행하신다. 그리고 일정 시차가 지났을 때, Atom을 소개해주신다. Visual Studio를 이용하는 많은 프로그래머들은 초보 코더가 Visual Studio로 코딩을 시작하는 것을 완전히 추천하지 않는다고 한다.
나는 라이브러리 함수 사용의 제약이 앞의 두 가지 예와 같은 이유를 공유한다고 생각한다. ‘불편함의 미학’이 바로 그 이유이다. 이 말은 불편한 것이 최고이며, 아름답다는 말이 아니다. 본인이 직접 불편함을 마주하여 겪어보고, 겪은 불편함에 대한 고민을 해 본 경험이 있는 사람이 그렇지 않은 사람보다 더 비판적 사고를 지닐 수 있게 되는 것이다. 불편함을 겪지 않는다면 왜? 그리고 어떻게?에 대한 고민없이 너무나도 쉽게 편리한 기능에 익숙해지기 때문이다. 그리고 이는 우리가 쉽게 사용하고 있는 기능, 컴파일러, 언어 등 모든 개발자 영역에 적용이 가능한 매너리즘의 한 부분이라고 생각한다.
물론 이같이 불편함으로부터 소중한 경험을 하는 것 외에도 말 그대로 라이브러리 함수, 컴파일러 등이 어떻게 구현되고 작동하는지에 대한 정확한 이해를 묻기 위해 이 제약을 내걸 수도 있다(레벨 및 사내 심사는 이 부분에 분류되어야 할 것이다.) 그러나 대학 과제에서 제시하는 이 제약은 불편함의 미학을 가르치기 위함이 확실하다고 믿고 있다.
그럼에도 앞으로 ‘라이브러리 함수 사용 금지’라는 조건이 내걸린 과제를 본다면 탐탁치 않은 기분으로 과제를 받아 들이겠지만, 이같은 고찰을 한 번이라도 해보았으니 내가 이 제약으로부터 얻을 수 있는 긍정적 요소들(이를테면 라이브러리 함수에 대한 이해, 선대 개발자가 이전에 느꼈을 불편함..)을 많이 떠올리며 최대한 즐겁게(?) 과제에 임할 수 있도록 시도해봐야겠…다…