개발자가 아닌 사람들도 코딩을 배우자는 게 요즘엔 이슈다. 그렇다면 비개발자가 처음 배우기에 좋은 프로그래밍 언어는 뭘까? 이런 질문을 받으면 대개 개발자는 자신의 경험에서 그 해답을 내놓는다.
C개발자라면 컴퓨터 알고리즘을 배우는 것도 중요하지만 하드웨어의 작동원리를 배우는 게 기본이기 때문에 당연히 C언어가 제격이란 답을 내놓는다. 프로튼엔드 개발자인 경우에는 요즘 대세는 자바 스크립트이고, 아울러 일반인들이 프로그래밍 언어를 배우고 나서 뭔가 실용적인 걸 하려면 결국 웹과 관련된 것이기 때문에, 당연히 배우기 좋은 언어로 자바 스크립트를 추천한다. 컴퓨터 언어를 처음 배우는 경우엔, 컴퓨터 원리든 실용적인 목표를 고려해서는 안되며 오로지 알고리즘 자체를 배워야 한다는 주장 뒤에, 이런 목적으로 파이선이 좋다는 개발자도 있다. 이것말고도 개발언어마다 자신의 언어가 초보자들이 배우기에 좋은 이유는 한 가지씩 있을 것이다.
종교전쟁의 끝은 비참하지만, 그 시작은 참으로 우습다. 종교의 우월성을 증명하기 위해, 각자의 종교가 상대의 종교보다 우수한 이유를 믿음의 관점에서 주장하고, 이런 주장이 어느새 과학적 사실로 간주되는 순간, 끔찍한 종교전쟁이 시작된다. 소프트웨어를 개발하는 분야도 외부에서 보기엔 상당히 이성적인 분야로 비춰지나, 실상을 들춰 보면 많은 부분이 종교전쟁과 비슷한 면이 있다. 특히 개발자 자신이 사용하는 개발언어, 도구, 운영체제에 관한 이야기가 나오면 차가운 이성은 사라지고 이성의 탈을 쓴 감성이 지배한다. 이런 맥락에서 보자면, 배우기 쉬운 프로그래밍 언어에 대한 주장도 이런 개발 분야의 종교전쟁과 비슷한 면이 많다.
사실 이런 종교전쟁이 일어나는 원인 중 일부는 우리가 흔히 소프트웨어 공학이라고 부르는 것의 불완전성에 기인한다. 예전에도 소프트웨어 엔지니어링의 현재까지 한계에 대해 말한 적이 많다. 소프트웨어 공학을 들춰보면 공학이라고 부르기보다 기술이라고 불러야 할 것들이 많다. 공학의 특징은 과학과 기술의 적절한 결합이다. 이론을 추구하지는 않지만 흔히 사용하는 기술에 대한 합리화를 제공하는 과학적 토대가 있다.
하지만 소프트웨어 공학의 많은 것들은, 과학적 이론보다 엔지니어의 기술에 의존하는 경우가 많다. 예를 들자면, 요구사항 전문가는 구체적인 과학적 근거를 제시하기보다 요구사항을 적는 게 효과적이었던 자신의 경험에 의존하여 요구사항의 중요성을 설파한다. 즉 과학이나 실험에 근거하지 않다 보니, 소프트웨어 개발을 둘러싼 논쟁은 종교전쟁으로 비화될 때가 많다.
배우기 쉬운 프로그래밍 언어에 대한 각 진영의 주장이 옳을 수도 있고 그를 수도 있다. 이것을 확인하는 방법은 실험을 통한 것밖에 없다. 즉 주장하는 이의 경험이나 목소리의 크기가 아닌 과학에서 사용하는 일반적인 실험 방법을 적용하는 것이다. 즉 개발 경험이 전무한 실험 대상자를 모집하고 적절한 실험 설계를 한 후 실험을 실시하고 나서 결과를 살피는 것이다. 이런 소프트웨어 공학을 Empirical Software Engineering(ESE)이라고 한다.
물론 ESE는 아직 걸음마 단계라 할 수 있다. 그렇다고 하더라도 소프트웨어 개발에 대한 발전이 가능하기 위해서, 축적된 경험과 그것을 극대화하는 기술, 거기서 얻는 자신감만으로 부족하다. 뭔가 한 걸음 나아가기 위해서, 우리 내부에서 우리를 평가하는 방법을 바꿔야 하지 않을까 한다.
글 : 신승환
출처 : http://goo.gl/KTdwQX
You must be logged in to post a comment.