진단 의학과 디버깅

Posted 2007. 12. 3. 03:30
제가 없는 시간을 쪼개서 즐겨 보는 미국 드라마 중에 하나는 <하우스>입니다. 하우스는 일반적인 의학 드라마와 다르게 의사들 간의 사랑도 없고 병원에서 일어나는 아름다운 휴머니티도 존재하지 않습니다. 다만 원인 모를 병에 걸린 사람이 한 명 실려오는 걸로 시작해서 그 사람이 무슨 병에 걸렸는지를 추적해 나가는 추리물에 가깝습니다.

사용자 삽입 이미지



극중 하우스가 종사하는 분야가 바로 진단 의학입니다. 도저히 원인을 알 수 없는 병에 걸린 환자의 증상을 보고 어떤 병인지를 추측하는데 보통 수 십 혹은 수 백 개의 병명을 떠올립니다. 예를 들어 피를 토하고 열이 높다고 했을 때 말할 수 있는 병은 1-2개가 아니거든요. 진단 의학은 기본적으로 증상을 통해 병명을 나열하고 검사를 통해 리스트를 지워 나가는 방법이 기본입니다.

하우스를 보면서 재미있다고 생각한 것은 소프트웨어 개발자가 디버깅을 하면서 문제를 해결하는 방식과 놀랍도록 똑같기 때문입니다. 시나리오는 보통 다음과 같습니다.

원인을 알 수 없는 버그로 프로그램이 죽거나 이상 동작한다며 버그(환자)가 실려 옵니다. 개발자들은 증상을 보고 가능한 원인(병명)을 리스트합니다. 디버거를 붙이고 코드에 디버깅 메시지를 박아서(MRI, CT 촬영 등) 몇 가지 대안은 원인이 아니라는 사실을 알고 리스트를 지워나갑니다. 지우고 지우다 보니 결국 한 군데 밖에 원인이 안 남은 경우 문제를 해결하게 됩니다.

진단 의학은 기본적으로 경험이 매우 중요한 분야입니다. 기본 소양으로 폭넓은 지식이 기본으로 요구되지만 단순한 지식은 나열은 검사할 수 없는 엄청나게 많은 가능성만을 제시하게 됩니다. 여기서 아닐만한 병명을 빠르게 제거하는 과정이 바로 묘미입니다. 하우스가 제일 잘하는 부분인데, 하우스 부하 의사들이 여러 병명을 말하면 "이런 저런 이유 때문에 절대 아니다"라고 재빨리 말할 수 있는 것이죠.

디버깅의 기술도 유사합니다. 가능성은 많은데, 절대 아닐 만한 리스트를 재빨리 제거할 수 있는 능력은 소프트웨어 개발과 디버깅에 대한 오랜 경험을 요구합니다. 또한 개발 능력과는 조금 다른 순발력을 필요로 하기도 합니다. 소프트웨어 개발 방법론에 관한 책은 많이 있어도 디버깅 방법론에 대해서는 체계화된 방법론이 없는 것도 이런 순발력을 훈련시키거나 일반화하는 방법을 아직 발견하지 못했기 때문입니다.

그래도 소프트웨어 개발자가 하우스에게 배워야 할 점이 하나 있습니다. 병명을 맞추기 전에는 반드시 그 병이 환자의 현재 증상을 초래한 과정을 논리적으로 자세히 설명한다는 것이지요. 소프트웨어 개발자도 버그를 해결하기 전에는 반드시 어떤 과정을 거쳐서 그런 버그가 발생한 것인지를 논리적으로 설명할 수 있어야 합니다. 버그가 일어난 시나리오를 정확히 말할 수 없다면 그 버그를 제대로 알고 있지 못한 것이라고 봐야 합니다.

특히 레이스 컨디션이나 멀티 쓰레드 관련 버그의 경우 완벽한 시나리오 없이 코드를 이래 저래 뜯어 고치다 보면 버그가 사라지는 경우가 있는데, 이렇게 고친 버그는 주기적으로 다시 출몰해서 개발자를 괴롭히는 근원입니다. 여러 가지 검사(메모리 덤프, 디버깅 메시지) 등으로 시나리오를 찾아낸 후에야 버그를 잡을 수 있는 것이죠.

결론은? 소프트웨어 개발자 여러분, 하우스를 봅시다.


  1. Favicon of http://www.jiniya.net BlogIcon codewiz

    | 2007.12.03 10:13 | PERMALINK | EDIT | REPLY |

    글 잘 보고 갑니다.
    재밌네용. ㅎㅎ^^;;

    저는 개인적으로 디버깅이 프로그래밍 관련 기술 중에 가장 직관력을 요구하는 분야가 아닌가하는 생각을 합니다. 종종 그런 능력이 뛰어난 친구들을 보면 경험이 부족해도 원인을 금방 찾아내더라고요.

  2. Favicon of http://kaistizen.net BlogIcon 최재훈

    | 2007.12.03 10:25 | PERMALINK | EDIT | REPLY |

    하우스는 예전부터 꾸준히 보고 있습니다. ^^

  3. Favicon of https://pragmaticstory.tistory.com BlogIcon k16wire

    | 2007.12.03 12:31 신고 | PERMALINK | EDIT | REPLY |

    하우스 한번 봐야겠네요. ^^

  4. Favicon of http://hanjava.net/call-151 BlogIcon 유겸애비

    | 2007.12.03 12:57 | PERMALINK | EDIT | REPLY |

    저도 하우스를 보면서 정말 디버깅이랑 비슷하다고 생각하고 있었습니다. 반가워서 댓글 남깁니다..^^

  5. serahero

    | 2007.12.03 19:24 | PERMALINK | EDIT | REPLY |

    그러고보면 모든 분야에서 분석적인 사고는 꼭 필요한 것 같습니다.

    ㅜ_ㅜ..책 좀 읽어야 겠습니다.

  6. Favicon of https://radiant.tistory.com BlogIcon 마로

    | 2007.12.04 13:13 신고 | PERMALINK | EDIT | REPLY |

    흠.... 하우스 정말 좋아하는 드라마인데..
    디버깅과 유사하다고는 생각을 못해봤네요 +_+!

    항상 드라마를 볼땐 드라마로만 끝나서 그런가. ㅠ_ㅠ

  7. Favicon of http://wafe.kr/ BlogIcon wafe

    | 2007.12.06 08:27 | PERMALINK | EDIT | REPLY |

    저도 친구에게 전해 듣기로는 휴먼 드라마 분위기가 물씬 풍기길래 거부하고 있었는데 이렇게 흥미있는 해석도 있군요! ^^

    얼핏 듣자니 이번에 파업인가 해서 드라마들이 줄줄이 조기 방영 중단 된다던데 하우스는 영향이 없을까요?

  8. 아이힌트

    | 2007.12.07 04:58 | PERMALINK | EDIT | REPLY |

    개념적으로는 생각을 하지만 막상 제대로 이렇게 생활을 못한다는게 참 난감한거 같아요... 역시 돌팔이와 1류 의사와의 차이일까요 ㅠ.ㅠ
    명세화 참 말은 쉬운데 제대로 하기가 여러운거 같아요 ㅠ.ㅠ

  9. Favicon of http://www.hybrid.pe.kr/tt BlogIcon Hybrid

    | 2007.12.07 19:28 | PERMALINK | EDIT | REPLY |

    저는 ER 팬인데..... 하우스도 의학 드라마라길래 1편을 봐봤지만...
    그다지 코드가 맞지 않아서 그만 봤습니다.
    그런데 다시한번 보고 싶어지네요. 글을 읽으면서.... 아, 그랬었지... 생각이 이제서야 드는거 보니까 너무 짧게 맛만 본거 같네요. ㅎㅎ

  10. Favicon of http://wish95.tistory.com BlogIcon 위시

    | 2009.06.06 13:17 | PERMALINK | EDIT | REPLY |

    저도 하우스를 보며
    비슷한 생각을 가지고 있었는데..
    이런글을 보게되었네요.. ^^

  11. 우어

    | 2012.09.01 02:32 | PERMALINK | EDIT | REPLY |

    저도 하우스란 드라마를 보면서 하우스 의사가 의사보다 프로그래머처럼 보인다고 생각하다 이런 글을 보니 공감이 가는군요

  12. 우어

    | 2012.09.01 02:33 | PERMALINK | EDIT | REPLY |

    저도 하우스란 드라마를 보면서 하우스 의사가 의사보다 프로그래머처럼 보인다고 생각하다 이런 글을 보니 공감이 가는군요

Write your message and submit
« PREV : 1 : ··· : 66 : 67 : 68 : 69 : 70 : 71 : 72 : 73 : 74 : ··· : 244 : NEXT »