User Tools

Site Tools


선삽

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
선삽 [2010/03/18 13:17]
masya 새로 만듦
선삽 [2010/03/24 00:52] (current)
masya 일단 완성 : 마음에 안 드는 글이 되어버렸다.
Line 2: Line 2:
 > 먼저 구글을 가르쳐라. 질문은 그 다음에도 받을 수 있다. -어느 전산과 학생 > 먼저 구글을 가르쳐라. 질문은 그 다음에도 받을 수 있다. -어느 전산과 학생
  
-**선삽**(先-)은 '삽'이라는 명사에 '선'이라는 접두사를 붙여 만들어진 단어로, 실질적으로는 **삽질**이라는 단어에 접두사를 붙인 뒤 뒷부분이 탈락된 형태라 할 수 있습니다. **앞서 다른 사람이 해놓은 삽질**이라는 의미로, 이전에 누군가가 한 노력, 성취, 깨달음 등을 지칭합니다.+**선삽**(先-)은 '삽'이라는 명사에 '선'이라는 접두사를 붙여 만들어진 단어로, 실질적으로는 **삽질**이라는 단어에 접두사를 붙인 뒤 뒷부분이 탈락된 형태라 할 수 있습니다. **앞서 다른 사람이 해놓은 삽질**이라는 의미로, 이전에 누군가가 한 노력, 성취, 깨달음 등을 지칭합니다. '선삽을 뜨다', '선삽을 파다'와 같은 활용이 있습니다.
  
-인류의 진보는 기록이 생기고부터 가능했다고 하는 말이 있습니다.+인류의 진보는 기록이 생기고부터 가능했다고 하는 말이 있습니다. 기록을 통해서 인간이 한 세대에 쌓은 지식을 다른 세대에 전달하고, 그 세대는 거기에서부터 출발하여 다시 후대에 전달하고... 그런 과정을 통해 진보해왔다는 것이죠. 그런 의미에서 우리는 선구자들의 위대한 삽질의 덕을 받아 생활하고 있습니다. 불편하다고 생각하는 것들, 좀 더 편하게 먹을 것을 구할 수는 없을까, 좀 더 잠자리를 편하게 할 수는 없을까, 어떻게 하면 빠르게 이동할 수 있을까... '문제'들을 어떻게 해결할까 하는 고민, 즉 문제의식이, 그 문제의식에서 출발한 여정이, 그리고 그 여정의 결과가 바로 선삽이라고 할 수 있습니다. 노인을 공경하는 문화도 그분들의 삶의 지혜를 조금이라도 더 안정적으로 얻으려는 극히 경제적인 과정에서 그 근원을 찾을 수 있지 않을까요? 
 + 
 +어떤 것을 알아가는 탐구의 과정에 있어서도, 본격적인 연구에 앞서 선행되는 것이 바로 선구자들이 남긴 흔적을 찾는 것입니다. 어떤 논문이 나왔는지 알아보고, 잘 알 것 같은 선배에게 여쭙고, 도서관에서 (이미 옛것인) 자료를 뒤집니다. 미시적으로 개인의 삶을 보아도 인터넷의 도래, 네이버의 도래, 그리고 구글의 도래와 함께 개인의 삶에서 일어나는 문제 또한 이런 식으로 풀려 하는 사람들이 많습니다. 젊은 세대는 확실히 이것에 적응한 것 같습니다.((이게 노인을 공경하지 않는 이유라면 좀 슬플텐데요.)) 
 + 
 +좀 더 이야기를 구체적으로 줄여 봅시다. 평범한 이공계 대학생이 주어진 [[ko>MATLAB|매트랩]] 프로그래밍 과제를 풀려 합니다. 그러나 예상치 못한 곳에서 오류를 발견합니다. 이 오류는 대체 왜 떴는지 모르겠군요. 하지만 사실 별로 두려운 건 없습니다. 구글에 오류문을 베껴서 검색합니다. 네. 이미 이 오류는 이전에 수십, 수백명이 겪은 오류이고 그 사람들 중 십분의 일이 제작사 포럼에 질문을 올렸습니다. 그런 질문글에 달린 답변을 몇 개 읽어보니 오류가 이해가 되는군요. 문제를 해결했습니다. 네, 이건 정말 자주 일어나는 일입니다. 
 + 
 +이 문제의 초점은 이것입니다 : 당신이 겪는 문제는, 당신이 세상에서 처음으로 겪었을 리가 없습니다. 어딘가에는 반드시 그 문제를 겪은 사람이 있고, 그것을 이용하면 반드시 당신의 노력이 절약될 수 있습니다. 
 + 
 +====== 전산에서의 선삽 ====== 
 + 
 +**선삽**이 매우 중요한 역할을 하는 분야 중 하나가 바로 전산분야입니다. 코드 및 서비스의 재사용 내지는 '갖다쓰기'라는 표현이 지금까지 자주 쓰였던 것 같습니다. 전산분야가 아무리 시대의 최첨단을 달린다고 해도, 결국 대부분의 수요는 현실적인 욕구에서부터 나옵니다. 자료를 저장하고 싶다거나, 누군가와 정보를 교환하고 싶다거나, 뭐 그런 식이죠. 여기서도 결국 사람들은 웬만한 문제를 공유합니다. 괜히 '솔루션'이라는 단어가 통용되는게 아니죠. 
 + 
 +그런데 전산분야는, 의외로 선삽이 제대로 작동하지 않는 분야이기도 합니다. 그 이유는, 전산분야가 시대의 최첨단을 달리기 때문입니다(-_-...). 뭐 현실적인 욕구들이야 한정되어 있습니다. 문제는, 일상생활에서도 그렇지만, 그런 욕구들을 실현시키는 것과 관련된 주변환경에 차이가 난다는 점입니다. 가족끼리 밥을 먹기 위해서 탁자를 사왔습니다. 알다시피 탁자가 들어가는 거실은 집마다 다르죠. 예를 들자면 어떤 집의 거실은 바닥에 경사가 졌을수도 있습니다. 그렇다고 그 바닥에 맞는 탁자를 찾아서 전국을 헤메거나, 그 바닥에 맞는 탁자를 찾지는 않습니다. 그냥 덜그럭대는 다리 밑에 달력 종이를 접어넣으면 될 일입니다. 이건 방법만 가르쳐주면 여덟살짜리 아이도 할 수 있는 일이죠. 프로그램은 그럴 수 없습니다. 이게 전산 선삽의 비극의 원인입니다. 
 + 
 +글쎄, 텔레비전은 어떻냐고요? 텔레비전도 달력 접어서 받치지 않았나요? 아. 다른 애기군요. 텔레비전의 채널 변경 다이얼(요즘 텔레비전엔... 없네요)이 구리다고 다시 납땜질을 하지는 않는다는 얘기네요. 네. 맞는 말입니다. 전자과 대학생은 라디오가 돌아가는 원리를 잘 알지만, 라디오를 직접 만들지는 않습니다.((아, 만들기는 하겠군요. 하지만 웬만하면 그걸 본인이 사용하지는 않습니다.)) 오직 전산과 학생만이 직접 무언가를 만들기 위해 노력하죠. 어디서 이 차이가 어디서 올까요? 바로 생산성의 차이입니다. 전산분야는 무언가가 돌아가도록 만드는 데 걸리는 노력이 매우 적어 보입니다. 이유는, 얄궂게도, 수많은 선삽 때문입니다. 수많은 프로그래밍 언어와 IDE, 프레임워크, 라이브러리는 적당히 장난감을 조합하는 느낌으로 놀다 보면 작동하는 무언가를 뚝딱 만들 수 있게 만드는 마법의 도구입니다. 이것때문에, '선삽'을 무시하고 새로운 무언가를 만드는 것의 비용이 매우 적게 느껴지고, 따라서 많은 사람들이 바닥부터 새로운 것을 짜게 만드는 원동력이 됩니다. 물론 이게 새로운 혁신의 발판이 되기도 한다는 점은 언급해 두겠습니다. 
 + 
 +문제는 이런 경향이 강해짐에 따라, 선삽을 잘 활용하면 좋을 것을 '바닥부터 짠다'고 고집하여 일을 복잡하게 만드는 경우가 왕왕 생긴다는 것입니다. 대학교 수준에서 자주 벌어지는 일인데, '우리가 이래뵈도 컴퓨터공학과인데 보드정도는 만들어서 써야지' 한마디면 설명이 되리라 생각합니다. 실질적인 문제는... 새로 만드는것의 비용이 그렇게 작지 않다는 점입니다. 개인용으로 혼자 쓰고 말 물건이면 모르겠는데, 여러 사람이 사용하는 서비스가 되면, 매우 프로그램이 단순하지 않은 이상, (경험이 있는 사람이라면 동의하실겁니다) 대체 그 사용 형태를 종잡을 수 없습니다. 각종 예상치 못한 입력들이 들어옵니다. 이것은 수많은 버그를 의미하며, 버그가 없다고 하더라도 일정이상의 규모가 되는 프로그램에 있어서 사용성이 극단적으로 떨어지게 됩니다. 다시 말해, 댓글을 쓰고 엔터를 치면 글에 달라붙은 댓글을 보여주는 건 간단하다고 치더라도, 그 댓글이 Ctrl+CV를 통해 엔터가 포함된 글이었을때, 지원하지 않는 인코딩 문자였을 때, 비밀번호가 길이를 초과했을 때, 심지어 SQL 인젝션이 들어왔을 때 등 오만가지 경우를 모두 상정하는 건 매우 힘든 일이라는 거죠. 
 + 
 +바로 이럴 때 선삽을 인정하고 들어가야 할 때입니다. 누군가 다른 사람이 만들고 심지어 지속적으로 관리되는 프로젝트를 가져와 사용할 경우에는 이미 수많은 사용자들의 리포트가 적용된 단단한 코드의 은혜를 누릴 수 있고 설령 안 좋은 부분을 발견하더라도 직접 고칠 필요 없이 제작자에게 알리면 시간 문제입니다(물론 필요에 따라서 고쳐야 할 경우도 있습니다만). 그렇게 번 시간동안 다른 방향에서 서비스를 증진시킬 수 있지 않을까요? 
 + 
 +====== 실제 환경에서의 선삽 ====== 
 + 
 +물론 이 논의는 극히 제한된 논의입니다. 취미수준, 대학수준의 개발에나 적용될만한 이야기죠. 실제 직무로서의 개발에 있어서 이야기는 더 복잡합니다. 제가 잘 아는 분야는 아니므로 생략하겠지만, [[http://korean.joelonsoftware.com/|조엘 온 소프트웨어]]같은 책을 권하고 싶습니다. 확실히 할 수 있는 말은, 좀 더 일반적인 환경에서 선삽은 적용하기 힘들다는 것입니다. 저작권 문제도 있고, 경쟁이라는 문제도 있죠. 아마 조엘이 말했던 것 같은데, 소프트웨어의 핵심 역량이 있는 분야만큼은 절대 갖다 쓰면 안된다 합니다. 그러니까 소스 엔진보다 더 나은 그래픽을 보여주고 싶다면 소스 엔진을 가져다 쓰면 안된단 소리죠. 
 + 
 +[[ko>한게임]]의 게임오븐은 아이두게임이라는 자체 개발 오픈 게임 플랫폼에서 돌아가는 게임을 만들기 위한 통합 개발환경입니다. 취미수준의 개발자에서 슬슬 돈받고 코드짜는 개발자가 되어가는 제 친구는 이렇게 평했습니다.  
 +> 게임오븐 보면, 참 노력을 많이 했다는게 보인단 말야. 그런데도 불구하고 '이건 아니다' 싶은거지. ...차라리 스탠드얼론 대신 [[ko>이클립스]]용 플러그인으로 만들었으면 훨씬 쓸만한게 나왔을 성 싶지 않아? 
 +이 친구는 한게임이 COEX에서 처음 아이두게임을 소개할 때 제일 먼저 행사장에 도착할 정도의 관심을 보인 친구였지만, 그 노력을 높게 평가하면서도 결국 참여하지는 않았습니다. 아마 제일 큰 이유는 게임오븐이었던 것 같습니다. 전 개인적으로 저 의견에 무턱대고 동의하지는 못하겠지만(실제로 비즈니스에서 일어나는 일을 간단하게 평하기 힘들어서) 무슨 말을 하고 싶었는지는 이해할 것 같습니다. 여러분은 어떻게 생각하시나요?
선삽.1268885879.txt.gz · Last modified: 2010/03/18 13:17 by masya