목록하고싶은말 (20)
행복한 아빠
얼마전 나가수에서 인순이씨가 7위를 했습니다. 굉장히 실험적인 음악을 했고 그 실험은 결국 방청객들의 좋은 반응을 이끌어내지 못했습니다. 전 그 노래를 들으며 저 실험적인 음악을 충분히 연습했고 나가수 나오기 전에 다른 곳에서 평가를 받아본 적이 있는 상태였었나 물음을 던져보고 싶었습니다. (이미지출처) 인순이씨의 실패 인순이씨의 도전정신은 충분히 본 받아 마땅하지만 시간내서 그 곳에 온 방청객에게, 인순이씨의 노래에 잔뜩 기대하고 온 팬들에게 내놓을 수 있는 노래였는지는 납득하기 어려웠습니다. 혹시 나가수에서 처음 시도한 것은 아닌지... (인순이씨 디스하려는 것 절대 아닙니다. 그 연륜과 위치에서 나가수에 나왔다는 점은 매우 존경합니다.) 임상실험 어떤 약을 연구하고 내놓기 전 반드시 임상실험을 합니..
어디에선가 들은 이야기 한참 공사 중인 공사장에서 세 사람의 인부가 열심히 일하고 있습니다. 지나가던 사람이 그 중 한 인부에게 물었습니다. 이미지출처 무엇을 하고 계십니까? 인부1: (매우 짜증나는 듯) 보면 모르쇼? 벽돌을 쌓고 있지 않습니까? 아이고 이거 언제 끝나려나... 그나 저나 날씨는 뭐 이리 더워 또 다른 인부에게 물었습니다. 인부2: (무덤덤하게) 그야 돈 벌고 있지요. 마지막 인부에게 물었습니다. 인부3: (그의 얼굴에는 행복이 가득 차 있습니다) 하나님께 바칠 성당을 짓고 있습니다. 아마 이 세상에서 가장 멋진 성당이 될 겁니다. 이미지출처 우리의 벽돌쌓기 개발자1: (야근으로 지친 모습으로) 저쪽 시스템과 통신하는 모듈을 코딩하고 있습니다. 이 놈의 요구사항은 또 언제 바뀔지도 모르..
요즘 사용하는 대부분의 컴퓨터는 멀티 태스킹을 지원합니다. 굳이 새삼스럽게 멀티태스킹 이야기를 하는 이유는 요즘 배치작업 관리 설계를 하다가 멀티 프로세스 처리방법과 싱글 프로세스 처리방법에 대한 이야기가 생각나서 글을 적어봅니다. 멀티태스킹이 빠르다? 두 개의 작업이 있을 때 이를 모두 처리하기 위한 시간은 두 개 작업을 병렬도 동시에(2개 프로세스) 처리하는게 빠를까요. 직렬로 하나를 먼저 처리하고 다음 것을 처리하는게 빠를까요. 그냥 이론적으로만 따져볼 때 직렬로 하나의 프로세스로 처리하는게 빠릅니다. 그림의 예를 보시면 작업1, 2 각각 5개의 CPU clock을 필요로 하는 작업이라고 가정합니다. 그리고 수행할 작업을 교체해 주기 위한 스위칭에는 1 clock이 소요된다고 가정합니다. 그러면 두..

결함이 없는 프로그램은 없을 겁니다. 결함이나 버그의 수는 그 소프트웨어의 품질을 좌우하는 요소입니다. 그럼 우리회사의 제품, 또는 현재 수행하고 있는 프로젝트의 시스템에는 얼마나 많은 버그가 있을까요? 우리 프로그램에 얼마나 많은 결함(또는 버그)가 숨어있는지 예측하는 방법을 알아봅니다. 연못에 있는 물고기 수 확실히 알아내기 근처에 물고기가 살고 있는 연못을 상상해 보죠. 이 연못에 살고 있는 물고기는 얼마나 될까요? 이것을 알아내기 위한 확실한 방법은 양수기를 하나 준비하는 것입니다. 그리고 물을 모두 뽑아 내고 물고기를 모두 잡아 그 수를 세어보는 것입니다. 한 사람의 호기심에 의해 희생되는 불쌍한 물고기에 대한 생각은 접어둔다쳐도 이렇게 힘들게 알아내어야 할까요? 우리는 알아내기 힘든 대상에 대..
아래 내용은 제 가족이야기는 아닙니다. 오해하지 마세요~ 착한 아빠 우리 아빠는 마음이 너무 좋습니다. 그래서 친구분들이 많죠. 친구들이 어려움에 처하면 발벗고 나서 도와줍니다. 그래서 간혹 기꺼이 보증도 서곤 하지요. 나쁜 아저씨들은 이런 아빠의 마음도 몰라주고 도망가곤 해서 아빠를 어렵게 만듭니다. 그래도 아빠는 사람좋다는 말에 위안을 삼고 계속 착하게 살아갑니다. 그런데 우리 가족은 좀 힘드네요. 확실히 아빠가 우리 가족을 사랑하시는 것 같기는 한데 말이죠. (이미지출처) 난 착한 PM 저를 좋아하는 고객은 참 많습니다. 고객을 우선으로 하는 저의 마음가짐이 고객을 감동시키는 것 같습니다. 오늘도 고객의 요구사항을 주의깊게 듣고 고객이 원하는 변경사항을 틀림없이 바로 적어갑니다. 우리 팀원들도 고객..
고등학교 2학년 때까지 펑펑 놀다가 고3 들어가기 전 마음잡고 독서실에 들어가 말그대로 공부만 했습니다. 다음의 이야기만 없다면 진짜 하루 20시간 공부만 했다고 자신있게 말했을겁니다. 스톱와치 하나 구해서 공부하는 시간만 측정해 보았습니다. 간단한 식사라도 하면 시간을 멈추고 잠시 머리식힐 때, 5분정도 엎드린 때, 다른 책 가지러 갈때 여하튼 공부하는 시간이 아니라고 판단되는 시간은 모두 빼고 측정해 보았습니다. 결과는 10시간정도였던 것으로 기억합니다. 자신있게 온통 공부에만 집중했고 짧은 시간에 꽤 효과를 보았습니다. 그런데도 기대했던만큼 집중하는 시간이 많이 나오지는 않더군요. 혼자 일할 때 벌어지는 일들 회의를 마치고 오늘 해야할 일을 확실히 하고 근무에 집중하겠다는 마음을 다 잡습니다. 아...
"코드리뷰의 비밀"에서 프로그램밍에서 인지부조화 문제를 해결하기 위한 방법은 상호간의 코드리뷰라고 이야기했습니다. 그러나 여기에 약간의 문제가 있습니다. 많은 개발자들이 자신의 코드에 자아를 투영시키는 경향이 있습니다. 개발자들은 자신이 작성한 코드에 많은 애착을 갖고 자신의 코드에는 자신의 특색을 나타내는 무엇인가가 있다고 느낍니다. 실제 어떤 개발자는 코드만 보고 내 소스인지 금방 파악할 수 있다고 말하고는 합니다. 여기에서 코드리뷰 방법에 문제가 발생합니다. 일반적이 코드리뷰의 목적은 코드에 어떤 문제가 될만한 요소가 있는지 찾는 것입니다. 그런데 다른 사람이 나의 코드에서 문제를 찾는 것이 나에 대한 심판으로 여겨질 수도 있습니다. 이는 협력이 가장 중요한 프로그래밍 작업에서 사람들간의 대립과 불..
가끔 후배들에게 이런 질문을 합니다. 프로그래머가 뭐하는 직업이냐아무런 상황 설명 없이 하는 이런 류의 질문이 사람을 당황하게 하고 짜증나게 합니다. 물론 머뭇머뭇 거리다가 제대로 답하지 않는 경우가 대부분입니다. 꽤 오래 생각해 봐야 할 질문이죠. 특히 자신이 하는 직업일 경우는 더욱 그렇습니다. 프로그래머라는 직업을 가지고 이분야에서 일한지 십수년이 지났네요. 시간이 흐름에 따라 나이도 먹고 직급도 올라가고 거기에 따라 하는 일도 조금씩 달라지게 됩니다. 현재는 이클립스(프로그램 툴)보다 파워포인트가 화면에 떠있는 시간이 더 많아졌지만 나는 아직 "프로그래머"라는 직책을 버리지 않았습니다. 하는 일은 달라졌어도 여태껏 했던 일의 맥은 같다는 걸 알았습니다. (이미지출처) 코드와의 만남 처음 컴퓨터 프..
소프트웨어 분야의 기술들은 정신없이 쏟아지고 있습니다. 저도 제가 관련된 분야에 최신 기술의 최선봉에 있다고 생각했지만 점점 그 기술들을 쫓아가기 벅찹니다. 이제는 클라우딩 컴퓨팅이나 VM 쪽 기술들을 잘 살펴볼 필요가 있네요. 이런 최신 기술들은 현재 산적한 문제들을 풀기 위해 나온 기술들이고 당연히 그 기술을 사용하는 개발자를 행복하게 만들어야 한다고 생각합니다. 그런데 제가 경험한 기술들이 모두 개발자를 행복하게 만든 것 같지는 않습니다. 저를 괴롭히 기술들은 한 번 정리해볼까 합니다. (이미지출처) CORBA (Common Object Request Broker Architecture) 제가 입사해서 처음 만난 환상적인 아키텍처입니다. 한 때 이 기술에 심취해 있었고 OMG에서 주도한 이 기술이 ..
인지부조화 사회심리학자 페스팅거를 필두로 해서 인지부조화(cognitive dissonance)라는 심리현상의 실체를 규명하기 위한 수많은 실험이 행해졌다. 피실험자들에게 자신이 강하게 부정하는 논제를 긍정하는 방향으로 논증하는 글을 쓰도록 한다. 피실험자들을 두 그룹으로 나누고 한 그룹에는 실험 답례로 1달러를 다른 그룹에게는 20달러를 주기로 한다. 실험 후 피실험자의 의견을 다시 조사하여 자신의 의견을 어느 그룹이 더 많이 바꾸었나 보았다. 상식적으로는 20달러를 받은 사람들이 더 열심히 하여 자신의 의견을 바꿀 가능성이 높아 보이지만 반대로 1달러를 받은 사람들이 글을 쓴 후 자신의 의견을 더 많이 바꾸었다.이런 현상을 인지부조화라고 한다. 어느 누구나 자신의 의지에 반하는 일을 하는 것은 매우 ..