전 IT 엔지니어 변호사가 설명하는 계약서 검토와 디버깅의 유사성
![전 IT 엔지니어 변호사가 설명하는 계약서 검토와 디버깅의 유사성](https://monolith.law/ko/wp-content/uploads/sites/10/2023/11/shutterstock_1454603228-scaled.jpg)
일명 ‘회사의 고문 변호사’의 업무 중심은 회사가 매일 클라이언트나 업무 제휴처 등과 체결하는 계약서의 검토 및 수정입니다. 그리고 이러한 검토와 수정은 반드시 ‘법률과 그 업무 분야에 능통한 사람’이 아니면 충분히 수행할 수 없습니다. 왜 그런지에 대한 설명을 드리겠습니다.
그러나, 아래의 설명은 엔지니어나 프로그래밍 경험이 있는 분이 아니면 이해하기 어려울 것으로 생각됩니다. 모노리스 법률사무소는 전 IT 엔지니어이며 기업 경영 경험이 있는 변호사가 대표를 맡는 법률사무소입니다. 결국, ‘전 IT 엔지니어·기업 경영자가 대표를 맡는 법률사무소로서, 엔지니어나 프로그래밍 경험이 있는 경영자를 대상으로, 계약서 검토·수정에 대해 설명하는 기사’라는 위치입니다.
그리고, 이 위치를 기반으로, 계약서의 검토와 수정은 일명 ‘디버깅’에 가까운 작업입니다.
- 우선 ‘버그’란 무엇인가
- ‘디버깅’은 어떤 작업인가
- 계약서는 어떻게 알고리즘을 규정하는가
- 계약서의 수정은 어떤 작업인가
라는 순서로, 따라서 엔지니어 분들에게는 ‘당연한’ 이야기부터 시작하지만, 아래에 설명하겠습니다.
「버그」와「디버그」란 무엇인가
버그는 ‘PC의 고장’이 아니다
‘버그’라고 하면, PC에서 작업을 하다가 기계에서 연기가 나오고 화면이 이상하게 표시되는… 등의 이미지를 가지고 있는 분도 계실지 모릅니다. 그러나, PC는 기본적으로 ‘말한대로’의 동작만을 합니다. 이는 버그가 발생하는 경우에도 마찬가지입니다. 즉, ‘버그’란,
- PC는 말한대로의 동작을 하고 있음에도 불구하고
- 위탁자에게 그 동작이 ‘예상치 못한 행동’인 경우
라는 현상입니다.
‘예상치 못한 행동’은 왜 발생하는가
예를 들어, 마리오형 액션 게임에서의 ‘벽 통과’ 버그에 대해 생각해봅시다.
마리오의 점프는 2차 함수입니다. 가속도, 속도, 좌표. 그러나, 일반적인 2차 함수라면, 예를 들어 ‘X=1.76582일 때 Y는?’과 같이, X를 무한히 세밀하게 나눌 수 있지만, TV 게임의 경우, 시간을 무한히 세밀하게 나눌 수 없습니다. 화면은 초당(예를 들어) 30번밖에 바뀌지 않기 때문입니다. 따라서, 마리오는 초당 30번 ‘워프’를 하는 것이라고 할 수 있습니다.
이에 대해, 예를 들어, ‘마리오가 점프하면 위에 벽이 있어서 튕겨 나오는’ 경우는 어떤 경우인지 생각해봅시다.
- 이전 순간에는 마리오가 공중에 있었는데
- 다음 순간에는 마리오의 좌표가 벽 안에 있게 된다
라는 경우입니다.
![](https://monolith.law/wp-content/uploads/2019/09/contractcheck1-1024x600.png)
이런 경우, ‘마리오가 점프 중에 위쪽 벽에 부딪혔다’고 판단할 수 있습니다. 따라서, 자연어로 표현하면
만약 마리오의 좌표가 벽 안에 있다면, 튕겨 나오는 처리를 한다(※1)
라는 프로그램을 작성하면, ‘마리오가 점프하면 위에 벽이 있어서 튕겨 나오는’ 처리를 실현할 수 있습니다.
※1은, 위와 같이 쓰는 한, 올바르게 보입니다. 그리고 실제로, ‘일정한 조건에서는’ 이 처리는 올바릅니다.
그러나, 자세히 생각해보면, 아래와 같은 경우도 있을 수 있습니다(※2).
![](https://monolith.law/wp-content/uploads/2019/09/contractcheck2-1024x638.png)
이 경우, ‘마리오의 좌표가 벽 안에 있다’는 순간은 존재하지 않으므로, 따라서 튕겨 나오는 처리가 이루어지지 않고, 마리오는 벽을 통과하게 됩니다.
이것이 ‘버그’의 예입니다. 이런 이유로 ‘벽 통과 버그’가 발생했다 해도, PC가 고장난 것은 아닙니다. PC는 말한대로의 동작만을 하고 있을 뿐, 그 동작을 ‘예상치 못한 것이다’, ‘버그다’라고 평가하는 것은 사람입니다. 그리고 그 ‘버그’는, 알고리즘이 적절하지 않기 때문에 발생하고 있습니다.
‘예상치 못한 동작이 발생할 것인가’를 검토하는 것
그러나, 실제로 게임을 즐기는 과정에서 위의 ‘벽 통과’가 발생할지 여부는, 위와 같이 추상적으로 생각하는 것만으로는 알 수 없습니다. ‘벽 통과’가 발생할 수 있는지 여부는,
- 마리오의 점프력(초속)은 얼마나 되는지, 점프력 업 같은 아이템이 있는지
- 벽은 가장 얇은 경우 얼마나 두껍게 되는지
라는 조건에 따라 달라집니다. 이들 조건에 따라, ※2와 같은 경우가 있을 수 있는지 여부,라는 것입니다. ※2가 없다면, ※1의 프로그램은 별 문제가 없다고 할 수 있습니다.
‘디버그’란 어떤 작업인가
따라서, ‘디버그’, 즉, 버그를 찾아내고, 그것을 수정하는, 작업을 수행하기 위해서는,
- 프로그램이 어떤 알고리즘인지 읽어내는 것(위의 ※1은 자연어이지만, 실제로는 프로그램이 독자적인 언어로 작성되어 있으므로, 읽는 것 자체가 어렵다)
- 그 프로그램이 어떤 조건 하에서 동작하는 것인지를 검토하는 것(점프력이나 벽의 두께에 대해 조사한다)
- 그 때 예상치 못한 동작이 발생하지 않는지 검토하는 것
이라는 과정이 필요하게 됩니다.
계약서 검토란 어떤 작업인가
![](https://monolith.law/wp-content/uploads/2019/09/shutterstock_334043420-1024x684.jpg)
계약서 검토 역시 이와 비슷한 작업입니다. 계약서란, 그 당사자인 가와 나에 대해, 미래에 발생할 수 있는 사건을 예상하고, 그 때 가와 나에게 어떤 권리나 의무가 발생하는지, 그 결과 양측이 어떻게 행동하게 될 것인지 등을 규율하기 위한 것이며, 그 의미에서 ‘현실 세계를 규율하는 프로그램’이라고 할 수 있습니다. 예를 들어,
●●라는 상황이 발생한 경우, 가는 나에게 100만 엔을 배상한다.
와 같은 규율을 하는 계약서는, 미래에 발생할 사건에 대해, 조건과 효과를 정의하고 있는 것입니다.
그리고 그 ‘현실 세계를 규율하는 프로그램’에 대해 문제가 없는지 검증하고, 문제가 있는 경우 수정하는 작업은, 어쩔 수 없이 ‘디버깅’과 유사한 것이 됩니다.
계약서에는 알고리즘의 전체가 기재되어 있지 않다
그러나 ‘계약’이라는 것에는 법률 전문가가 아닌 사람들에게 알기 어려운, 그러나 매우 중요한 한 가지 포인트가 있습니다. 계약서는 그 당사자 간을 규율하는 알고리즘의 ‘일부’만을 규정하는 것이라는 포인트입니다. 다시 말해, 계약서를 읽는 것만으로는, 자신과 상대방이 어떤 알고리즘에 따라 규율되는지, 그 전체를 알 수 없다는 것입니다.
예를 들어, 가게에서 중고 CD를 구입하는 경우, 가게와 고객은 ‘매매 계약서’ 같은 것을 체결하지 않지만, 그러나 구입한 CD의 판면에, 플레이어에서 재생할 수 없는 상처가 있으면, 가게에 불만을 표시하고 싶어지며, 가게는 그에 대응해야 한다고 기대할 것입니다. 이것은 ‘서비스 업종이기 때문에’라는 수준의 이야기가 아니라, 이론적으로는,
- 계약서가 없어도, 매매 계약은 체결되어 있다
- 민법은, 중고 CD 등(‘특정물’이라고 합니다)의 매매 계약에 대해, 판매자에게는 하자 보증 책임이 발생한다는 것을 규정하고 있다
- 따라서, 민법이 정하는 알고리즘이 가게와 고객 사이에서 작동하고 있으며, 가게는 하자 보증 책임을 부담한다
라는 논리입니다. 그리고 ‘계약서’란, 민법 등의 법률이 정의하는 알고리즘을 덮어쓰는 것입니다. 예를 들어, 가정하자면 가게와 고객 사이에서 ‘저희 가게는 CD의 모든 결함에 대해 사후적인 클레임을 받지 않는다’는 계약서 등이 교환되어 있는 경우에는,
- 매매 계약이 체결되어 있다
- 민법은, 해당 계약에 대해, 판매자에게는 하자 보증 책임이 발생한다는 것을 규정하고 있다
- 그러나, 계약서의 규정에 따라, 2의 원칙이 덮어쓰여 있으며, 가게에는 하자 보증 책임이 발생하지 않는다
라는 것입니다.
계약서는 민법 등의 원칙을 ‘덮어쓰는’ 것
![](https://monolith.law/wp-content/uploads/2019/09/shutterstock_336766328-1024x702.jpg)
이는 시스템 개발 등, 기업 간에 체결되는 계약의 경우에도 마찬가지입니다. 예를 들어, 기업 간에 위탁형 시스템 개발 계약서가 체결되어 있는 경우,
- 해당 계약서를 체결함으로써 명확하게 위탁 계약이 체결되어 있다
- 위탁 계약의 경우, 민법의 규정에 따라 수탁 측에 하자 보증 책임이 발생한다
- 만약 계약서에 하자 보증 책임의 규정이 있다면, 그 규정이 민법 원칙을 덮어쓴다. 예를 들어, 민법 원칙보다 긴 기간의 하자 보증 책임 조항을 설정해 놓으면, 그 기간의 규정이 유효하게 된다
라는 구조가 됩니다. 즉, 예를 들어, 계약서에 특별히 하자 보증 책임에 관한 규정이 없어도, 하자 보증 책임은 발생한다는 것입니다.
이는 위탁이나 시스템 개발 등에 한정된 이야기가 아니라, 주식 양도, 빚을 통한 자금 조달(소비대차), 고용, 주식 발행 등, 기업이 하는 모든 계약에 관한 일반론입니다.
따라서, 계약서를 읽는 것만으로는, 상대방과 자사의 관계를 규율하는 ‘알고리즘’의 전체를 파악하는 것은 불가능합니다. 그 전체를 파악하기 위해서는 ‘민법 등의 법률이 정하는 기본 알고리즘’을 이해해야 합니다. 계약서는 결국 그 ‘기본 알고리즘’을 덮어쓰는 것에 불과하기 때문입니다.
미래에 발생할 수 있는 사건을 예상하지 못한다면 ‘디버깅’은 불가능하다
또한, 알고리즘을 이해하는 것만으로는, ‘해당 알고리즘으로 예상치 못한 동작이 발생하지 않을 것인가’라는 점을 검증하는 것은 불가능합니다. 게임의 ‘버그’와 마찬가지로, 알고리즘은 결국 추상적인 것이며, 미래에 어떤 사건이 발생할지 예상하지 않으면, ‘그런 사건이 발생했을 때 예상치 못한 동작이 발생하지 않을 것인가’를 검증하는 것이 불가능하기 때문입니다.
이는 특히, 새로운 앱이나 서비스 등의 제품, 새로운 비즈니스 스키마 등의 경우에 중대한 문제가 될 수 있습니다. 그런 제품이나 스키마로 사업을 전개했을 경우, 미래에 어떤 일이 발생할 수 있는지를 예상하는 것은 해당 분야에 대한 지식이 없으면 어렵습니다. 또한, 특히 기업 간 계약의 경우, 상대방 기업도 자사도 일정한 경제적 합리성 하에서 행동하게 되므로, 미래의 사건, 그것을 초래하는 상대방의 행동 예측을 위해서는 기업 경영에 관한 게임 이론적인 사고도 필요하게 됩니다.
「예상치 못한」 여부는 경영 판단에도 기초한다
더욱이, 어떤 사건을 ‘버그’로 판단하는 것이 PC가 아닌 사람인 것처럼, 계약서가 가져다주는 어떤 결과가 ‘예상치 못한’ 것인지를 판단하는 것도, 순수한 법률 문제가 아니라 경영 판단적인 문제입니다.
예를 들어, ‘일본 민법 원칙에 따른’ 알고리즘이 어떤 기업의 어떤 사업에서는 수용할 수 없는 경우가 실제로 있을 수 있습니다. 여기까지의 예와 이야기가 달라지지만, 예를 들어, 일본 민법은 위탁 계약에 대해 ‘위탁자에 의한 재위탁은 계약 위반’이라는 기본 알고리즘을 규정하고 있습니다. 그러나 예를 들어, ‘어떤 회사에게 어떤 사업은 당연히 하청업체를 사용하는 것이 예상되는 것’이라는 경우가 있습니다. 그런 경우에, 재위탁이 불가능한 계약, 즉
- 재위탁 가능 여부에 대해 아무 것도 명시하지 않은 경우 (이 경우, 위에서 언급한 바와 같이, 일본 민법 원칙이 적용됩니다)
- 재위탁이 불가능하다는 것이 명시되어 있는 경우
라는 계약을 수용하는 것은, 그것이 ‘일본 민법 원칙에 따른’ 것이라 할지라도, 불가능할 것입니다.
또한, 경영에는 항상 ‘일정한 사유가 발생하면 책임을 지게 된다’는 리스크가 있습니다. 자사에게 ‘리스크’가 거의 존재하지 않는 계약이라는 것은, 기본적으로는 존재하지 않습니다. 그 리스크를 수용할 것인지 여부는, 결국 경영 판단입니다. 경영 판단을 하는 것은 경영자이며, 법률 자문 등 컨설팅적인 입장의 사람이 아니지만, 컨설턴트는 경영자가 경영 판단을 내리기 위해 필요한 충분한 정보를 제시해야 합니다.
- 매번 지적할 필요가 없는 리스크
- 수용하는 것이 해당 기업에게 중대한 의사결정이 되는, 경우에 따라서는 회의 등이 필요한 리스크
와 같은 것들을, 농담을 붙여 지적해야 합니다. 이 ‘농담’ 설정을 위해서는, 다른 분야의 컨설팅과 마찬가지로, 계약서 검토를 하는 변호사에게도 ‘경영’의 감각이 일정 수준 필요하다는 것입니다.
요약
이처럼, 계약서 검토 및 수정은 크게 다음과 같은 작업이라고 할 수 있습니다.
- 계약서에 의해 민법 등의 원칙이 어떻게 덮어쓰여지고, 결과적으로 어떤 알고리즘이 되는지 이해하는 것
- 그 알고리즘 하에서 미래에 어떤 사건이 발생할 수 있는지 검토하는 것
- 그 과정에서 예상치 못한 동작이 발생하지 않는지 검토하는 것
그리고 위의 각 항목은
- 법률을 이해하고 있는 사람이 아니면 어려운 작업
- 해당 계약이 규율하는, 예를 들어 앱이나 웹 서비스와 같은 사업의 내용, 비즈니스 스키마 등을 이해하고 있는 사람이 아니면 어려운 작업
- 해당 기업이나 사업의 내용, 경영 감각을 일정 정도 이해하고 있는 사람이 아니면 어려운 작업
이라는 것입니다.
계약서의 검토 및 수정은 이러한 이유로 매우 ‘전문적’인 작업이라는 것입니다.
당사에서 제공하는 계약서 작성 및 검토 등의 안내
모노리스 법률사무소는 IT, 인터넷, 비즈니스 분야에 강점을 가진 법률사무소로서, 다양한 계약서의 작성 및 검토 등의 업무를 고문 기업이나 클라이언트 기업에게 제공하고 있습니다.
관심있는 분은 아래에서 자세한 내용을 확인해 주세요.
Category: IT
Tag: ITSystem Development