변화의 시대, 프로그래머에게 다가오는 새로운 도전과 선택 [Bottom] [Top]
참고> 이 글은 와우북 의 IT 컬럼에서 퍼왔음을 알려드립니다. |
방세근
영진닷컴 기획자
따분한 일상, 정체되어 있는 시간과 공간, 그 속에 갇혀 있는 나의 모습, 수레바퀴 돌듯 하루하루 반복되는 일과에 몰입되어 가는 나의 모습... 직장인이라면 누구나 한번씩, 아니 자주 느끼는 감정일 것입니다. 제 주변에 있는 프로그래머, 컨설턴트, CEO 로 활동하는 저자들과 IT 업계의 현실 그리고 저자들 각자가 느끼는 한계와 미래에 대한 두려움 등에 대한 이야기를 나누곤 합니다. 안타깝게도 희망적으로 미래를 설계하기 보다는 실무 프로그래머 그 이후의 모습, 경력 관리, 미래에 대한 대비책 등을 쓴웃음 지으며 이야기 하는 경우가 많습니다.
당당하고 사명감 있는 프로그래머로 살아가기 위해 [Bottom] [Top]
'정말 이렇게 힘들어야 하는 것일까?'
IT뿐만 아니라 국가 경제 전체에 대한 자문일지도 모르겠지만, 우리가 일하고 있는 이 IT 분야에서 프로그래머로서 당당하게 그리고 사명감 있게 살아갈 순 없는 것일까 하는 자문을 해보았습니다. 프로그래머라면 누구나 한번쯤은 아니 항상 하는 고민일지도 모르겠습니다. 출판이란 대개 '소통 (Communication)' 이라고 정의를 내립니다. 인간 사이에 교감, 즉 생각, 의견, 사상을 말이 아니 활자를 통해 소통하는 것이라고 생각합니다. 그리고 누구나 읽을 수 있도록 책으로 만들고 그 책을 통해 저자와 독자와 기획자는 생각을 함께 공유하게 됩니다. 책을 읽는다는 것은 한 사람의 생각에 빠져들고 그 사상을 이해하거나 공감하는 것이라고 개인적으로 생각합니다. 그래서 독자들은 돈을 지불하고 서점에서 한 사람의 의식과 사상을 산다고 볼 수 있습니다.
《프로그래머 그들만의 이야기》는 각각의 IT 분야에서 현재 유능하다고 평가되는 열 명의 이야기를 다루고 있습니다. 저자 한 명보다는 열 명의 이야기가 독자들에게 좀더 다양한 정보를 줄 수 있을 것이라고 평가하여 그들을 만나서 어떻게 집필해야 할지를 의논하였습니다. 유능하다는 평가, 성공, 고액 연봉 누구에게나 어필할 수 있는 단어들입니다. IT 각 분야에서 유능하다고 인정받는 이들이 어떤 과정을 거쳐 프로그래머라는 직업을 선택하게 되었고, 어떤 마음가짐으로 일을 하게 되었는지 그리고 그 분야에서 일하기 위해 필요한 기초 지식과 기술들, 현재의 상황, 앞으로의 미래에 대한 준비까지 최대한 꼼꼼히 짚어보려고 노력하였습니다. 그들의 이야기를 통해 프로그래머라는 직업의 '허와 실' 이랄까? 현실과 이상을 알아봅니다. 처음 프로그래머가 되고자하는 이들에게는 직업의 소개 역할을 할 것이고 현직 프로그래머들에게는 다른 프로그래머들의 이야기를 통해 자신의 현재를 진단해보고 미래를 그려볼 수 있는 시간이 될 것입니다.
프로그래머가 가져야 할 자세 [Bottom] [Top]
먼저 프로그래머가 되고자 한다면 무엇이 가장 중요할까요? 대개 실력과 학벌, 논리적인 사고라고 말하겠지만 가장 기본적인 것은 성실과 노력, 열정, 끈기라고 저자 (전병선 씨) 는 말합니다. 먼저 하나씩 알아보겠습니다.
1. 새로운 기술을 습득하려면 영어를 잘해야 한다. [Bottom] [Top]
새로운 기술 쪽으로 한걸음, 한걸음 다가서다 보면 정말로 영어로 쓰여진 원서를 읽지 않으면 안되는 상황이 발생하게 됩니다. 그런데 이 상황에서 나는 '영어엔 원체 까막눈이니까...'하고 포기하게 된다면 그 만큼 많은 기회를 놓치게 되는 것이지요. 결국 원서를 읽을 수 있다면 그래서 새로운 지식을 얻을 수 있게 된다면 그 만큼 많은 기회가 찾아오게 되는 겁니다. 그렇다면 영어를 어느 정도해야 할까요? 사전 찾고 난리 법석을 떨며 하루에 한 페이지 읽을 수 있는 정도라면, 이건 정말 그냥 번역서 보는게 더 속 편할지도 모르겠습니다.
2. 논리적으로 생각할 줄 알아야 한다 [Bottom] [Top]
소프트웨어를 개발한다는 것은 논리적인 작업입니다. 따라서 당연히 논리적인 사고 능력을 갖고 있는 것이 필수적으로 요구됩니다. 요즘 젊은 친구들에게는 무엇이든지 스스로 생각하고 판단해서 행하는 능력이 많이 부족한 것 같습니다. 하긴 어려서부터 어머니가 시키는 대로 따라가기에도 너무 인생이 고달픕니다. 그러다보니 자녀들이 내 힘으로 스스로 판단해서 할 수 있는 것이 많지 않습니다. 그러다보니 요즘 신입 사원으로 들어오는 젊은 친구들에게 일을 주려면 아주 힘듭니다. 처음부터 끝까지 일을 처리하는 방법을 모두 가르쳐주어야만 합니다. 조금만 추상적인 작업을 지시하면 무엇을 해야 할지 몰라 전전긍긍합니다. 공부하는 것부터 그렇습니다. 무조건 따라하기 식의 책이 인기가 많습니다. 그림과 설명을 따라 한 단계씩 따라 하도록 해야 좋은 책이라고 합니다. 그렇게 예제 프로그램을 작성하고는 공부 끝이랍니다. 그 과정 속에서 혹시나 뭘 잘못해서 컴파일러가 에러 메시지를 보여주면 에라! 모르겠다, 배째라! 식입니다. 더 이상 깊이 생각하려 하질 않습니다. 이런 상황에서 좋은 프로그램이 나온다는 것은 그야말로 기적이 아닐 수 없습니다.
3. 가장 중요한 자질은 '끊임없는 성실한 노력'이다 [Bottom] [Top]
그러면 반드시 영어도 잘해야 하고 논리적인 사고나 분석 능력을 가지고 있어야만 개발자가 될 수 있느냐 하면 꼭 그렇지는 않습니다. 사실 영어를 잘하지 못해도 개발자는 될 수 있습니다. 논리적인 사고나 분석 능력이 부족해도 개발자는 될 수 있습니다. 개발자에게 가장 요구되는 것은 "성실과 노력과 끈기"입니다. 이것 하나만 있으면 좋은 개발자가 될 수 있는 모든 것을 갖추고 있는 것입니다. 가령, 영어를 잘하지 못해서 영문 원서를 읽는데 시간이 오래 걸린다고 가정합시다. 영어 사전을 찾고 난리 법석을 떨어야만 하루에 1페이지 정도를 읽을 수 있다고 합시다. 아주 더디고 의미없는 일인 것처럼 생각되어 대부분의 사람들이 포기하고 말 것입니다. 그런데 끈기있게 그리고 성실하게 이 작업을 수행하는 것이 포기하는 것보다는 훨씬 가치가 있는 일입니다.
4. 기초가 중요하다 [Bottom] [Top]
비단 이런 자질들이 개발자에게만 요구되는 것은 아닙니다. 어느 분야에서도 환영받을 수 있는 좋은 자질입니다. 대학 시절에 어느 교수님이 이런 말을 한 적이 있습니다. "어떤 분야든 10년만 노력하면 적성과 관계없이 그 분야의 전문가가 될 수 있다." 이 말씀이 맞는 것 같습니다. 제 경우에는 그 10년 동안 4시간 이상 잠을 자 본 날이 많지 않은 것 같습니다. 그렇게 10년이 지난 후에는 어느새 다른 사람들이 나보고 전문가라고 하고 있더라구요. 물론 많은 다른 분야에서도 마찬가지이긴 합니다만, 특히 전산 분야에서는 실력이 우선하는 듯 싶습니다. 저는 전산을 전공하지 않았습니다. 그럼에도 불구하고 KAIST 대학원에서 박사 과정 친구들을 가리치고 프로젝트를 자문한 적도 있습니다.
5. 다른 사람을 배려하는 마음을 가져야 한다 [Bottom] [Top]
개발자 중에는 다른 사람이 읽기 어려운 코드를 작성하고 그것에 희열(?)을 느끼는 사람들이 꽤 있습니다. 결국 다른 사람들 생각하지 않는 것이지요. 어쩌면 이러한 부류의 개발자들은 자신의 실력과 존재를 부각시키고 자랑하고 싶어하는 경향이 있습니다. 그러나 프로그래밍은 결코 예술 작품을 창조하는 작업이 아닙니다. 언젠가는 내가 작성한 프로그램을 다른 개발자들이 수정해야 할 때가 옵니다. 그것은 필연적으로 업무 로직은 변경되기 때문입니다. 따라서 자신이 작성한 프로그램을 수정해야 하는 다른 개발자들을 위해 가능한 한 이해하기 쉽게 프로그램을 작성해야 할 필요가 있습니다. 최근에 확산되고 있으며 개발 위주의 프로젝트 수행을 주장하는 agile software development 그룹에서도 이점을 강조합니다. 개발자는 다른 개발자들과 잘 협력하는 사람이어야 하며, 프로그래밍 기술이나 재주 보다는 다른 개발자와의 협력이 프로젝트 성공에 더 중요한 요소가 된다는 것이지요.
6. 황금 망치는 없다 [Bottom] [Top]
근래들어 부쩍 어떤 언어를 공부해야 하는 지 문의하는 메일이 많이 옵니다. 요즘 인기있는 프로그래밍 언어로 각광을 받고 있는 C++와 자바, C#, VB.NET 언어 중에서 어떤 것을 공부해야 좋겠느냐는 것이죠. 이 질문의 의도는 제일 좋은 것 하나만 공부하면 되지 않겠느냐는 생각인 것 같은데요, 글쎄 그것이 실제로 실무 필드에 나가서 개발자로 일을 하다보면 여러 가지 상황에 부딪치게 됩니다. 가령 내가 C++ 언어를 좋아하고 프로그래밍을 잘 할 수 있다고 하여도 C++ 언어만 사용하게 되는 경우는 거의 없는 것 같습니다. 오늘까지 C++ 언어를 사용했다고 하더라도 갑자기 자바를 사용하는 새로운 프로젝트가 수주되면 미련없이 C++ 언어를 버리고 자바 언어와 친해져야 합니다. 어쩌면 개발자들은 앞에서 예로든 목수와 크게 다를 바가 없습니다. 목수의 연장통에 자유롭게 사용할 수 있는 연장이 많으면 많을수록 그 연장이 필요한 때 적절하게 사용할 수 있을 것입니다. 톱은 나무를 자르는데 사용하는 연장이지 나무를 다듬는데 사용하기엔 적당하지 않은 것이지요. 나무를 다듬고 싶다면 대패를 사용하는 것이 나을 것입니다. 목수가 사용하는 연장들은 각기 그 쓰임새가 있는 것이지요. 그리고 목수가 자유롭게 사용할 수 있는 연장이 많으면 많을수록 그만큼 일을 할 수 있는 기회는 더 많아지게 됩니다.
7. 열린 마음과 성실성 [Bottom] [Top]
요즘 개발자들이 많이 찾는 웹 사이트의 게시판을 보면 안타까운 일들이 많이 발생합니다. 자기의 생각과 다른 사람들의 의견을 말꼬리를 트집잡아 무차별적으로 비방합니다. 어느 경우에는 인신 공격도 서슴지 않습니다. 이른바 사이버 테러지요. 물론 반대되는 의견도 자유롭게 피력할 수 있어야 합니다. 이 경우에는 논리적으로 설득할 수 있는 것이어야 합니다. '너 몇살인데 까부냐?' 는 식은 아주 곤란합니다. 그 보다는 한번쯤 열린 마음으로 반대 의견을 들어보는 자세가 필요할 듯 합니다. 한 발자국 뒤로 물러서서 열린 마음으로 전체를 바라보는 것도 필요할 것입니다. 이런 열린 마음은 결국 자신을 발전시키게 됩니다.
추천서 [Bottom] [Top]
- SE가 가져야 할 성공 마인드 (박종태, 이비컴)
- 행복한 프로그래밍 : 컴퓨터 프로그래밍 미학 오디세이 (임백준, 한빛미디어)
- 생각하는 프로그래밍 : 프로그래밍 본질에 관한 15가지 에세이 (존 벤틀리, 역-윤성준,조상민, 인사이트)
- 피플웨어 (톰 디마르코, 티모시 리스터, 역-박승범, 매일경제신문사(매경출판(주)))
