나의 프로그래밍 공부법 - 1.2. 컴퓨터를 잘 사용할 수록 좋은 개발자가 될 수 있다!?

2012. 10. 28. 15:03기타/나의 프로그래밍 공부법

이번 내용은 프로그래머라고 입사한 친구들이 자신이 사용하는 컴퓨터에 대해서 잘 모르고 있는 경우가 갈 수록 심해져서, 안따까운 마음에 넣은 내용이다. 개발자라고 해서 반드시 컴퓨터를 잘 알 필요는 없을 수도 있겠지만, 프로그래밍 공부라는 것은 단순히 프로그래밍 언어를 이용한 응용 방법에 대한 공부만을 뜻하지 않는다는 것을 강조하고 싶었다. 


"프로그래밍 공부"는 소프트웨어 프로그래밍을 제대로 잘 하기 위해서 반드시 필요한 부분에 대한 전체적인 공부를 의미한다고 볼 때, 가장 기본이 되는 컴퓨터(하드웨어)에 대한 이해는 가장 기초적이고 필수적인 부분이라고 할 수 있다. 전자계산학 또는 유사 학과를 전공하게 될 때 가장 먼저 배우고, 적지 않은 시간을 투자하여 배우는 학문들 중에 컴퓨터(하드웨어)가 차지하는 비중이 적지 않은 것도 그 때문일 것이다.


마찬가지로, 최근 유행하고 있는 스마트폰 프로그래밍 역시 안드로이드 단말기-안드로이드 OS-Java 프로그래밍, iPhone 단말기-iOS-Object-C 프로그래밍으로 이어지는 하드웨어-운영체제-프로그래밍 언어를 하나의 패키지로 묶어서 공부하는 것이 보다 좋은 프로그래밍 공부법이라고 생각한다.


프로그래머가 반드시 컴퓨터를 잘 알 필요는 없겠지만, 자신이 사용해야하는 PC 사양을 물어올 때 당당하게 "저는 컴퓨터는 잘 모르니 알아서 해주세요"라고 답하는 것에 만족하는지 다시 한번 생각해보자.


---------------------

1.2. 컴퓨터를 잘 사용할 수록 좋은 개발자가 될 수 있다!?


프로그래머에게 “컴퓨터”는 전쟁에 나가는 병사들의 “총”과 같은 생존을 위한 도구이다. 그런데, 그 총의 구조나 원리, 사용법을 제대로 모르면서 전투에서 승리할 수 있겠는가? 따라서, 여러분이 개발자라면 컴퓨터 “하드웨어” 부터 “소프트웨어” 까지 전반적인 사항에 대해서 어느 정도까지는 잘 알고 있는 것이 개발자로써 업무를 수행하는 데 있어서 중요한 요소라고 할 수 있다.


요즘에는 노트북이나 데스크탑 PC의 가격이 워낙 저렴해져서 예전처럼 굳이 부품을 별도로 구입하여 PC를 조립해서 사용하는 경우는 드물 것이다. 필자 역시 5~6년 전부터는 직접 조립을 하기보다는 원하는 사양을 갖춘 PC나 노트북을 구입해서 사용해오고 있다. 그렇기는 하지만, 컴퓨터 전반에 대한 지식을 습득하기 위한 가장 좋은 방법은 자신이 직접 자신에 맞는 컴퓨터 부품을 선택하여 구입하고 그것들을 직접 조립한 다음, 운영체제부터 필요한 어플리케이션 설치까지를 직접 해보는 것이다.


필자도 대학생 시절부터 약 10년간 엄청나게 많은 PC를 조립하고 소프트웨어를 설치하면서 많은 것을 배울 수 있었다. PC 조립의 매력이라고 한다면 부품 하나하나를 자신이 필요로요 하는 용도에 맞으면서 조금이라도 좋은 성능을 내는 것들로 선별하고 다른 업체의 것들과 비교하면서 심사숙고 끝에 결정한 다음, 그것들을 모아서 하나의 PC로 만들어 내는데 있을 것이다. 때로는 의도와는 달리 부품 간의 궁합이 맞지 않아서 예상했던 퍼포먼스가 안 나오는 실패를 할 수도 있지만, 이러한 경험을 축적하다 보면 나중에는 자신에게 맞는 PC 스펙을 만들어갈 수 있게 된다.


여러분이 개발자로 취업을 하게 되면 소프트웨어 프로그래밍 만이 여러분의 주 업무가 되지는 않는다. 전산 담당자가 따로 없는 대부분의 중소기업에서는 개발자들이 사내 시스템 관리나 네트워크 관리를 담당하는 경우가 많다. 신규로 PC를 구매를 위한 스펙 검토 및 구매 품의 하는 것을 개발자들이 처리하기도 하고, 컴퓨터를 잘 모르는 직원들이 자신의 컴퓨터에 문제가 발생했을 때 개발자들의 도움을 받아서 문제를 해결하는 것을 당연하게 생각하는 경우가 많은데, 이럴 때에는 PC 조립 경험은 큰 도움이 될 수 있다.


게다가 컴퓨터 분야는 변화가 빠르고 제품 수명이 짧기 때문에, 항상 주요 트랜드를 알기 위해 노력하는 것이 필요하다. 시간 날 때마다 새로운 기술들에 대한 뉴스 기사나 정보를 찾아보고, 현재 판매되고 있는 PC나 부품들의 스펙 등에 대해서 알아보는 것이 좋다. 직접 사용해보지 않았거나 직접 조립을 해보지 않았더라도 기본적인 배경 지식은 계속 쌓아두면, 그런 지식이 필요한 상황이 되었을 때 곧바로 활용할 수 있는 유용한 정보가 될 수 있기 때문이다.


마찬가지로 개발자 중에는 컴퓨터(하드웨어)를 잘 모르는 개발자들도 있을 수 있다. 한 예로 들자면 주로 웹 개발만 전문으로 하는 웹 개발자들이 그런 경향이 있는 편인데, 웹 개발자들에가 가장 중요한 플랫폼은 “웹 브라우저”이기 때문이다. 일반 사용자들에게 웹 브라우저는 단순히 웹 페이지를 보기 위한 뷰어에 불과하지만, 웹 개발자에게 웹 브라우저는 다양한 종류의 서비스를 만들어서 제공할 수 있는 중요한 플랫폼 역할을 한다. 사실 “웹 브라우저”는 그것을 개발한 업체에 따라서 다양한 특성을 보여주면서 많은 차이를 드러내는 까다로운 플랫폼이다. 따라서, 웹 개발자들은 다양한 종류의 웹 브라우저에서 자신이 만드는 서비스가 정상적으로 동작하도록 하는 것이 가장 중요한 사항이고, 대부분의 웹 브라우저는 운영체제와는 독립적으로 운용이 되기 때문에 웹 개발자들은 컴퓨터 하드웨어나 다른 소프트웨어에 대해서 잘 몰라도 충분히 개발이 가능하기 때문에 이러한 경향을 보일 수 있다.


그러나, 하드웨어나 소프트웨어 전반에 대해서 기본적인 지식을 갖추고 있어야 하는 것은 급격한 시장 변화로 인하여 새로운 플랫폼들이 계속 쏟아져 나오고 있는 요즘과 같은 상황에서는 반드시 필요하다. “아이폰”출시를 계기로 본격적인 스마트폰 시대가 열리면서 성능이 향상된 모바일 단말기가 대중화 되고, 그에 필요한 소프트웨어 개발이 주요 이슈가 되었을 때 누구보다 새로운 플랫폼에 빠르게 적응하여 좋은 실적을 이끌어 낸 개발자들이 바로 기존 플랫폼에 대한 이해도가 높았던 개발자들이었기 때문이다.


따라서 여러분도 단순히 PC나 단말기를 이용만 하는 개발자가 아니라, 자신이 늘 사용한 PC와 운영체제 등 연관된 모든 하드웨어와 소프트웨어에 대한 다양한 상식과 지식을 쌓기 위해 평소에 많은 노력을 해야 한다. 이왕이면 자신이 들고 전쟁터로 나가서 사용해야 하는 총과 총알에 대해서 충분히 잘 알고 있는 것이 전투의 승리 뿐만 아니라 자신의 생존을 위해서는 반드시 필요할 것이기 때문이다.


필자가 어렸을 때만 하더라도 로봇 경연대회는 대학생 형님들만 할 수 있는 엄청나게 대단한 일이라고 생각했었지만, 요즘은 초등학생들도 직접 로봇을 만들어서 대회에 출전하는 시대가 되었다. 로봇 제작은 재미있게 하드웨어를 이해할 수 있고 그에 필요한 소프트웨어 개발을 공부할 수 있는 가장 좋은 방법 중에 하나이다. 굳이 대회에 나가지 않더라도 직접 로봇을 구성하는 하드웨어를 제작하고 그것을 구동시키는 소프트웨어를 개발해본다면 어렵지 않게 하드웨어/소프트웨어에 친숙해질 수 있을 것이다. 또는, 현재 가지고 있는 PC에 안드로이드 운영체제를 포팅하는 프로젝트를 진행해보는 것도 괜찮은 대안이 될 수 있을 것이다.