«Подводные камни»
Disclaimer
Перед изложением материала я делаю следующее заявление. Все, что будет изложено ниже, является моим личным мнением, основанном на моей личной практике. Я ничего не проповедую и ни к чему не призываю. Мой вариант толкования права, мой вариант понимания предпринимательства являются моими личными оценочными суждениями. Я признаю, что мои суждения могут не являться истиной, если вообще она существует в данной области, и так же могут отличаться от Ваших суждений, причем даже очень существенным образом. Я признаю Ваше право иметь Ваше собственное мнение по рассматриваемой теме, которое может существенным образом отличаться от моего. Единственной целью данного изложения является уведомление Вас о существовании моего собственного мнения и о его раскрытии для того, что бы сравнили свое понимание с моим и на основании такого сравнения приняли решение о вступлении или о не вступлении в какие-либо правоотношения со мной.
Данный материал предназначен только для лиц, обладающих дееспособностью, ну или по простому, имеющих право заключать договора. Данный материал крайне не рекомендуется читать людям с тонкой организацией психики, потому что здесь может быть нецензурные выражения.
Введение
Первичным из существенных условий договора между заказчиком-предпринимателем и исполнителем-программистом является предмет договора. Предметом этого договора может быть только одно из двух:
- Исполнитель продает свое время заказчику → Трудовой договор или Договор оказания услуг, иногда называемый "Time & Material". Здесь стороны договариваются о ставке (окладе) и количестве рабочих часов в день. Но не договариваются о стоимости работ и сроке.
- Исполнитель продает результат заказчкику → Договор подряда. Иногда называется "Fixed Price". Здесь стороны договариваются о стоимости и сроке, но не договариваются о ставке (окладе) и о количестве часов в день.
Попытки создать договор, который является одновременно и "Time & Material" и "Fixed Price" - это тоже самое, что попытка создать вечный двигатель.
Моя позиция: в интеграциях, в создании сайтов и в доработке 1С очень много "подводных камней", поэтому бессмысленно писать ТЗ и договариваться о стоимости на берегу. Соответственно всех предпринимателей-заказчиков условно можно поделить на две группы: предприниматели, которые согласны с моей позицией, и предприниматели, которые не согласы с моей позицией. Еще одним фактором, в пользу моей позиции является то, что "апетит приходит во время еды". Это я имею в виду то, что самые эффективные идеи приходят тогда, когда я начинаю делать что-то реальное в соавторстве с заказчиком.
Я уже слышу ко мне вопрос: "А как же другие программисты-физ-лица, которые работают по договорам подряда?". Как я вижу это на практике? Программист-физ-лицо, что бы выиграть тендер, называет наименьшую цену. Потом получает 50% предоплаты и начинает работать. Если он по часам получает меньше, чем расчитывал, то он говорит "Платите еще, потому что там что-то пошло не так". Если заказчик ему платит еще, то тогда программист дальше делает. Если заказчик говорит "Еще платить не буду, потому что мы договорились о стоимости на берегу". Тогда программист говорит "Я вам сделал больше, чем 50%, поэтому деньги не верну, но и продолжать не буду, потому что не выгодно" (тут есть разные варианты). Заказчик в этой схеме выбрасывает на ветер 50%, потому что придет следующий программист и скажет, что нужно начинать с начала, что предыдущий программист программировать не умеет и тд и тп. То есть, другие программисты-физ-лица входя в договор подряда играют в рулетку, в которой результат непредсказуем. В моей же ситуации потери минимальны. Потому что я отчитываюсь каждый день и если заказчик посчитает, что я не в ту сторону иду, то не будет ждать, как некоторые говорят, целый год, а тут же расторгнет договор. А переделывать после меня другой программист мало-вероятно будет, потому что я максимально все действия согласовываю с заказчиком.
Поскольку мне постоянно приходится выслушивать, что все можно предсказать на берегу, поэтому надо работать по "Fxed Price" (Договор подряда), то я решил коллекционировать "подводные камни", которые делают бессмысленным "Fixed Price". Программирую-то я давно, но "подводные камни" решил коллекционировать только сейчас, поэтому список конечно очень маленький по сравнению с нем, с чем я сталкивался на практике. Но я буду постепенно вспоминать и добавлять сюда и так же текущие "подводные камни" буду сюда добавлять. И если кто-то мне будет говорить, что можно на берегу все увидеть, то я просто буду давать ссылку на эту страницу. Увидеть-то конечно можно, но это наверно относится к участникам известной телепередачи "Битва Экстрасенсов". Но я к сожалению не ясновидящий :-(
Некоторые продвинутые заказчики иногда соглашаются с моей позицией, но находят такую лазейку "А давайте договоримся о примерной оценке". Насчет "примерной оценки" будет отдельная статья. Там тоже есть свои парадоксы ... Но!!! Я же не утверждаю, что я прав. Я не говорю, что я не работаю по договорам подряда. По договорам подряда я работаю, но составлять их не умею. Поэтому, если Вы считаете, что договориться на договор подряда можно, в том числе и на такой договор подряда, в котором присутствует "примерная стоимость", дак вот и составьте его сами. Что? Какие мои пожелания к договору подряда? Понял. Пожелания такие:
- Договор подряда путь будет такой, что бы вы сами, будучи программистам согласились бы по нему работать. То есть, перед там как отправлять мне договор подряда спросите самого себя "Если бы я был физ-лицом-программистом, то стал бы я по нему работать?"
- Прежде чем отправлять мне свое творение покажите его юристу, но не первому попавшемуся, а такому, который специализируется на договорах в IT-сфере;
- В договоре должны быть проработаны реально выполнимые механизмы защиты моих прав, в том числе там должна быть отрегулирована спорная ситуация, когда добросовестный исполнитель говорит "Результат соответствует ТЗ", а добросовестный заказчик говорит "Результат не соответствует ТЗ". Еще там должна быть отрегулирована подсудность и еще как минимум 7 пунктов, которые подскажет юрист из п.2.
Подводный камень Number One
Date: 2021-04-04. Time: 23:39. Целиком задачу не буду описывать, что бы тему заказчика не палить. 1С берет из одного источника несколько YML-файликов (это формат яндекс-маркета). Для каждого файлика в 1С создать свой справочник номенклатуры и каждый файлик добавляет товары в свой справочник. Сделал примерно 9 справочников и все было нормально. Но 10-ый файлик такой сюрприз выдал. Там некоторые коды групп товаров совпадают с кодами товаров. То есть, примерно 9 товаров имеют кода, которые уже заняты группами разделов. Вот он и есть «подводный камень», который на берегу никах не увидеть. Сейчас нужно доработать алгорим создания групп, что бы при создании групп перед кодом добавлялся какой-нибудь префикс. И потом написать обрабоку, которые перекрутит уже созданные справочники, потому что они уже работают и отправлены в Битрикс. Сейчас наверно какой-нибудь 1С-ник станет вопросы задавать: А зачем для каждого файлика делать отдельный справочник? А зачем код товара поставщика записывать именно в код справочника, а не в специальный реквизит или там еще в какой-нибудь дополнительный реквизит или дополнительное свойство. Но я знаю, что делаю, и отвечать я на них не буду, потому что цель тут совсем другая.
Подводный камень Number Two
Тут обобщенный "камень" и по памяти. Часто бывает так, что мне нужно для менеджеров что-то сделать. То есть, руководитель говорит мне сделать что-то и говорит мне, что бы я обучил менеджеров. Я без проблем это делаю и 90% менеджеров меня очень понимают и довольны, но попадаются 10% менеджеров, которые никак не хотят обучаться, не хотят по-новому работать. Был еще такой случай. Я к каждому менеджеру подошел, объяснил, проверил, что они поняли. Переспросил "Вам все понятно". КАЖДЫЙ ответил "Все класно понятно. Большое спасибо". Но на следующий день меня вызывает директор и предъявляет мне претензию в том, что я недобросовестно работаю: менеджеры жалуются что я не понятно объясняю. Я ему говорю "Назовите имена!". Он имена мне не назвал, но едиственное что мне удалось из него выяснять - это был один менеджер. Я стал думать как найти этого "крота". Я пошел в ту комнату, где сидят эти менеджеры и стал тихонько заниматься своими делами. Через некоторое время про меня забыли и что там дальше пошло? Когда я только зашел, они работали. После того как про меня забыли, одна менеджер оказывается продолжила тот разговор, который я прервал своих приходом в их комнату. Эта менеджер недавно родила ребенка и ухаживала за ним. А потом пошла на работу, но ребенок-то дома остался и все ее мысли и все разговоры были про ее ребенка. Другие мендежеры разговаривают с ней про ее ребенка, но работа-то у них не стоит. А эта менеджер не работает, а только думает и разговаривает про своего ребенка, очень переживает как он там без нее себя чуствует. То есть, она, пока не вышла на работу, 24 часа в сутки была с ребенком, а тут вышла на работу, но мысли-то у нее там остались. Через некоторое время зашел директор в эту комнату, и, естественно, она сделала вид, что она усердно работает. Директор вышел и она продолжила вслух рассказывать всем про своего ребенка. Я ей претензий не стал предъявлять, просто зашел к директору и объяснил ему мое видение. Он сказал, что, да, это она на меня жаловалась. Но у меня была повременная оплата. Я ничего не потерял. А вот если бы я работал по договору подряда, то точно был бы конфликт.
Подводный камень Number Three
Бывают ситуации, когда скорость работы 1С не предсказуема. У одного заказчика 1С может летать как ракета, потому что он на своем VDS сам развернул 1С на ОС Windows без виртуализации. А у другой заказчик арендует 1С в облаке у франчайзи и как тут предсказать время?
Подводный камень Number Four
Бывает так, что когда я заключаю договор, то у организации есть сотрудник, через которого я работаю и с которым есть полное взаимопонимание. Потом хозяин организации увольняет первого сотрудника и нанимает второго сотрудника, с которым у меня полное отсутствие какого-либо взаимопонимания. Примерно, как буд-то я разговариваю на английском с американским акцентом, а тот второй сотрудник на китайском с въетнамским акцентом. В договоре услуг или трудовом договоре, можно просто расторгнуть договор и все. А если договор подряда, то этот другой сотрудник просто может не принять работу, хотя она сделана идеально, но этот второй сотрудник так не считает.