2005년 09월 22일
[개발] [1] 폭로! 함수가 소프트웨어의 부품이 될 수 없었던 이유
오랜만에 소프트웨어 개발 관련 글을 올립니다. 일전에 쓰기로 약속한 글이라서요.
첫번째... 소프트웨어란 무엇인가?
일단, 예전에 써둔 글을 링크해 둡니다.
우리는 앞서 프로그램이란 무엇인가에 대해서 간단히 정리해 보았다. 그리고, 소프트웨어라는 것은 하드웨어를 동작시키기 위한 명령의 집합이라는 것을 이해할 수 있었으며, 이제 소프트웨어의 정체에 대해서 보다 깊이 있는 이야기를 전하고자 한다.
사람들이 소프트웨어를 대하는 방식은 대게 둘 중에 하나이다. 소프트웨어를 사용하는 것과 그것을 만드는 것이다. (물론, 양측에 모두 속하는 사람도 있을 것이다.)
이 글을 읽는 당신은 분명 소프트웨어를 사용해 보았을 것이다. 그렇기 때문에, 소프트웨어를 제작하고 싶다라고 생각하게 되었을 것이고, 소프트웨어를 만드는 일에 호기심과 미지에 대한 희열을 미약하게 느끼고 있었을 것이다. 마치 놀이동산의 롤러코스터를 타기 위해서 기다리는 아이처럼 말이다. 이 글을 읽고 있다면 당신은 소프트웨어를 사용하는 것보다 소프트웨어를 만드는 것에 관심이 더 있을 것이라고 여겨진다.
하지만, 본론에 들어가기에 앞서 약간 다른 이야기를 나누고 싶다. 어쩌면, 당신은 소프트웨어를 만드는 과정에 대해서 오해를 지니고 있지 않을까?
소프트웨어를 만드는 일에 대해서 일반인 혹은 학생들이 가장 많이 오해하는 점은 그 과정이 아주 활기차고(energetic), 탁월하며(excelent), 즐거운(exciting) 일이라고 생각한다는 것이다. (이건 사람들이 벤쳐 소프트웨어 업계를 상상하는 보편적인 편견이다.) 혹은, 약간은 어두운 방에서 모니터를 응시하며 – 어쩌면 하얀 가운을 두르고 – 두꺼운 뿔테 안경을 쓰고, 낮밤 없이 키보드를 두드리는 연구원을 생각한다.
이런 오해의 대부분은 헐리우드 영화에 기인한다. 그들은 소프트웨어 개발자를 과거 중세 시절의 기사 혹은 마법사 그리고, 연금술사와 비슷한 위치에 놓기를 좋아한다. 그래야 관객의 흥미를 높이고, 객석이 꽉차서 돈을 더 벌 수 있기 때문이리라.
키아누 리브스가 주연한 매트릭스에서는 상상만 하면 수천가지 무기가 나타나고, 건물을 뛰어넘는 수퍼맨이 되며, 사람을 부활시키는 초인까지 된다. 심지어 아키텍트(architect)라고 하는 가상의 존재 –그 자신이 소프트웨어이다 - 는 모든 인간의 운명까지 좌우한다.
정말 멋진 일이다, 그리고 소프트웨어 개발자가 위대하게 느껴지기까지 한다. 하지만, 영화가 끝나고 영화관을 나선 후 일상에서는 어떤가? 사람들은 매일 프로그램 버그로 인해서 웹 서핑하다 멈추는 일을 겪고, 온라인 게임을 하다가 아이템을 분실하고, 철야하면서 만든 문서가 사라지기까지 한다. 아, 프로그래머들은 ‘공공의 적’인 것이다. 불완전한 소프트웨어를 비싸게 팔아먹는 부도덕한 인간들이다. MS의 별명이 M$라는 이야기를 들어본적 있는가?
불쌍한 프로그래머들. 그들은 때로는 연금술사로, 동시에 악의 마법사들로 오해받는 사람들이다. 사실 프로그래머는 평범한 이웃이며, 직장인일 뿐이다. 그들도 상사에게 굽신대며, 촉박한 일정에 맞추기 위해 야근하며, 삼겹살에 소주를 들이키며 박봉의 직장 생할을 참아내는 사람들이다.
고대 이집트에서 피라미드를 파라오의 한 마디에 수만, 수십만의 사람들이 수십, 수백톤에 달하는 돌들을 쌓아올리는 과정을 상상해보라. 대규모 소프트웨어는 현대의 피라미드와도 같다고 할 수 있다. 빌 게이츠라는 MS의 수석 아키텍트이 의사결정에 따라 수천, 수만 소프트웨어 프로그래머들의 몇 년에 걸쳐 만들어내는 것이 Windows XP인 것이다. 프로그래머는 알고 보면, 파라오가 아니라 거대한 돌들을 쌓아올리는 사람들이라는 것이다. (물론, 과거와는 달리 현대의 프로그래머 중에는 엄청난 스톡옵션으로 부자가 된 사람들이 많다. 하지만 여전히 99.9%의 개발자는 충분한 보상을 받지 못하는 것도 현실이다.)
너무 어두운 면만을 강조하려는 것은 아니다. 다른 시각으로 소프트웨어의 의미를 생각해보도록 하자. 소프트웨어가 없는 세상을 상상해 볼 수 있는가? 당장 전기가 끊어지고, TV 그리고 라디오 방송도 나오지 않으며, 수돗물이 끊기게 될 것이다. 휴대폰과 모든 유선 전화가 끊기고, 비행기가 이착륙하지 못할 것이다. 은행에서 예금을 인출할 수도 없고, 대형 할인점에서 물건을 살 수도 없다. (미국 대통령이라도 소프트웨어가 없으면 핵무기를 발사하지 못한다.)
현대는 소프트웨어가 없이는 존재할 수 없는 것이다. 매트릭스라는 영화는 현실을 반영한 것이다. 미래가 아니라 바로 지금 이 순간인 것이다. 모든 소프트웨어 개발자가 사라지는 순간 문명은 사라지고 만다. 심지어 전쟁도 걸어가서 칼로 찌르며 싸우는 육탄전으로 회귀할 것이다. 소프트웨어 프로그래머는 현대 문명을 지탱하는 가장 중요한 기둥들인 것이다.
자, 이제 당신 마음의 거품은 지워졌을 것이다. 소프트웨어는 번뜩이는 아이디어를 가지고 하루 밤만에 키보드를 두들겨 만들어내는 것이 아니다. 이것은 거대한 건물을 만드는 일과 같다. 위험한 일도 많고, 실패하는 경우도 많다. 그래도, 소프트웨어를 제작하고 싶은가? 이제, 어떻게 소프트웨어를 만들어내는지 그 상세한 절차에 대해서 설명하려고 한다.
첫번째... 소프트웨어란 무엇인가?
일단, 예전에 써둔 글을 링크해 둡니다.
우리는 앞서 프로그램이란 무엇인가에 대해서 간단히 정리해 보았다. 그리고, 소프트웨어라는 것은 하드웨어를 동작시키기 위한 명령의 집합이라는 것을 이해할 수 있었으며, 이제 소프트웨어의 정체에 대해서 보다 깊이 있는 이야기를 전하고자 한다.
사람들이 소프트웨어를 대하는 방식은 대게 둘 중에 하나이다. 소프트웨어를 사용하는 것과 그것을 만드는 것이다. (물론, 양측에 모두 속하는 사람도 있을 것이다.)
이 글을 읽는 당신은 분명 소프트웨어를 사용해 보았을 것이다. 그렇기 때문에, 소프트웨어를 제작하고 싶다라고 생각하게 되었을 것이고, 소프트웨어를 만드는 일에 호기심과 미지에 대한 희열을 미약하게 느끼고 있었을 것이다. 마치 놀이동산의 롤러코스터를 타기 위해서 기다리는 아이처럼 말이다. 이 글을 읽고 있다면 당신은 소프트웨어를 사용하는 것보다 소프트웨어를 만드는 것에 관심이 더 있을 것이라고 여겨진다.
하지만, 본론에 들어가기에 앞서 약간 다른 이야기를 나누고 싶다. 어쩌면, 당신은 소프트웨어를 만드는 과정에 대해서 오해를 지니고 있지 않을까?
소프트웨어를 만드는 일에 대해서 일반인 혹은 학생들이 가장 많이 오해하는 점은 그 과정이 아주 활기차고(energetic), 탁월하며(excelent), 즐거운(exciting) 일이라고 생각한다는 것이다. (이건 사람들이 벤쳐 소프트웨어 업계를 상상하는 보편적인 편견이다.) 혹은, 약간은 어두운 방에서 모니터를 응시하며 – 어쩌면 하얀 가운을 두르고 – 두꺼운 뿔테 안경을 쓰고, 낮밤 없이 키보드를 두드리는 연구원을 생각한다.
이런 오해의 대부분은 헐리우드 영화에 기인한다. 그들은 소프트웨어 개발자를 과거 중세 시절의 기사 혹은 마법사 그리고, 연금술사와 비슷한 위치에 놓기를 좋아한다. 그래야 관객의 흥미를 높이고, 객석이 꽉차서 돈을 더 벌 수 있기 때문이리라.
키아누 리브스가 주연한 매트릭스에서는 상상만 하면 수천가지 무기가 나타나고, 건물을 뛰어넘는 수퍼맨이 되며, 사람을 부활시키는 초인까지 된다. 심지어 아키텍트(architect)라고 하는 가상의 존재 –그 자신이 소프트웨어이다 - 는 모든 인간의 운명까지 좌우한다.
정말 멋진 일이다, 그리고 소프트웨어 개발자가 위대하게 느껴지기까지 한다. 하지만, 영화가 끝나고 영화관을 나선 후 일상에서는 어떤가? 사람들은 매일 프로그램 버그로 인해서 웹 서핑하다 멈추는 일을 겪고, 온라인 게임을 하다가 아이템을 분실하고, 철야하면서 만든 문서가 사라지기까지 한다. 아, 프로그래머들은 ‘공공의 적’인 것이다. 불완전한 소프트웨어를 비싸게 팔아먹는 부도덕한 인간들이다. MS의 별명이 M$라는 이야기를 들어본적 있는가?
불쌍한 프로그래머들. 그들은 때로는 연금술사로, 동시에 악의 마법사들로 오해받는 사람들이다. 사실 프로그래머는 평범한 이웃이며, 직장인일 뿐이다. 그들도 상사에게 굽신대며, 촉박한 일정에 맞추기 위해 야근하며, 삼겹살에 소주를 들이키며 박봉의 직장 생할을 참아내는 사람들이다.
고대 이집트에서 피라미드를 파라오의 한 마디에 수만, 수십만의 사람들이 수십, 수백톤에 달하는 돌들을 쌓아올리는 과정을 상상해보라. 대규모 소프트웨어는 현대의 피라미드와도 같다고 할 수 있다. 빌 게이츠라는 MS의 수석 아키텍트이 의사결정에 따라 수천, 수만 소프트웨어 프로그래머들의 몇 년에 걸쳐 만들어내는 것이 Windows XP인 것이다. 프로그래머는 알고 보면, 파라오가 아니라 거대한 돌들을 쌓아올리는 사람들이라는 것이다. (물론, 과거와는 달리 현대의 프로그래머 중에는 엄청난 스톡옵션으로 부자가 된 사람들이 많다. 하지만 여전히 99.9%의 개발자는 충분한 보상을 받지 못하는 것도 현실이다.)
너무 어두운 면만을 강조하려는 것은 아니다. 다른 시각으로 소프트웨어의 의미를 생각해보도록 하자. 소프트웨어가 없는 세상을 상상해 볼 수 있는가? 당장 전기가 끊어지고, TV 그리고 라디오 방송도 나오지 않으며, 수돗물이 끊기게 될 것이다. 휴대폰과 모든 유선 전화가 끊기고, 비행기가 이착륙하지 못할 것이다. 은행에서 예금을 인출할 수도 없고, 대형 할인점에서 물건을 살 수도 없다. (미국 대통령이라도 소프트웨어가 없으면 핵무기를 발사하지 못한다.)
현대는 소프트웨어가 없이는 존재할 수 없는 것이다. 매트릭스라는 영화는 현실을 반영한 것이다. 미래가 아니라 바로 지금 이 순간인 것이다. 모든 소프트웨어 개발자가 사라지는 순간 문명은 사라지고 만다. 심지어 전쟁도 걸어가서 칼로 찌르며 싸우는 육탄전으로 회귀할 것이다. 소프트웨어 프로그래머는 현대 문명을 지탱하는 가장 중요한 기둥들인 것이다.
자, 이제 당신 마음의 거품은 지워졌을 것이다. 소프트웨어는 번뜩이는 아이디어를 가지고 하루 밤만에 키보드를 두들겨 만들어내는 것이 아니다. 이것은 거대한 건물을 만드는 일과 같다. 위험한 일도 많고, 실패하는 경우도 많다. 그래도, 소프트웨어를 제작하고 싶은가? 이제, 어떻게 소프트웨어를 만들어내는지 그 상세한 절차에 대해서 설명하려고 한다.
# by | 2005/09/22 10:42 | Development | 트랙백(1) | 덧글(5)





제목 : (2) 일본 시장의 형성 과정에서 보는 한국 시장의..
샤프의 MZ-80 시장이 이렇게 형성되기 시작하자 아키하바라 같은 전자 상가 지대를 중심으로 하드웨어뿐 아니라 소프트웨어를 판매하는 가게도 생겨나기 시작했다. 하지만 역시 하드웨어를 중심으로 판매하는 가게였기 때문에 소프트웨어라는 것은 서비스 정도로 생각한 것에 지나지 않았던 모양이다. 그런데, 그런 곳 중에서도 앞으로 다가올 큰 시장에 대한 안목이나 게임이라는 컨텐츠가 지니게 될 시장성이라는 것에 눈을 뜬 곳도 있었다. 그 중......more
뒷이야기가 궁금해지네요 ^-^;;;