'그 까짓 소프트웨어 왜 못만드냐'는 착각

IT와 세상 2009.12.07 12:53

소프트웨어 개발이 단순한 프로그래밍이란 착각

누구나 컴퓨터를 접하게 되면 작은 프로그램을 직접 만들어 보는 경험을 하게 된다
. 어린 나이에도 베이직(BASIC) 같은 언어는 쉽게 깨우칠 수 있다. 재미있는 표도 만들어 보고 그림을 화면에 그려 보기도 한다. 처음에 이런 것이 신기해서 소프트웨어에 빠져든 개발자도 많다.

 

BASIC 프로그래밍

이공계 전공자라면 컴퓨터 공학을 전공하지 않더라도 크고 작은 프로그래밍을 할 줄 알아야 한다. 전자공학의 경우 자신이 만든 하드웨어를 동작시키고 제어할 수 있는 소프트웨어를 만들어야 한다.

IT
가 아닌 과학이나 공학을 전공하더라도 수치 해석이나 통계 프로그램을 이용해서 분석을 해야 하는 경우가 허다하다. 하드웨어에 밀접한 소프트웨어는 어셈블리 언어로 직접 만들기도 하지만, 대부분의 경우 고급 언어를 사용한다. 프로그래밍하는 원리는 대체로 비슷하다.

이 정도의 단순한 소프트웨어를 만들 경우 소프트웨어 공학을 제대로 배울 필요까지는 없다. 프로그래밍 과목에서 몇 가지 실습을 하는 정도로 충분하다. 필요하면 패키지 소프트웨어의 라이브러리(library) 기능을 잘 활용해서 프로그램의 전개 과정(procedure)을 논리적으로 구성하면 된다. 혹 잘 안 풀리더라도 몇 개 명령어(instruction)와 규칙을 책에서 확인하고, 잘 아는 친구들의 도움을 받아 과제를 마무리하곤 한다.

 
"그 소프트웨어 몇 줄 짜면 되는 거 아니야?"

물론 복잡한 수준까지 발전하는 경우도 있지만, 작은 규모의 프로그램 개발을 주위에서 여러 형태로 접하다 보면 자신이 프로그래밍한 경험을 소프트웨어 개발이라고 확대 해석해서 별게 아니라고 착각하는 경향이 있다. “그거 몇 줄 짜면 되는 거 아니야?” 이런 생각이 자신도 모르게 의식 속에 스며드는 것이다.

 

물론 단순한 모듈을 구동하거나 라이브러리(library) 함수를 불러내어 필요한 데이터를 얻는 행위는 프로그래밍 수준에서 해결된다. 그러나, 전체의 구조를 구성해서 논리적으로 작동하는 프레임워크를 만드는 것은 전혀 다른 차원의 문제다. 프레임워크를 만들려면 데이터 구조(Data Structure), 프로세스(Process)를 정립하고 여러 환경적 변수에 따라 치밀하게 동작하도록 설계해야 한다.

 

이런 소프트웨어는 단순하게 규정된 단계대로 일방향으로 진행되는 것이 아니다. 어떤 상황이 벌어지느냐에 따라 역동적으로 상호 작용을 하는 살아있는 엔진이다. 때로는 수학이 필요하고, 최적의 알고리즘을 고안하고 적용해야 할 때도 있다. 구글(Google)의 검색 엔진이 뛰어난 이유는 고급 수학과 소프트웨어 공학이 절묘하게 결합했기 때문이다. 여기에 창업자들이 열정을 바친 결과가 세계 최고의 검색 엔진이다.

프로그래밍과 아키텍처 소프트웨어 공학의 차이

 

따라서, 단순 프로그래밍과 창의적인 아키텍처(architecture)를 만드는 소프트웨어 공학은 구별해야 한다. 고급 빌딩을 건설하는 현장을 생각해 보자. 건설 노동자가 작업을 마무리하기 위해 자신의 노하우를 적용하는 업무와, 그 빌딩의 전체 구조를 치밀하게 설계하는 업무는 엄연히 다르다. 건축 설계는 주어진 디자인과 지반 여건을 토대로 안전하고 효율적인 구조를 만들어 내는 전형적인 지식 노동이다. 동일한 건설 업종에 종사하지만, 초점은 완전히 다르지 않은가? 똑같이 컴퓨터를 두드리고 있다고 해서, 같은 언어를 사용한다고 해서, 한 통속으로 소프트웨어 개발이라고 간주해서는 안 된다.

 

이런 착각이 소프트웨어 개발이라면 나도 해 봤는데…” 하는 인식을 가지게 되는 요인 중 하나다. 그러다 보니 소프트웨어 개발을 만만하게 보는 분위기가 있다. 고급 소프트웨어 개발을 해도 존경 받지 않는 이유가 여기에 있다. 그까짓것 왜 제대로 못 만들어? 그리고, 만드는 데 뭐 그리 비싸? 다 사람 장사 아니야?”하는 심리를 느끼는 것은 지나친 컴플렉스일까? 소프트웨어가 허드렛일, 3D 업종으로 추락한 배경에는 그런 인식이 한 몫 한다고 생각한다.

(아이뉴스 칼럼 기고문을 보완한 것임)
제 블로그가 마음에 들면 구독+해 주세요
신고


티스토리 툴바