Сходства между проверкой контрактов и отладкой: объяснение от адвоката, бывшего IT-инженера
Центральной частью работы так называемого “советника-юриста компании” является проверка и корректировка контрактов, которые компания заключает каждый день с клиентами и партнерами по бизнесу. И эта проверка и корректировка не могут быть полноценно выполнены, если они не выполняются человеком, который хорошо знаком с законодательством и соответствующей областью деятельности. Давайте объясним, почему это так.
Однако, следующее объяснение, вероятно, будет сложно понять тем, кто не является инженером или не имеет опыта в программировании. Юридическая фирма Monolith представлена адвокатом, бывшим IT-инженером с опытом управления компанией. Это статья, в которой “юридическая фирма, возглавляемая бывшим IT-инженером и руководителем компании, объясняет проверку и корректировку контрактов для руководителей с опытом в инженерии и программировании”.
Исходя из этого положения, проверка и корректировка контрактов похожи на так называемую “отладку”.
- Что такое “баг” в принципе
- Какова работа “отладки”
- Как контракт определяет алгоритм
- Какова работа по исправлению контракта
Начнем с того, что для инженеров это “очевидно”, но давайте объясним в следующем порядке.
Что такое «баг» и «дебаг»?
Баг – это не «неисправность ПК»
Когда говорят о «баге», некоторые могут представить себе ситуацию, когда во время работы на ПК из машины идет дым, и на экране появляются странные символы. Однако, ПК, в основном, работает «как ему сказано». Это также относится к случаям, когда происходит баг. То есть «баг» – это:
- ПК работает так, как ему сказано
- Но для пользователя это поведение является «непредвиденным»
Это и есть явление, которое мы называем «баг».
Почему происходят «непредвиденные действия»?
Давайте, например, подумаем о баге «прохождение через стены» в играх типа Марио.
Прыжок Марио – это квадратичная функция. Ускорение, скорость, координаты. Однако, в случае видеоигр, время не может быть разделено на бесконечно малые части, как это можно сделать с квадратичной функцией, например, «Каково значение Y при X=1.76582?». Экран обновляется только 30 раз в секунду (например). Следовательно, Марио, по сути, «телепортируется» 30 раз в секунду.
В этом контексте, если Марио прыгает и отскакивает от стены в воздухе, это происходит, когда:
- В один момент Марио находится в воздухе
- В следующий момент координаты Марио находятся внутри стены
В таких случаях, можно сделать вывод, что «Марио ударился о стену в воздухе во время прыжка». Следовательно, если написать программу на естественном языке:
Если координаты Марио находятся внутри стены, выполнить обработку отскока (Примечание 1)
Тогда можно реализовать обработку «Марио прыгает и отскакивает от стены в воздухе».
Примечание 1, написанное выше, кажется правильным. И действительно, «при определенных условиях» это обработка верна.
Однако, если хорошо подумать, возможны и такие случаи (Примечание 2):
В этом случае, момента, когда «координаты Марио находятся внутри стены», не существует, и, следовательно, обработка отскока не происходит, и Марио проходит сквозь стену.
Это пример «бага». Даже если из-за этого происходит баг «прохождение через стены», это не означает, что ПК сломан. ПК просто выполняет действия, которые ему были указаны, и только человек оценивает это поведение как «непредвиденное» или «баг». И этот «баг» происходит, потому что алгоритм не подходящий.
Рассмотрение возможности «непредвиденного поведения»
Однако, неясно, произойдет ли вышеупомянутое «прохождение через стены» в процессе игры, если мы просто думаем об этом абстрактно. Возможность прохождения через стены зависит от:
- Силы прыжка Марио (начальной скорости), наличия предметов, увеличивающих силу прыжка
- Толщины стены в самом тонком месте
Это зависит от этих условий. В зависимости от того, возможен ли случай, описанный в Примечании 2, программа, описанная в Примечании 1, может не иметь проблем, если случай, описанный в Примечании 2, невозможен.
Что такое работа по «дебагу»?
Следовательно, для выполнения «дебага», то есть для поиска и исправления багов, необходимо:
- Прочитать и понять алгоритм программы (Примечание 1 написано на естественном языке, но на самом деле программа написана на специальном языке, поэтому чтение может быть сложным)
- Рассмотреть, при каких условиях эта программа работает (исследовать силу прыжка и толщину стены)
- Рассмотреть, не произойдет ли непредвиденного поведения при этом
Это и есть процесс, который требуется для выполнения этой работы.
Что такое проверка контрактов?
Проверка контрактов очень похожа на эту процедуру. В конце концов, контракт – это документ, который предусматривает возможные события в будущем для сторон, и определяет, какие права и обязанности возникают у сторон в случае этих событий, и как они должны действовать. В этом смысле, контракт можно назвать “программой, регулирующей реальный мир”. Например,
Если произойдет ситуация ●●, сторона А должна выплатить стороне Б компенсацию в размере 1 миллион иен.
Такой контракт, который устанавливает правила, определяет условия и последствия для возможных будущих событий.
И проверка этой “программы, регулирующей реальный мир”, на наличие проблем и их исправление, если они есть, неизбежно напоминает “отладку”.
В контракте не указана вся картина алгоритма
Однако, в таком понятии, как “контракт”, есть один очень важный момент, который может быть сложным для понимания для тех, кто не специализируется на законодательстве. Этот момент заключается в том, что контракт определяет только “часть” алгоритма, который регулирует отношения между сторонами. Иными словами, просто прочитав контракт, вы не сможете узнать всю картину того, как вы и ваш контрагент регулируются под каким-то алгоритмом.
Например, когда вы покупаете б/у CD в магазине, магазин и покупатель не заключают что-то вроде “договора купли-продажи”, но если на диске есть царапина, которая делает его непригодным для воспроизведения на плеере, вы, вероятно, захотите пожаловаться магазину, и ожидаете, что магазин отреагирует на это. Это не просто вопрос “потому что это услуга”, а теоретически:
- Даже без контракта, договор купли-продажи заключен
- Гражданский кодекс (Японский Гражданский кодекс) предусматривает, что продавец несет ответственность за недостатки в отношении договоров купли-продажи таких вещей, как б/у CD (называемых “определенными вещами”)
- Следовательно, алгоритм, определенный Гражданским кодексом, работает между магазином и покупателем, и магазин несет ответственность за недостатки
Это логика. И “контракт” – это то, что переписывает алгоритм, определенный законами, такими как Гражданский кодекс. Например, если между магазином и покупателем был заключен контракт, в котором говорится, что “магазин не принимает претензии к любым дефектам CD после продажи”, то:
- Договор купли-продажи заключен
- Гражданский кодекс предусматривает, что продавец несет ответственность за недостатки в отношении этого договора
- Однако, согласно условиям контракта, принцип 2 переписывается, и магазин не несет ответственности за недостатки
Вот как это работает.
Договор “перезаписывает” принципы Гражданского кодекса и прочих законов
Это также относится к договорам, заключаемым между компаниями в области разработки систем и прочих. Например, если между сторонами А и Б заключен договор на разработку системы по договору подряда, то:
- Подписание данного договора явно указывает на заключение договора подряда
- В случае договора подряда, по условиям Гражданского кодекса, подрядчик несет ответственность за недостатки
- Если в договоре указано условие о гарантии от недостатков, то это условие “перезаписывает” принцип Гражданского кодекса, указанный в пункте 2. Например, если установлен срок гарантии от недостатков, превышающий срок, указанный в Гражданском кодексе, то действует установленный в договоре срок
Такова структура. То есть, даже если в договоре нет специального условия о гарантии от недостатков, ответственность за недостатки все равно возникает.
Это не ограничивается только подрядом или разработкой систем, но также относится к общим вопросам любых договоров, которые заключает компания, включая передачу акций, финансирование долгом (займы), найм работников, выпуск акций и т.д.
Следовательно, простое чтение договора не позволит вам полностью понять “алгоритм”, регулирующий отношения между вами и другой стороной. Чтобы понять всю картину, вам необходимо понимать “дефолтный алгоритм”, установленный законами, такими как Гражданский кодекс. Договор, в конечном итоге, лишь “перезаписывает” этот “дефолтный алгоритм”.
Если вы не можете представить себе возможные будущие события, вы не сможете “отладить” их
Также, понимание алгоритма само по себе не позволяет проверить, “не произойдет ли неожиданное поведение с этим алгоритмом”. Как и в случае с “багами” в играх, алгоритм – это в конечном итоге абстрактное понятие, и если вы не представляете, какие события могут произойти в будущем, вы не сможете проверить, “не станет ли это неожиданным поведением, если такие события произойдут”.
Это особенно важно в случае новых продуктов, таких как приложения или услуги, или новых бизнес-схем. Если вы развиваете бизнес с такими продуктами или схемами, то что может произойти в будущем? Это трудно представить, если у вас нет знаний в этой области. Кроме того, особенно в случае контрактов между компаниями, обе стороны, включая вашу компанию, действуют на основе определенной экономической рациональности, поэтому для прогнозирования будущих событий и действий другой стороны, которые могут привести к ним, необходимо также применять игровые теоретические подходы к управлению компанией.
Определение “непредвиденного” основывается на управленческом решении
Также, как человек, а не компьютер, определяет, является ли событие “багом”, так и определение того, является ли определенный исход, вызванный контрактом, “непредвиденным”, не является просто вопросом юридического характера, но и управленческим решением.
Например, вполне возможно, что алгоритм “в соответствии с принципами гражданского права” может быть неприемлем для определенного бизнеса определенной компании. Это отличается от предыдущих примеров, но, например, гражданское право устанавливает алгоритм по умолчанию, который гласит, что “передача обязательств на третью сторону является нарушением контракта”. Однако, есть случаи, когда “для определенной компании, в определенном бизнесе, предполагается использование подрядчиков”. В таких случаях, контракт, который не позволяет передачу обязательств, то есть
- ничего не указано о возможности передачи обязательств (в этом случае, как указано выше, применяются принципы гражданского права)
- указано, что передача обязательств невозможна
не может быть принят, даже если он “в соответствии с принципами гражданского права”.
Кроме того, в управлении всегда есть риск “быть привлеченным к ответственности, если произойдет определенное событие”. Контракты, которые “не представляют риска” для компании, в основном не существуют. Принятие этого риска в конечном итоге является управленческим решением. Управленческое решение принимает руководитель, а не консультант, такой как юридический советник, но консультант должен предоставить достаточную информацию, необходимую для принятия управленческого решения,
- риски, которые не требуют постоянного указания
- риски, которые требуют серьезного решения для компании, и в некоторых случаях требуют собрания и т.д.
и должен указывать на них с разной степенью интенсивности. Для этого “интенсивности” адвокат, проверяющий контракт, также должен иметь определенное понимание “управления”, как и в случае консультантов в других областях.
Итог
Таким образом, проверка и корректировка договоров включают в себя следующие основные этапы:
- Понимание, как принципы Гражданского кодекса и других законов переписываются договором, и какой алгоритм в результате получается
- Рассмотрение возможных будущих событий в рамках этого алгоритма
- Проверка на отсутствие непредвиденных последствий
И каждый из этих этапов:
- Требует понимания законодательства, что сложно без соответствующих знаний
- Требует понимания содержания бизнеса, которым регулируется договор, например, приложения или веб-сервиса, а также бизнес-схемы, что сложно без соответствующих знаний
- Требует определенного понимания содержания компании или бизнеса, а также бизнес-чувства, что сложно без соответствующих знаний
Вот почему это так.
Проверка и корректировка договоров являются очень “специализированными” по этим причинам.
Информация о создании и рассмотрении договоров нашим юридическим бюро
В юридическом бюро Monolis, специализирующемся на IT, интернете и бизнесе, мы предлагаем услуги по созданию и рассмотрению различных договоров для наших корпоративных клиентов и клиентов-консультантов.
Если вас это интересует, пожалуйста, ознакомьтесь с подробностями ниже.
Category: IT
Tag: ITSystem Development