이론의 중요성

문제의 근원에 접근하면 할수록 이론의 중요성을 뼈저리게 느낀다. 학교에 다닐 때는 이론이 고리타분하고 현실에 쓸모없는 것이라고만 생각했다. 학교에서 더욱 현실에 가깝고 실질적인 지식을 가르쳐줬으면 하는 생각이 간절했다. 그러나 어느덧 3년차 회사원이 되어, 현장에서 문제에 부딪히면 부딪힐수록 결국 가장 특수한 경우의 문제도 이론과 결부되어 있다는 생각이 든다. 회사에서도 직원들을 교육시킬 때 이론의 비중을 높여야 할 것이다. 입사하자마자 바로 현업에 투입되는 건 어쩔 수 없는 중소기업의 현실이라 해도, 틈틈이 이론을 공부하고 지식을 공유하는 환경은 필수적이다. 특히 소프트웨어 개발자들의 경우 알고리즘, 데이터구조, 네트워크 및 데이터 통신 등 컴퓨터공학의 가장 핵심적인 과목들에 대해 숙지하고 있을 필요가 있다. 단기적으로는 교육의 손해가 있을 수 있지만 장기적으로, 또한 결정적인 순간에 이론은 결국 제값을 하기 마련이다.

얼마전 2007년 1월자 Communications of the ACM의 What Subjects and Skills are Important for Software Developers?라는 기사를 읽었다. 소프트웨어 개발자들 스스로가 가장 필요하다고 생각하는 스킬을 점수로 매겨 평균을 낸 것이다. 상위권의 결과는 다음과 같다.

Data Structure and Algorithms (3.8)

Procedural Programming (3.8)

Design (3.7)

Implementation (3.7)

Requirements (3.6)

Version and Configuration Management (3.6)

Object-Oriented Programming (3.6)

Test (3.5)

Software Architectures (3.5)

Internet Protocols (3.4)

….

Physics (1.6)

Artificial Intelligence and Knowledge Engineering (1.6)

 

이 결과는 어떤 점을 시사하는가?