'프로그래밍'에 해당되는 글 2

  1. 2009.12.07 '그 까짓 소프트웨어 왜 못만드냐'는 착각 (28)
  2. 2009.06.23 IT개발자 프로그래밍은 군인의 사격이다? (10)

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

IT와 세상 2009.12.07 12:53

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

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

 

BASIC 프로그래밍

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

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

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

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

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

 

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

 

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

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

 

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

 

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

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

IT개발자 프로그래밍은 군인의 사격이다?

IT와 세상 2009.06.23 11:39

실용적인 교육 시스템이 일자리 창출의 요건

미국에서 박사 과정을 밟고 있을 때 학부의 프로그래밍 강의를 들어가 본 적이 있다
. 당시만 해도 우리나라의 컴퓨터 환경은 아주 열악했고, PC가 막 사용되기 시작하던 아주 초창기 시절이었다. 프로그램을 마음껏 돌릴 환경 자체가 부족했다. 그러다 보니 프로그래밍 기초가 부실하기도 했거니와, 우리 나라 교육과 어떻게 다른지 궁금하기도 했다.

프로그래밍 실습현장 (article.joins.com)

일단 대학 교수가 아닌 대학의 시스템 관리를 부업으로 하는 대학원생이 강사를 한다는 점이 인상적이었다. 첫 수업 시간, 강사가 강단에 서자 마자 여기저기서 수많은 질문이 쏟아졌다. 어리둥절하던 차에 알게 된 것은 이미 첫 숙제가 이메일로 학생들에게 전달되었고, 쏟아진 질문은 숙제를 하기 위해, 소프트웨어 설계를 위해 필요한 내용이었다. 체계적으로 노트 필기하면서 차분히 정리해 주기를 바라는 것은 아예 기대하기가 어려웠다. 사실 프로그래밍은 규칙이기 때문에 스스로 깨우치는게 맞다는 생각도 든다.

실무적 기초에 대한 훈련은 선택 과목이 아니다

그 과목은 졸업을 위해 필수로 이수해야 했는데, 시험 대신에 7개의 프로젝트를 제출해야 했다. 학기말이 다가올수록 프로젝트는 어려워졌고, 마지막 과제는 여러 명이 팀을 이루어 시연을 직접 해야 함은 물론 방대한 상세 설계서도 제출해야 했다. 이 과목은 매 학기말만 되면 과제를 끝내기 위해 밤새 전산실이 북적거리는 것으로 유명했다.  

무엇보다 가장 인상적인 풍경은 학생들이 강사와 적극적으로 토론을 벌이는 모습이었다.
대화와 토론이 거의 없던 우리 나라 강의와 비교해서 큰 충격을 받았음은 자명하다. 또한 마지막 리포트는 거의 책 한 권에 해당할 만큼 잘 구비되어야 한다. 설계부터 기술문서, 품질 보증 단계까지 한 개의 전반적 프로젝트를 체험하는 교육이었다.

IT 
종사자들에게 프로그래밍은 군인에게 사격과도 같다. 그만큼 IT의 기초이기 때문에 필수 과목인 것이고, 실전에 가까운 무자비한 훈련이 바탕이 되고 있었다. 그러니 졸업생들이 회사에 가도 바로 업무에 투입될 수 있는 것이 아닐까? 채용을 할 때에 프로그래밍 능력에 대해 걱정을 해야 하는 우리의 현실은 안타깝다. 프로그래밍은 기초일 뿐인데..

미국 대학 시스템에서 배워야 할 점

취업이 힘들어진 경제 상황에서도
IT 기업은 원하는 인력을 구하지 못한다는 지적이 많다. IT 인력의 수요 공급의 괴리는 실무적 기초에 기인하고, 그러한 기초는 학부 과정에서 얻게 된다. 그래서, 미국 대학의 꽃은 학부라고 불리운다. 미국적인 것이 반드시 옳다고는 할 수 없지만 실용적인 학부 시스템은 배울만 하다.

학생은 스스로 장래를 결정하기 위해 전공 분야의 기초를 다지고
, 캠퍼스 문화와 인프라를 통해 사회를 간접적으로 체험한다. 필요하다면 근처 전문대학에서 특정 과목을 이수해서 기초를 보강한다. 클러스터 형태의 입체적 교육 시스템이라고 할 수 있다. 어느 대학을 들어 갔느냐가 중요한게 아니라, 얼마나 알차게 자기 자신을 교육시켰느냐에 따라 향후 커리어(career)가 결정된다. 직장에 들어가는 순간 어느 학교 출신인가 하는 것은 전혀 중요하지가 않다. 누구나 동일한 선상에서 스타트하게 되고, 그 이후는 그 사람의 실력에 의해서만 결정되기 때문이다.

산학협력의 현장 (etnews.co.kr)

우리 나라에도 외국 유학을 다녀온 사람이 많지만, 의외로 이런 시스템을 이해하는 사람은 적다. 그 이유는 대부분 대학원 과정에만 다녔기 때문이다. 따라서, 미국에서 공부를 했다고 하더라도 전체 산업 구조가 교육 시스템과 어떻게 맞물려 돌아가는지에 대한 통찰력이 부족할 수밖에 없다.

또한 대학과 산업간의 인적 교류가 적다. 미국의 이공계 대학에서는 교수와 산업체를 오가는 학자들도 많다. 자문 위원 수준이 아니라 아예 풀타임으로 직업을 바꾸는 경우라는 얘기다. 당연히 산업에 대한 이해력이 빠를 수밖에 없다.

반면 우리의 경우는 어떤가? 폴리페서라는 비난을 받으면서도 정치나 관료 사회에는 학자의 참여가 많은 편인데, 산업계와의 교류는 극히 적다. 그나마 중소기업 현장을 배움의 자세로 의욕적으로 찾아 다니는 젊은 교수들을 보면 신선한 느낌이 든다. 열악한 여건에서도 교육의 열정을 보이는 분들이 있기에 희망이 있다.

인재의 경쟁력이 가장 중요한 이유

인재의 경쟁력은 그 나라의 산업과 국가의 경쟁력을 결정한다. 그런 점에서 입체적이고 실용적인 교육 시스템이 절실하다. 대학 교육은 교수의 강의만으로 이루어지는 것이 아니다. 특히 지식기반 시대에는 스스로 깨우치는 교육이 가장 효과적이다. 그런 점에서, 학생들간의 커뮤니티, 각종 아이디어를 실험할 수 있는 분위기, 자유로운 토론이 창의력있는 인재를 양성하는 기반이 된다.

연구 중심의 대학을 표방한다고 한다. 물론 대학에서의 장기적 연구는 매우 중요하고, R&D(연구개발)는 국가의 성장 엔진을 창출한다.  그러나, 한편으로 우리 나라 기업은 잘 훈련된 인력에 더욱 목말라 한다. 따라서 사회 저변을 구성하는 양질의 인력을 육성하는 시스템을 갖추는 것이 시급한 과제다. 그러기 위해서는 주입식 강의보다 자율적 시스템과 실용적 인프라에 초점을 맞추어 접근해야 한다

장기적 R&D도 교수들의 의지 뿐만 아니라 기초 소양이 갖추어진 학생들이 많아야 가능한 것 아닌가? 미국처럼 탄탄한 학부 시스템이 저변에 깔려 있으면 연구 중심이 가능하다. 그러나, 부실한 학부 교육으로는 제대로 된 R&D가 나올 수가 없다. 그래서, 전공 분야의 이론과 실무를 겸비한 기초가 중요하다.

일자리 창출은 경제만 살아나서 달성될 문제가 아니다. 기업이 잘 된다고 해서 바로 국내 일자리로 연결된다고 단정하기 어렵다. 기업들은 양질의 인력을 찾아 글로벌하게 선택할 수 있는 옵션이 있기 때문이다. 따라서, 기업에서 공헌할 수 있는 실력과 소양을 갖추도록, 실용적인 교육 시스템에 투자와 관심을 아끼지 말아야 한다. 

(한국일보 컬럼 기고문에서 활용)
신고


티스토리 툴바